以下是英特爾微處理器的寄存器值:如何從該彙編指令中計算物理地址?
CX:FF0A
BX:AB5D
DI:BDEF
DX:1234
DS:CC20
SP:CD0F
指令:
ADD [BX + DI],CX
MOV DX,[SP + 1652H]
我想知道如何計算上述兩條指令的物理地址。
以下是英特爾微處理器的寄存器值:如何從該彙編指令中計算物理地址?
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寄存器在問題中的價值。讓讀者不要錯過它。 –