了解 WORD PTR

Understanding WORD PTR

我想了解一些 16 位源代码。

我有。

unsigned short addr, d;

addr = &d;

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

地址变为0x159A

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

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

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

lea的重点是它使用内存操作数编码,所以它肯定需要mod R/M。