在MASM中使用宏中的本地标签的问题

时间:2013-12-12 03:39:32

标签: assembly macros x86 masm

我要编写一个宏,它将E,NE,A,B ...作为参数和单个命令,即mov eax,ebx,如果前一个cmp操作设置的条件为真正。

示例调用看起来像。

cmp bx,20
mDoIf E,<call Dumpregs>

我遇到的问题是,当我尝试使用以下定义进行编译时,我会遇到两个错误之一。根据{{​​1}}定义,我得到LOCAL。当我删除Undefined Symbol Error: ??0000定义时,我收到错误:LOCAL

jump destination must specify a label

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

mDoIf MACRO op, command
    LOCAL L1, L2

    J&op    short L1
    jmp     short L2

L1: 
    call command
L2:
    exitm
endm

.code
start:
    mov     eax, 1
    cmp     eax, 2
    mDoIf l, DumpRegs

    invoke  ExitProcess, 0
end start