我从一些伪代码开始学习非常基本的汇编语言。
如果指令“10(50)”转换为:转到内存位置 [50 + 10]——即,这是基本位移地址,
如果指令“@50”转换为:转到内存位置[[50]],即找到[50]指向的内容(称为x),然后找到[x]
“10(@50”)是什么意思?在我看来,这个指令是模棱两可的。你解决@50部分然后添加位移吗?还是将位移添加到@50,然后解析@60?
谢谢你的尽心帮助。
我从一些伪代码开始学习非常基本的汇编语言。
如果指令“10(50)”转换为:转到内存位置 [50 + 10]——即,这是基本位移地址,
如果指令“@50”转换为:转到内存位置[[50]],即找到[50]指向的内容(称为x),然后找到[x]
“10(@50”)是什么意思?在我看来,这个指令是模棱两可的。你解决@50部分然后添加位移吗?还是将位移添加到@50,然后解析@60?
谢谢你的尽心帮助。
如果我没记错的话,它必须[[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
.
事实上,我不记得曾经遇到过包含这种寻址模式的处理器。这并不是说不存在。