8086汇编 CPU 寄存结构

8086汇编 CPU 结构

8086 CPU 组成

一、结构说明

8086CPU主要由三块部分组成、通过内部总线实现CPU内各个器件之间的联系:

  1. 运算器进行信息处理:处理指令运算使用。
  2. 寄存器进行信息存储:存储地址数据使用。
  3. 控制器协调各种器件进行工作:发送读写执行使用。

二、寄存器

寄存器是CPU内部的信息存储单元 CPU通过寄存器存放、内存地址、数据、指令,通过总线访问主板上任意连接的设备。

8086CPU有14个寄存器:

  1. 通用寄存器:AX、BX、CX、DX
  2. 变址寄存器:SI、DI
  3. 指针寄存器:SP、BP
  4. 指令指针寄存器: IP
  5. 段寄存器:CS、SS、DS、ES
  6. 标志寄存器:PSW

通用寄存器说明:

  • AX:计算乘法除法专用
  • BX:可作为指针寄存器专用、默认指向DS
  • CX:默认循环指针、指针转移专用
  • DX:配合AX计算乘法除法专用

8086 CPU 存储方式

一、CPU 存储

CPU 存储主要通过寄存器,在8086CPU中寄存器最多可以存储16位数据,两个字节。

CPU寄存器存储单位:

  字:CPU寄存器使用位以字为单位、PC位、如 16位 32位 64位、称为字、8086CPU的字长(word size)为16bit=2字节。

 字节:1字节 = 8bit 、1bit= 二进制1

二、CPU 兼容

  上面说到8086CPU寄存器存储单元最多存储16位数据存储,那么上一代最多存储8位数据、那么如今的16位CPU是如何兼容8位CPU的,下面会有说明。

  通用寄存器均可以分为两个独立的8位寄存器使用、两个8位寄存器作为一个16位寄存器使用。

高位低位:

一个字(word)可以存在一个16位寄存器中

  • 这个字的高位字节存在这个寄存器的高8位寄存器
  • 这个字的低位字节存在这个寄存器的低8位寄存器

通用寄存器

  • AX可以分为AH和AL
  • BX可以分为BH和BL
  • CX可以分为CH和CL
  • DX可以分为DH和DL

高低位在内存中存储:

低位字节存在低地址单元,高位字节存在高地址单元。

例:20000D(4E20H)存放0、1两个单元,18D(0012H)存放在2、3两个单元。

注:先读高位地址1、在读低位地址0。4E20H。

(1)0地址单元中存放的字节型数据是( 20H  )

(2)0地址字单元中存放的字型数据是( 4E20H )

(3)2地址单元中存放的字节型数据是( 12H  )

(4)2地址字单元中存放的字型数据是( 0012H )

8086CPU 物理寻址

一、CPU 寻址

  • CPU访问内存单元时要给出内存单元的地址。
  • 所有的内存单元构成的存储空间是一个一维的线性空间。
  • 每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。

问题说明

  上篇博客我们知道了 8086CPU是20位地址总线,可传送20位地址,寻址能力为1M。但是8086CPU是16位结构的CPU。运算器一次最多可以处理16位的数据,寄存器的最大宽度为16位,在8086内部处理的、传输、暂存的地址也是16位,寻址能力也只有64KB,那么8086如何处理在寻址空间缺乏的问题,下面会说明。

解决方法

CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

  • 用两个16位地址(段地址、偏移地址)合成一个20位的物理地址。
  • 地址加法器合成物理地址的方法
  • 物理地址=段地址×16+偏移地址

注:段地址x16就相当于段地址向左偏移4个二进制位

注:相当于16位段地址向左移动4个二进制位、加上偏移地址、值为20位内存地址。

注:通过段地址向左偏移4位后 + 偏移地址 = 物理地址、只要结果成立,可任意调整段地址与偏移地址。

段地址会采用一个寄存器进行存储16位数据、在通过另一个寄存器存储偏移地址。

 

 二、CPU 内存分段

8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址。

实际上内存并没有分段,段的划分来自于CPU。

可根据、物理地址、段地址、求出偏移地址。

分段方案

  1. 段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数;
  2. 偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。
  3. 段地址:分段内存的起始地址到结尾中、取结尾后16个二进制位。
  4. 可根据、物理地址、段地址、求出偏移地址。

 

posted @ 2020-03-11 10:56  kevin.Xiang  阅读(1458)  评论(0编辑  收藏  举报