CPU访问内存单元时要给出内存单元的地址,所有的内存单元构成的存储空间是一个一维的线性空间,我们将这个唯一的地址成为物理地址。
概括的讲,16位的CPU具有以下几个方面特征:
1、运算器一次最多可以处理16位的数据。
2、寄存器的最大宽度为16位。
3、寄存器和运算器之间的通路为16位。
8086有20位的地址总线,可传送20位地址,寻址能力为1M,但是8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K。
所以,8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址~
8086CPU读写内存时,发生了这么一些事:
1、CPU中的相关部件提供两个十六位的地址,一个称为段地址,另一个成为偏移地址。
2、段地址和偏移地址通过内部总线送入一个称为地址加法器的部件。
3、地址加法器将两个十六位地址合并成一个二十位的地址。
4、二十位的地址通过输入输出控制电路被送入到地址总线。
地址加法器合成物理地址的方法:
物理地址 = 段地址 * 16 + 偏移地址
段地址 * 16 有一个更为常用的说法就是 数据左移四位。(二进制位)
一个数据的二进制形式左移1位,相当于该数据乘以2。
一个数据的二进制形式左移N位,相当于该数据乘以2的N次方。
一个数据的十六进制形式左移1位,相当于乘以16。
一个数据的十进制形式左移1位,相当于乘以10。
一个数据的X进制形式左移1位,相当于乘以X。