了解WORD PTR

时间:2018-07-04 21:02:22

标签: assembly visual-c++ x86 masm x86-16

我有一些16位源代码正在尝试理解。

我有。

unsigned short addr, d;

addr = &d;

8D46FA // LEA AX,WORD PTR [d]
8946FC // MOV WORD PTR [addr],AX

addr变为0x159A

为什么addr = 0x159A而不是0xFA46吗?

这个问题被搁置了,但是给出了答案,我已经接受了。我不是在问寄存器如何工作(似乎人们以为我是,我的问题很简单明了,为什么它会像上面那样编译上面的ASM,而不是我可能期望的那样)。

1 个答案:

答案 0 :(得分:2)

反汇编有点混乱。这些地址实际上是相对于BP的,这对于局部变量是正常的。 lea在16位寻址means BP+sbyte中有一个46的Mod R / M字节和一个lea的mod R / M字节。

os.chdir("C:/Users/Julian/Documents/conversion/conversion/secure") 的全部要点是它使用内存操作数编码,因此肯定需要mod R / M。