物理地址计算组件IAPX8088

时间:2015-08-21 16:17:43

标签: assembly x86-16

鉴于:CS = 0x5645,DS = 0x1000,ES = 0x6783,SS = 0x0FFF,BX = 0x4567,SI = 0x1000,DI = 0x2000,BP = 0x4500
如果ax = 0,则写下由以下指令读取或写入的存储单元的物理地址。

mov ax,[si]        
mov ax,[bp]        
mov ax,cs:[bp+20]
mov ax,[bx+si+10]  
mov ss:[bx+di],ax  
mov es:[bp+si+0x200],20 

这种方式的计算公式是什么以及如何处理段寄存器。

1 个答案:

答案 0 :(得分:4)

要计算物理地址,请执行以下操作:

  • 方括号之间的所有组件必须使用64KB环绕加在一起,因此sum在[0,65535]中。
  • 段寄存器的值必须首先乘以16,然后使用1MB环绕加到结果中,因此sum在[0,1048575]中。注意使用正确的段寄存器!

示例:

mov ax,es:[bx+si+123]

物理地址(((bx + si + 123)和0x0000'FFFF)+ es * 16)和0x000F'FFFF