我有以下彙編代碼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 ?