一.分段管理

        在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