我有以下汇编代码EAX在改变
.386
.model flat, c
.stack 100h
printf PROTO arg1:Ptr Byte, printlist:VARARG
scanf PROTO arg2:Ptr Byte, printlist:VARARG
.data
in1fmt byte "%d",0
msg2fmt byte 0Ah,"%s%d",0
msg3 byte "EAX is : ",0
number sdword 10
.code
main proc
mov eax, 90
INVOKE printf, ADDR msg2fmt, ADDR msg3, eax
INVOKE printf, ADDR msg2fmt, ADDR msg3, eax
mov eax, number
INVOKE printf, ADDR msg2fmt, ADDR msg3, eax
INVOKE printf, ADDR msg2fmt, ADDR msg3, eax
sub eax, 1
INVOKE printf, ADDR msg2fmt, ADDR msg3, eax
INVOKE printf, ADDR msg2fmt, ADDR msg3, eax
ret
main endp
end
出于某种原因EAX的输出不断地变化,并不如预期被访问。
输出我希望在这里:
EAX is : 90
EAX is : 90
EAX is : 10
EAX is : 10
EAX is : 9
EAX is : 9
输出我得到:
EAX is : 90
EAX is : 12
EAX is : 10
EAX is : 12
EAX is : 11
EAX is : 12
这是我的理解,如果EAX被分配一个值,它应该是相对安全的,直至有其他人使用EAX ?