概念
在80x86 CPU中設定的段暫存器只有16位,只能存放20位段起始地址的高16位,稱它為 段基值(Segment Base Value),而機器將段起始地址的低4位設定為0。故將段基值左移4位後(即末尾加4位二進制0),就得到一個20位的段起始地址,稱它為段基地址或 段基址(Segment Base Address)。顯然,段基址為xxxx0H,其低4位二進制數為0,即能被16整除的主存物理地址才可作為段基址。
原理
我們知道8086CPU對外20位地址線,因此,存儲器的可定址範圍為1MB,但是8086微處理器的內部結構是16位的,用戶可用的暫存器也都是16位(64KB)的,顯然用16位的地址碼無法定址1MB的存儲空間,如何才能做到呢,8086採用了分段定址的方式對存儲器進行管理,原理如下:
把1MB的存儲空間分成若干段,每段的容量最大是64KB,為什麼呢?因為暫存器是16位的,從暫存器送出去的物理地址的定址空間最大達到2的16次方,也即64KB,這樣段內地址就可以用16位來表示了。實際上,可以根據編程的需要來確定段的大小,只要段的大小不大於64KB。段的地址可以用4位來表示,這樣結合16位的段內偏移地址就可以實現存儲空間1MB的物理定址了。