2.4 物理地址
所有的内存单元构成的存储空间使一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们称这个唯一的地址为物理地址。
2.5 16位结构的CPU
8086CPU的上一代CPU(8080、8085)等是8位机,而8086位16位机,即16位结构的CPU。
其具有以下特点:
- 运算器一次最多可以处理16位的数据
- 寄存器的最大宽度为16位
- 寄存器和运算器之间的通路为16位
8086内部,能够一次性处理、传输、存储的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂存16位的地址。
2.6 8086CPU给出物理地址的方法
8086CPU有20位地址总线,可以传送20位地址,达到$2^{20} = 1 MB$的寻址能力。但是矛盾的是,8086只能够一次性处理、传输、存储的信息的最大长度是16位,即只能送出16位的地址,表现出的寻址能力只有64KB。
8086采用一种内部用两个16位地址合成的方法来形成一个20位的物理地址。
8086CPU相关部件的逻辑:
- CPU中的相关部件提供两个16位地址,一个成为段地址,另一个成为偏移地址
- 短地址和偏移地址通过内部总线送入一个成为地址加法器的部件
- 地址加法器将两个16位地址合成为一个20位的物理地址
- 地址加法器通过内部总线将20位物理地址送入输入输出控制电路
- 输入输出控制电路将20位物理地址送上地址总线
- 20位物理地址被地址总线传送到存储器
物理地址 = 段地址 * 16 + 偏移地址
比如段地址为16位1230H, 偏移地址为16位00C8H。 根据上面的公式,相当于将段地址想左平移一个单位(等同于二进制想左平移4个单位).
关于移位次数和各种形式的数据关系转换:
- 一个数据的二进制形式左移1位相当于该数据乘以2
- 一个数据二进制形式左移N位,相当于该数据乘以$2^N$位
- 地址加法器如何完成段地址x16运算?就是将以二进制形式存放的段地址左移4位