在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的物理寻址了。