[英]For loop in assembly goes on forever
下面的代碼for循環不會停止循環字符串。 它永遠持續下去。 但是只能輸入用戶多長時間。
segment .data
integer1: times 4 db 0
heeder: db "%d", 0
strin: db "Enter the number: ", 0
segment .bss
SECTION .text
global _main
extern _scanf
extern _printf
_main:
push integer1 ; address of integer1 (second parameter)
push heeder ; arguments are right to left (first parameter)
call _scanf
add esp, 8
mov eax, 0
mov eax, [integer1]
mov ecx, eax
loop:
cmp eax, ecx
jbe for
jmp end
for:
push strin
call _printf
add esp, 4
inc eax
jmp loop
end:
您能得到代碼的問題嗎?
調用printf()
之后, eax
中的值是printf
函數的返回值-調用未保留eax
。
請注意,即使在解決了該問題之后,至少還有一個其他錯誤eax
和ecx
以相同的值啟動循環-似乎您希望將eax1設置為0,但是這樣做太早了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.