Assembly 如何根据此汇编指令计算物理地址?

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将是空的。现在你自己计算 它还取决于第一条指令

以下是英特尔微处理器的寄存器值:

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将是空的。现在你自己计算

    它还取决于第一条指令的
    ds
    。第二条指令无效。DS为CC20。现在请告诉我如何计算物理地址?好的,你应该在问题中提到ds寄存器的值。这样读者就不会错过了。这看起来非常熟悉。。。昨晚不是有人问过这个家庭作业问题吗?@DavidHoelzer这只是他们的三分之一。。。(我不知道有多少学生在上那门课)@16b模式x86中的SaminaJabeen无法在任何指令中编码
    [sp+imm16]
    内存寻址,因此从技术上讲它是无效的。在32b模式下,
    [esp+imm32]
    可以工作,所以问题的作者可能对此感到困惑。在16b模式中,通常使用
    [bp+imm16]
    (将
    sp
    复制到
    bp
    的特定代码部分开头),这是一个有点棘手的问题,因为它不会使用
    ds
    作为段寄存器,而是使用另一个(就像32b模式中的
    esp
    一样)。