汇编语法错误:在指令中

时间:2015-01-19 01:44:54

标签: assembly x86

这就是我的代码的样子。你觉得它有什么问题吗?

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 

1 个答案:

答案 0 :(得分:0)

mov ebx nr2

显然这行需要逗号。实际上逗号可以合法地包含在这个宏的调用序列中!这就是汇编程序在另一行显示错误的原因。

但是:
执行 et1 块时,是否不应跳过 et2 块?
如果他们之后没有弹出EAX和EBX的感觉是什么? (虽然堆栈是平衡的)