一.分段管理

        在286以下的CPU中(8086,8088),地址线是20位,可寻址范围220b=1M。而在8088或8086中寄存器只有16位,即216b=64K,那么如果利用16寄存器访问到1M的地址空间呢?INTEL公司提出了内存分段管理机制:

1.段寄存器,首先1M内存空间正好被分为16个段,每个段的大小为64K。由于每个段为64K,那么每个段的起始地址都应该是XXXX0H这种形式。从“XXXX0H”可以看出,这个20位的地址是不能被直接存放到16位寄存器中的,但从这个地址可以看出它的最低位总是0H=0000b,则将这个地址的最低位去掉后,就可以保存到16位寄存器中,并将其称为段寄存器。

2.段内偏移,由于现在每个段都有64 K空间,则必须有一个保存段内某一个具体地址的16位寄存器,则将其称为段内偏移量寄存器。

       利用以上机制后,就可以利用两个16位的寄存器(段寄存器,段内偏移量寄存器)组合在一起访问1M以内的任何内存单元 。哪如何利用这两个16位寄存器访问一个物理单元呢?物理地址:

根据前面第一点“1.段寄存器”所说的,可知段寄存器中所保存的内容是段基址被去掉最低位的0H=0000b而得到的,所以在计算真正物理地址时,必需将最后低位的0H=0000b补上,即将段基址左移四位则可得到,再加上段内偏移量,则物理地址的计算公式为:

                                                     物理址=段基址<<4 + 偏移量

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lizhoujian/archive/2008/08/24/2823395.aspx