如何计算基本位移地址

时间:2013-07-02 00:35:20

标签: assembly memory-address

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

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

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

“10(@ 50”)是什么意思?在我看来,这个指令很模糊。你解决@ 50部分和然后添加位移?或者你将位移添加到@ 50然后解析@ 60?

感谢您提供的任何帮助。

1 个答案:

答案 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这样的东西。
事实上,我不记得曾经遇到过包含这种寻址模式的处理器。这并不是说一个人不存在。