关于8086/8088存储器结构

在学习8086/8088存储器结构时,产生了个疑问:既然高四位表示的是段基址、低四位表示的是偏移地址,那么一个20位物理地址只能表示一个逻辑段中的16个地址,我们知道一个逻辑段中有64K字节,这显然是不可能的。

首先说说为什么把20位的物理地址分成段基址+偏移地址?
8086/8088系统中存储器按字节编址(一个字节分配一个地址编号),可寻址的存储器空间为1MB即2^20,因此每个字节对应的地址应是20位的二进制数,这个二十位二进制数就是物理地址。
那么,二十位的物理地址在cpu内部就应有20位的地址寄存器,而机内的寄存器是16位的(16位机),16位寄存器只能寻址64KB。为了使CPU能够访问存储器的每一个地址,将存储器分为16个或更多个逻辑段,每个逻辑段最大容量为64KB。cpu在访问存储器空间时先找到其对应的逻辑段,然后在找到具体的地址,这就有了段基址+偏移地址。

在8086/8088存储空间中,把16字节的存储空间称为一节。逻辑段从节的整数边界开始,也就是说段首地址低四位应该是0,而低四位的寻址范围也就是这一节中的那16个字节。所以段基址是逻辑段中某一节的首地址而不是逻辑段的首地址。实际上通过高16位就找到了要访问的逻辑段的某一节,然后根据偏移量找到具体地址。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值