有人可以解释一下以下两者之间的区别吗?我发现理解寻址模式背后的概念有点困难
mov ax, [bx + di + 10]
mov ax, [bx + di] + 10
非常感谢!
最佳答案
您将此标记为 MASM32,但这两条指令对于 x86 都是不合法的。除非您正在进行 16 位编程,否则您应该明确这一点。
mov ax, [bx+di+10]
在 x86 中是不合法的,因为它使用 16 位寻址。但是,允许以下内容:
mov ax, [ebx+edi+10]
这意味着获取 ebx 的值,将其添加到 edi 的值,然后将 10 添加到该值。然后将最终值视为指针。取该地址指向的字
(2字节)并将值赋给ax。
mov ax, [bx+di]+10
同样不合法(16 位寻址)。如果你要这样做:
mov ax, [ebx+edi]+10
这也是不允许的,因为 mov
不允许在 [ebx+edi]
之后进行额外输入
关于汇编寻址模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292005/