回 帖 发 新 帖 刷新版面

主题:小弟有一事不明 还望指教

寄存器间接寻址

引用:
"能够用来间接寻址的寄存器只能是寄存器 SI,DI,BP,BX中的一个.若掾中指定的寄存器是BX,DI或SI,则操作数在当前数据段中,所以操作数的物理地址PA的形成是由数据段寄存器的内容左移4位,加上BX,DI或SI中的偏移地址EA.若指令中指定的寄存器是BP,则操作数在当前堆栈段中,所以操作数的物理地址PA的形成是堆栈段寄 存器SS的内容左移4位,加上BP中的偏移地址EA形成操作数的物理地址PA"
 
为什么都要左移4位?

回复列表 (共1个回复)

沙发

物理地址由逻辑地址中的段值加偏移得到,段值是16位的,而实模式的地址空间是20位的,因此段值需要乘以16再加偏移量才能形成物理地址,左移4位就是乘以16。这也是实模式16字节段边界的由来。

我来回复

您尚未登录,请登录后再回复。点此登录或注册