1.物理地址
每一个内存单元的地址就称为物理地址。
2.16位结构的CPU
具有以下3个特征:
8086是16位结构的CPU,也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理、传输、暂时存储16位的地址。
3.8086的地址产生方法
8086的地址总线是20位,寻址能力为1MB,但在内部,8086一次性只能处理16位的数据,即只能送出16位的地址,表现出的寻址能力只有64KB,为了解决这个问题,8086采用了段地址+偏移地址的方式,来生成20位的物理地址。步骤如下:
地址加法器采用 段地址*16+偏移地址 的方法用段地址和偏移地址合成物理地址。
例如,8086CPU要访问123C8H的内存单元,此时,段地址为1230,偏移地址为00C8,加法器给段地址1230*16=12300,并与偏移地址00C8相加,就得到了20位的物理地址123C8。即1230*16+00C8=123C8.
4.本质含义
段地址*16+偏移地址=物理地址的本质含义是:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
更一般的说:8086的这种寻址功能是“基础地址+偏移地址=物理地址”。
对16进制数而言,乘以16就相当于左移一位。
5.段的概念
段的划分来自CPU,实际中内存并没有分段。
在编程时可以根据需要,将若干地址连续的内存单元看做一个段,用段地址*16定位段的起始地址,用偏移地址定位段中的内存单元。
段地址*16必然是16的倍数,所以一个段的起始地址必然是16的倍数,偏移地址为16位,即一个段的最大长度为64KB.
所以给定一个物理地址,可以有不同的分段方法,也就有不同的基础地址和偏移地址。
例如物理地址21F60H,21F60H = 2000H * 16 + 1F60H = 2100H *16 + 0F60H = 21F0H * 16 + 0060H
联系客服