【问题标题】:How MOV BYTE PTR instruction works?MOV BYTE PTR 指令如何工作?
【发布时间】:2013-10-11 20:41:40
【问题描述】:

我想知道 MOV BYTE PTR 指令是如何工作的,我这里有一个例子,我无法理解结果。检查它:

MOV CL,BYTE PTR DS:[ESI]

----Ollydbg show this------
DS:[01EA22E0]=41 ('A')
CL=B0

为什么 CL = B0?为什么CL不是41?如果我在转储中去 ESI,我有这个

01EA22E0: 41 47 00 C5 B9 F1 63 3C... But any B0 ;(

检查我的打印:

我真的需要解决这个问题,欢迎任何帮助。

【问题讨论】:

  • 可能是因为您使用 DS 寄存器来指定段。尝试删除它并执行MOV CL,BYTE PTR [ESI]
  • @Elalfer:我认为如果你不指定 DS:,你会默认得到它,所以我认为这不会有帮助。
  • 我不熟悉 Ollydbg。你真的 step 超越了指令,所以它被执行了吗?您显示的内容与要执行的指令关于一致。

标签: assembly x86 mov


【解决方案1】:

这是因为调试器在该指令处停止,它实际上还没有执行。您必须再单步执行一次才能看到 CL 寄存器随着内存内容的更新而更新。

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    相关资源
    最近更新 更多