物理地址计算组件 IAPX8088

Physical address calculation assembly IAPX8088

鉴于: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 

这样计算地址的公式是什么,这里面如何处理段寄存器

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

  • 方括号之间的所有分量必须使用 64KB 环绕相加,因此总和在 [0,65535] 中。
  • 段寄存器的值必须先乘以 16,然后使用 1MB 环绕与结果相加,因此总和在 [0,1048575] 中。注意使用正确的段寄存器!

示例:

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

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