0

我从一些伪代码开始学习非常基本的汇编语言。

如果指令“10(50)”转换为:转到内存位置 [50 + 10]——即,这是基本位移地址,

如果指令“@50”转换为:转到内存位置[[50]],即找到[50]指向的内容(称为x),然后找到[x]

“10(@50”)是什么意思?在我看来,这个指令是模棱两可的。你解决@50部分然后添加位移吗?还是将位移添加到@50,然后解析@60?

谢谢你的尽心帮助。

4

1 回答 1

1

如果我没记错的话,它必须[[50 + 10]]在 IA-32 上。如:

JMP DWORD PTR 10[50]  ; Jump to the 32-bit address located at address 60

想到的后索引内存间接寻址的一个示例是 6502,您可以将其写为(imm8),Y. 例如:

LDY #10
LDA (50),Y  ; Loads the 16-bit word at 50, adds the value of Y to it, and
            ; uses the result as the effective address for an 8-bit load
            ; into register A

请注意,索引必须在寄存器中Y;所以你不能写像LDA (50),10.
事实上,我不记得曾经遇到过包含这种寻址模式的处理器。这并不是说不存在。

于 2013-07-02T06:45:04.330 回答