物理地址
CPU是通过地址访问内存单元存储的数据,所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。
8086CPU的内存寻址空间如下图所示:
我们知道8086CPU有20位地址总线,可以传送20位地址,寻址能力有1M。
但是8086CPU是16位结构的CPU,寄存器一次最多可以处理16位的数据,这意味着8086内部处理的、传输、暂存的地址也是16位,也就是说,实际寻址能力也只有64KB而已。
那么有人可能会问了,8086CPU的寻址能力到底是1M还是64K?
为了解决这个问题,8086CPU给出了这样一个方案:用两个16位地址(段地址、偏移地址)合成一个20位的物理地址,这个过程是通过地址加法器来合成物理地址,即物理地址=段地址×16+偏移地址。
基地址又称段地址,把16位的地址向左移4位就相当于乘以16,然后把基地址和偏移地址相加,最后得到的就是20位的物理地址,8086CPU给出物理地址的方法:
段地址: 1 2 3 0
+ 偏移地址: 0 0 C 8
————————————
物理地址: 1 2 3 C 8
8086给出物理地址的方法具体过程如下:
“段地址×16+偏移地址=物理地址”的本质含义:CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。