【发布时间】:2011-11-25 12:36:29
【问题描述】:
我正在通过输入分配一个变量,然后尝试将该变量值移动到 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。
为什么?
【问题讨论】:
-
如何检查 eax 的值?我没有看到任何输出代码......
-
也许他检查了调试器
-
或者,也许他输入了 23 .__.
-
生成的程序集是什么样的(在您的二进制文件中)?