8086CPU 给出物理地址的方法

时间:2024-05-20 08:47:42

 以下内容来自于《汇编语言》(第三版)

 8086CPU 有 20 位地址总线,可以传送 20 位地址,达到 1MB 寻址能力。但是 8086CPU 是 16 位结构,在内部一次性处理、传输、暂时存储的地址为 16 位。从 8086CPU的内部结构来看,如果将地址从内部简单地发出,那么它只能送出 16 位地地址,表现出的寻址能力只有 64KB。

8086CPU采用一种在内部用两个 16 位地址合成的方法来形成一个 20 位的物理地址。8086CPU 相关部件的逻辑结构如图所示

8086CPU 给出物理地址的方法

 CPU中相关部件提供两个 16 位的地址,一个称为段地址,另一个称为偏移地址。段地址和偏移地址通过内部总线送入一个称为地址加法器的部件。地址加法器将两个 16 位地址合成为一个 20 位的物理地址,然后通过内部总线将 20 位物理地址送入输入输出控制电路。然后输入输出控制电路将 20 位物理地址送上地址总线,这 20 位物理地址就被地址总线传送到了存储器。

 地址加法器采用 物理地址 = 段地址 * 16 + 偏移地址(给常用的说法是 段地址左移 4 位 + 偏移地址)的方法将段地址与偏移地址进行合成。比如 8086CPU 要访问地址 123C8 的内存单元,此时地址加法器的过程如图所示

8086CPU 给出物理地址的方法

 物理地址 = 段地址 * 16 + 偏移地址 的本质含义其实是:CPU 在访问内存时,用一个基础地址和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址,即 物理地址 = 基础地址 + 偏移地址。也就是说 8086CPU 的这种寻址功能是 物理地址 = 基础地址 + 偏移地址 寻址模式的一种具体实现方式。