簡體   English   中英

組裝印刷一個簡單的櫃台

[英]Assembly printing a simple counter

我在程序集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

push operator_count推送地址,而不是值。 嘗試改push dword [operator_count] –小丑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM