主题:物理地址=16*段地址+偏移地址????
liushifeng
[专家分:20] 发布于 2005-09-13 12:19:00
物理地址=16*段地址+偏移地址????
请问假如:
ds =2000
si =2000
结果怎么会是20000+2000=22000h
这是怎么回事与16的关系是怎么样啊!!!
高手指教!!
回复列表 (共13个回复)
11 楼
thereky [专家分:110] 发布于 2006-03-31 15:46:00
物理地址:存储器的绝对地址,从00000到FFFFFH,是CPU访问存储器的实际寻址地址,它由逻辑地址变换而来.
因为段基地址指的是起始地址,它必须是每小段的首地址,其低4位一定是0,所以在实际工作时,是从段寄存器中取出段基址,将其左移4位,再与16位偏移地址相加,就得到了物理地址,此地址在CPU的总线决口部件BIU饿地址加法器中形成
12 楼
fucker [专家分:680] 发布于 2006-03-31 23:06:00
标题只适用于 real mode 下的 物理地址转换。 ptr mode 下,在没有设置
cr0 开启 分页 模式时物理地址转换是根据 selector ,DESC TABLE 从
GDT/LDT 中获得 线形地址 此时的 线形地址 = 物理地址。 如果在 ptr mode
下设置了 cr0 的 PG 位,开启了 分页 模式,还需要利用 PDE/PTE 页目录,页
表将 线形地址 转换成 物理地址。 当然以上所说的都是 x86 IA32 的 CPU。
13 楼
守望丁香 [专家分:0] 发布于 2006-04-01 14:41:00
还是没弄懂,偏移地址是怎么确定的?
现在的32位、64位pc是不是不用偏移地址了?
我来回复