我试图做一个for循环的程序集,其中EAX
寄存器设置为5,并且增加到大于10为止。每次增加时,它都输出它的当前值。当我执行我的程序时,它会进入无限循环,只输出4.为什么EAX
的值是4?为什么寄存器EAX
没有增加,因为它应该?使用eax不工作的fasm环路
include 'include/macro/import32.inc'
format PE console
entry start
section '.text' code readable executable
start:
mov eax,5
loop1:
inc eax
push eax
push msg2
call [printf]
cmp eax,10
jb loop1
call [getchar]
push 0
call [exit]
section '.data' data readable writable
msg2 db "%i",0dh,0ah,0
section 'idata' import data readable
library msvcrt,"msvcrt.dll"
import msvcrt,printf,"printf",getchar,"getchar",exit,"exit"
你也没有清理打印参数,所以它们堆积在栈上,你的弹出不会弹出正确的东西。 –
@ RaymondChen:我完全隔开那一个。感谢您的提醒。 – DocMax
我已经使用了一个辅助寄存器来保存您建议的值,并且它像一个魅力一样工作。你的例子也很棒。 – Johnathan