簡體   English   中英

For循環永遠進行下去

[英]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

請注意,即使在解決了該問題之后,至少還有一個其他錯誤eaxecx以相同的值啟動循環-似乎您希望將eax1設置為0,但是這樣做太早了。

暫無
暫無

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

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