我正在学习非常基本的汇编语言,从一些伪代码开始。
如果指令“10(50)”转换为:转到存储单元[50 + 10] - 即,这是基本位移地址,
如果指令“@ 50”转换为:转到内存位置[[50]],即找到[50]指向的内容(调用该x),然后找到[x]
“10(@ 50”)是什么意思?在我看来,这个指令很模糊。你解决@ 50部分和然后添加位移?或者你将位移添加到@ 50然后解析@ 60?
感谢您提供的任何帮助。
答案 0 :(得分:1)
如果记忆对我有用,那么它必须是IA-32上的[[50 + 10]]
。如:
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
这样的东西。
事实上,我不记得曾经遇到过包含这种寻址模式的处理器。这并不是说一个人不存在。