Ale*_*son 6 macros x86 assembly masm
我要编写一个宏,它接受E,NE,A,B... 作为参数和单个命令,即mov eax,ebx如果前面的操作设置的条件cmp为真,则该命令将执行。
调用示例如下所示。
cmp bx,20
mDoIf E,<call Dumpregs>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我尝试使用以下定义进行编译时,出现两个错误之一。根据LOCAL定义,我得到一个Undefined Symbol Error: ??0000. 当我删除LOCAL定义时,出现错误:jump destination must specify a label。
mDoIf MACRO op, command
LOCAL true
J&op true
exitm
true:
command
exitm
endm
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。谢谢。
尝试这个:
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
Run Code Online (Sandbox Code Playgroud)