Assembly 如何根据此汇编指令计算物理地址?
以下是英特尔微处理器的寄存器值: CX:FF0A BX:AB5D DI:BDEF DX:1234 DS:CC20 SP:CD0F 说明:Assembly 如何根据此汇编指令计算物理地址?,assembly,hex,cpu-architecture,microprocessors,hardware-programming,Assembly,Hex,Cpu Architecture,Microprocessors,Hardware Programming,以下是英特尔微处理器的寄存器值: CX:FF0A BX:AB5D DI:BDEF DX:1234 DS:CC20 SP:CD0F 说明: 添加[BX+DI],CX MOV DX,[SP+1652H] 我想知道如何计算上述两条指令的物理地址 为1。添加[BX+DI],CX 您需要首先计算有效地址 有效寻址=基+索引+偏移量 然后,物理寻址将是: 物理寻址=分段*0x10+有效寻址 在您的例子中,Base将是bx的值,index将是di的值,offset将是空的。现在你自己计算 它还取决于第一条指令
在您的例子中,Base将是bx的值,index将是di的值,offset将是空的。现在你自己计算 它还取决于第一条指令的
ds
。第二条指令无效。DS为CC20。现在请告诉我如何计算物理地址?好的,你应该在问题中提到ds寄存器的值。这样读者就不会错过了。这看起来非常熟悉。。。昨晚不是有人问过这个家庭作业问题吗?@DavidHoelzer这只是他们的三分之一。。。(我不知道有多少学生在上那门课)@16b模式x86中的SaminaJabeen无法在任何指令中编码[sp+imm16]
内存寻址,因此从技术上讲它是无效的。在32b模式下,[esp+imm32]
可以工作,所以问题的作者可能对此感到困惑。在16b模式中,通常使用[bp+imm16]
(将sp
复制到bp
的特定代码部分开头),这是一个有点棘手的问题,因为它不会使用ds
作为段寄存器,而是使用另一个(就像32b模式中的esp
一样)。