物理地址计算组件 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
鉴于: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