我要编写一个宏,它采用 E,NE,A,B
... 作为参数和单个命令,即 mov eax,ebx
,这将如果前面的 cmp
操作设置的条件为真,则执行。
调用示例如下所示。
cmp bx,20
mDoIf E,<call Dumpregs>
我遇到的问题是,当我尝试使用以下定义进行编译时,出现两个错误之一。使用 LOCAL
定义,我得到一个 undefined symbol 错误:??0000
。当我删除 LOCAL
定义时,出现错误:跳转目标必须指定标签
。
mDoIf MACRO op, command
LOCAL true
J&op true
exitm
true:
command
exitm
endm
如有任何帮助,我们将不胜感激。谢谢。
最佳答案
试试这个:
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
关于assembly - 在 MASM 的宏中使用本地标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20534589/