如何从该汇编指令中计算物理地址?
以下是英特尔微处理器的寄存器值:如何从该汇编指令中计算物理地址?
CX:FF0A
BX:AB5D
DI:BDEF
DX:1234
DS:CC20
SP:CD0F
指令:
ADD [BX + DI],CX
MOV DX,[SP + 1652H]
我想知道如何计算上述两条指令的物理地址。
对于1. ADD [BX + DI],CX 您将需要首先计算有效地址。
有效解决=基地+指数+偏移
然后,物理寻址将是: 物理地址=分割*为0x10 +有效解决
在你的情况,基地将是BX的价值,索引将是di的值,并且偏移将是空的。现在自行计算。
它是。谢谢。并且第二条指令是错误的? –
@SaminaJabeen在16b模式下,x86无法在任何指令中对[[sp + imm16]]内存寻址进行编码,所以在技术上它是无效的。在32b模式下'[esp + imm32]'可以工作,所以问题的作者可能会因此而困惑。在16b模式下,通常会使用'[bp + imm16]'(在特定部分代码的开始处将'sp'复制到'bp'中),这是一个小问题,因为它不会使用'ds'作为段寄存器,但另一个(就像32位模式下的esp一样)。 – Ped7g
它也取决于'ds'的第一条指令。第二条指令无效。 – harold
DS是CC20。现在请告诉我如何计算物理地址? –
你应该提及ds寄存器在问题中的价值。让读者不要错过它。 –