我在8086程序集中的新功能,并试图在汇编中实现计算器。
我需要计算从用户收到的操作次数,并在最后打印。 但每当我试图打印我的变量值时,它会打印:134520956而不是1。 (我用gdb检查过,我写道:mov eax [operator_count]和 根据需要,eax的值为1)
这是代码:
section .rodata
INT_FORMAT:
DB "%d", 10, 0
section .bss
operator_count:
resb 10
main:
mov [operator_count], dword 0
; rest not relevant.......
inc dword [operator_count]
push operator_count ;push string to stuck
push INT_FORMAT
call printf
add esp, 4 ;remove pushed argument
;exit normaly
感谢您的帮助...
编辑: 它现在有效:)
inc dword [operator_count]
push dword [operator_count] ;push string to stuck
push INT_FORMAT
call printf
add esp, 8 ;remove pushed argument
答案 0 :(得分:1)
push operator_count
推送地址,而不是值。请尝试使用push dword [operator_count]
。 - 杰斯特