关于8086/8088存储器结构

来源:互联网 发布:c 编程 文件被截断 编辑:程序博客网 时间:2024/05/19 18:42
在学习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位就找到了要访问的逻辑段的某一节,然后根据偏移量找到具体地址。
0 0
原创粉丝点击