2013-10-11 191 views
1

我想知道MOV BYTE PTR指令的工作原理,我在这里有一个例子,我无法理解结果。检查它: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 ;(

检查我的打印:

mov byte ptr

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

+0

可能因为您使用DS寄存器来指定段。尝试删除它,只是做'MOV CL,BYTE PTR [ESI]' – Elalfer

+2

@Elalfer:我想如果你没有指定DS:,你会默认它,所以我认为这不会有帮助。 –

+3

我不熟悉Ollydbg。你实际上*步*超过了指令,所以它被执行了吗?你显示的内容与要执行的指令*关于*是一致的。 –

回答

7

这是因为调试器在该指令处停止,它并未实际执行。您必须再单步一次,查看CL寄存器更新的内存内容。