我通过输入分配变量,然后尝试将变量值移动到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
msg1fmt byte 0Ah,"%s",0
msg1 byte "Enter an integer: ",0
number sdword ?
.code
main proc
INVOKE printf, ADDR msg1fmt, ADDR msg1
INVOKE scanf, ADDR in1fmt, ADDR number
mov eax, number
ret
main endp
end
如果我输入30,EAX由于某种原因包含17。
为什么?
答案 0 :(得分:0)
尝试使用dd或DWORD而不是签名的DWORD。见这个例子: