《汇编语言(王爽 著)》读书笔记
1. 8086CPU形成物理地址的方式
1.1 段的概念及使用
8086CPU共有20根地址总线,理论上其寻址能力或最大寻址空间为220即1MB。然而8086CPU为16位CPU,也就是说它能一次行处理、传输和暂存的为16位。它采用一种在CPU内部用两个16位地址合成的方法来形成一个20位的物理地址,如图2.1所示。
图2.1 8086CPU形成物理地址的方式
8086CPU中的相关部件给出两个16位的地址,一个被称为段地址(Segment Address,简称SA),一个被称为偏移地址(Effective Address,简称EA)。地址加法器采用
物理地址 = 段地址 * 16 + 偏移地址
的方法合成物理地址。其本质就是,CPU用一个基础地址加上一个相对于基础地址的偏移地址,得到一个内存单元的物理地址。不难看出,段地址是16字节对齐的,并且一个段的大小最大可以为216即64KB。
但是这并不意味着内存已经被事先划分为16字节为一个单位的段,段的划分和解释只来自于CPU。比如,我们可以认为物理地址为10000H~100FFH的内存单元组成一个段。该段的起始地址(基础地址)为10000H,段地址为1000H,大小为100H。也可以认为物理地址为10010H~100FFH的内存单元组成一个段。该段的起始地址为10000H,段地址为1001H,大小为EFH。通常我们将物理地址记作
段地址:偏移地址
的形式。这样,对于同一