(1)在8086CPU中,它是16bit结构,一次可以传送一个字的数据,但其地址总线有20根,一次可以传送2的20次方的数据
也就是说它的寻址能力为1MB,很明显,如果将地址从CPU内部简单的发出来,一次就只能传送16bit的地址,寻址能力
只有64KB了。
至于为什么这么设计,真心还不知道,但8086CPU采用了用两个地址相加的方法来解决 了这种消耗。
8086CPU提供一个16bit的段地址和一个16bit的偏移地址,利用一个地址加法器将两个地址合成一个20bit的地址
合成公式:
物理地址 = 段地址*16 + 偏移地址
如:2345C的物理地址,若其段地址为2345,其偏移地址就为C(这是根据16进制的加法算的,可以用熟悉的10进制加法
来理解16进制,10进制里乘以一个10就在其后加一个0,16进制里也是一样的,遇到16就往前进1,乘以16就在其后加0)
其中段地址和偏移地址是任意给出的,只要满足公式即可
(2)再想这么一件事,计算机中每一个字节放一个数,这些数有些是指令,有些又是数据,计算机在内存中获取这些数的时候,
是怎么区分这些数哪些是指令哪些是数据呢?8086CPU里,把这些东西分开放到了不同的地方,也就是指令与数据神马的
都会分开,这样就不会让计算机混淆了,不过,分开了又怎么去提取这些数据的地址单元呢?这个时候,8086CPU就提供
了四个段寄存器,用于存放各段内存的段地址,并提供了相应的方法来表示偏移地址,每个段寄存器存放不同的数据的地址,
这样就可以在计算机要提取指令的时候去一段内存里找,要提取数据内容的时候就跳到另一段内存里找,这里先看其中三种
段寄存器。

本文介绍了8086CPU的16位结构和20位地址总线的寻址能力,通过段地址和偏移地址合成物理地址的方式解决了寻址问题。详细讲解了8086CPU中的四个段寄存器——CS、DS、SS的作用,以及它们如何与IP、SP寄存器配合,指示指令、数据和栈的位置。

8271





