装配印刷简单的计数器

时间:2015-05-14 14:05:50

标签: linux assembly printf

我在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

1 个答案:

答案 0 :(得分:1)

push operator_count推送地址,而不是值。请尝试使用push dword [operator_count]。 - 杰斯特