这就是我的代码的样子。你觉得它有什么问题吗?
compare macro nr1,nr2 ; title of macro
local et1,et2 ; etiquetes
mov eax,nr1
mov ebx nr2
push eax
push ebx
; here I compare the 2 number nr1, nr2 to see whether is bigger
cmp eax,ebx ; comparing the 2 numbers
ja et1
jb et2
et1:
sub eax,ebx ; if the first one is bigger, we substract from it
; here we subtract from the bigger one
push eax
push offset format3
call printf
add esp,8
et2:
sub ebx,eax ; if the second one is bigger we substract like this
push ebx
push offset format3
call printf
add esp,8
add esp, 8
endm
答案 0 :(得分:0)
mov ebx nr2
显然这行需要逗号。实际上逗号可以合法地包含在这个宏的调用序列中!这就是汇编程序在另一行显示错误的原因。
但是:
执行 et1 块时,是否不应跳过 et2 块?
如果他们之后没有弹出EAX和EBX的感觉是什么? (虽然堆栈是平衡的)