【问题标题】:Trouble moving data into EAX将数据移入 EAX 时遇到问题
【发布时间】: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 .__.
  • 生成的程序集是什么样的(在您的二进制文件中)?

标签: assembly x86 masm


【解决方案1】:

尝试使用 dd 或 DWORD 而不是带符号的 DWORD。看这个例子:

http://www.masm32.com/board/index.php?PHPSESSID=6a490c9d234761060af337f831a7efbe&topic=3270;prev_next=next

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多