1.物理地址概念:
所有内存单元构造的存储空间是一个一维性空间.每个内存单元在这个空间都有一个唯一的地址,这个唯一的地址称为物理地址.
CPU通过地址总线送入存储器的必须是一个内存单元的物理地址.
不同的CPU有不同形式的物理地址形成方式.
物理地址计算公式: 物理地址 = 段地址 x 16 + 偏移地址
2.CPU的结构:
8080和8085CPU都是一个8位结构的CPU
1. 运算器一次最多可处理8位数据
2. 寄存器的最大宽度为8位
3. 寄存器与运算器的最大通路为8位
8086CPU是一个16位结构的CPU
1. 运算器一次最多可处理16位数据
2. 寄存器的最大宽度为16位
3. 寄存器与运算器的最大通路为16位
8086CPU:
地址总线: 20
寻址能力: 2^20 = 1M 2^16 = 64K
地址合成: 2个16位地址(段地址与偏移地址),通过地址加法器合成一个20位物理地址
8080CPU地址合成流程如下:
物理地址计算示例:(注:下面地址值为十六制)
段地址: 1230 偏移地址: 00C8
物理地址 = (段地址)0x1230 * 16 + (偏移地址)0x00C8 = 0x12300 + 0x00C8 = 0x123C8
物理地址是由地址加法器进行计算的.
2.段地址概念:
内存没有分段,分段来自于CPU,由于CPU使用段地址*16+偏移地址的方式来给出物理地址,所以得用内存段的方式来管理内存,N(N>1)个地址连接的内存单元视为一个地址段,
段地址 x 16 = 段的起始地址,用于定位段开始位置,偏移地址用于定位段中的内存单元.
段起始地址只能是16的倍数,段偏移地址为16位,因16位地址的寻址能力为64K,所以一个段最大长是64K
CPU可使用不同的段地址+偏移地址来产生一个物理地址,只要段地址(SA) x 16 + 偏移地址(EA) = 物理址址 这个条件.如下图示例:
最大偏移寻址计算公式: 段地址 * 16 + 最大寻址值
如: 16位地址最大寻址值为 2^16 -1 = 0xFFFF
假如当前段地址为 : 1000H ,那么段起始位置为: 0x1000 * 0x10 = 10000H (0x10000)
如果按偏移地址来寻址,最大寻址范围为 0x1000 * 0x10 + 0xFFFF = 0x1FFFF
数据在内存段的单元中的描述方式:
如: 数据 21F60H (0x21F60) 这个数据 ,有下面2种描述
1. 数据21F60H在内存2000:1F60单元中 (0x2000 * 0x10 + 0x1F60)
2. 数据21F60H在内存2000段中的1F60单元 (0x2000 * 0x10 + 0x1F60)