运用上一部分学到的器件使用的学习方法研究8086 CPU

8086功能了解

  1. 1978年,8086第一代16位微处理器。

  2. 第一次将流水线思想引进微处理器:指令级流水。

  3. 存储器分段管理机制引入处理器,扩大寻址能力。

  4. 只有整数运算指令。可配套数值协处理器8087、

  5. 输入/输出协处理器8089,具备较强大计算能力和I/O处理能力。

  6. 1979年推出8088,8位外部数据总线,兼容丰富的8位配套器件, 8088内部结构与8086基本相同。

  7. 基于8088微处理器的IBM PC-XT以及兼容系统。

8086引脚特性分析

8086引脚基本功能

1.电源引脚

GND、VCC,工作电压为5V

2.时钟、复位

CLK =5MHZ
复位信号(高电平有效)
复位信号有效时。处理器所有寄存器恢复到复位状态默认值,程序重新开始执行。复位信号无效时,系统程序正常运行

3.最小模式/最大模式

最小模式为单处理机模式,控制信号少,一般不必外接总线
最大模式为多处理机模式,控制信号多,CPU必须通过总线控制器与总线相连

4.地址、数据线

8086可寻址范围为1MB=2202^{20},所以共20根地址线——A0~A19
数据总线与低16位地址总线复用AD0~AD15
数据总线与地址总线复用的情况下,在使用的时候需要通过锁存器将地址总线与数据总线进行分离

5.高字节数据选择

为了兼容8位数据操作,增加了BHE高字节数据选择信号,低电平有效

BHE\overline {BHE} A0
操作
所用数据线
0     0 从偶地址开始读/写一个字 AD15~AD0
0     1 从奇地址读/写一个字节 AD15~AD8
1     0 从偶地址读/写一个字节 AD7~AD0
1     1 无效

8086重要功能引脚

中断

包括NMI和INTR、INTA,非屏蔽中断和可屏蔽中断。
中断是指在程序在运行过程中,遇到一个中断事件的发生,暂停当前程序的执行,转向中断服务程序执行,中断服务完返回原来断点继续执行。这样的一个过程。

最大模式/最小模式下功能相同的引脚
- READY准备好信号
- TEST测试信号

当WAIT指令执行时,测试该引脚。当信号无效时,CPU进入等待状态;信号有效,CPU退出等待,继续执行程序。

习题

8086能够正常工作的最基本条件需要用到哪些信号

解答:电源、时钟、复位、地址、数据线、高字节数据选择

8086CPU的NMI和INTR的不同指出

解答:

  • 由INTR端引入,依靠IF端置0还是置1决定CPU是否响应的中断称为可屏蔽中断INTR。
  • 由NMI端引入,不受IF位状态的控制,只要有中断申请就必须响应的中断称为非屏蔽中断NMI。
8086的RESET信号的作用

解答:复位信号;复位信号有效时。处理器所有寄存器恢复到复位状态默认值,程序重新开始执行。复位信号无效时,系统程序正常运行

8086能够正常工作需要用到哪些信号

解答:电源、时钟、复位、最大/最小模式选择

信号方向以及有效电平

参考8086最大最小模式区别

8086内部结构分析

功能划分

微处理器 8086从功能上分为两部分:总线接口部分(BIU),执行部分(EU)。

  • 执行部分包括ALU,通用寄存器、程序状态字等模块,负责指令的执行。
  • 总线接口部分包括段寄存器、指令指针、地址加法器、指令队列缓冲器等模块,
总线接口部分BIU

负责与存储器、I/O接口传递数据,具体完成:

 ①从内存取指令,送到指令队列
 ②配合EU从指定的内存单元或IO端口取数据
 ③将EU的操作结果送到指定的内存单元或IO端口
执行单元EU

负责指令的执行(算术、逻辑运算、控制命令、……)

工作方式
传统CPU采用串行工作方式

CPU访问存储器(存取数据或指令)时要等待总线操作的完成
而CPU执行指令时总线处于空闲状态
缺点:CPU无法全速运行
解决:总线空闲时预取指令,使CPU需要指令时能立刻得到。

8086采取并行工作方式

8086引入指令队列缓冲器,使得EU和BIU两部分可以并行工作。使得总线一直处于忙碌状态,提高总线的利用率。

工作原理

BIU完成取指令,EU执行指令,两个模块相互独立,相互配合。

①指令队列有空字节,BIU自动取指 → 队列
②EU总是从队列前部取指令去执行
③指令需要访问M或I/O,EU会请求BIU去完成
内部寄存器

内部寄存器包括数据寄存器,指针寄存器,这两个统称为通用寄存器
控制寄存器,段寄存器。
完整的寄存器是16bit,如果由两部分组成的寄存器,比如AH AL ,这个寄存器就是可以分为高八位和低八位的两个8位寄存器。

数据寄存器

AX、BX、CX、DX统称为数据寄存器,

指针寄存器

8086的指针寄存器有两个:SP和BP。

  • SP由它和堆栈段寄存器一起来确定堆栈在内存中的位置。
  • BP通常用于存放基地址,以使8086的寻址更加灵活。
变址寄存器

SI/DI用于指令的变址寻址。SI指向源操作数,DI指向目的操作数。

控制寄存器

8086有两个控制寄存器IP和PSW

  • IP指令指针寄存器,用来控制CPU的指令执行顺序。CPU执行程序的地址总是为:CS左移4位+IP。当顺序执行程序时,CPU每从内存中取一个指令字节。IP将自动加1,指向下一个要读取的字节。
    • 当CS不变、IP单独改变时,会发生段内程序转移。
    • 当CS和IP同时改变时,会产生段间程序转移。
  • PSW是程序状态字,用来存放8086 CPU在工作过程中的状态。包括进位标志、奇偶标志、半加标志、零标志、符号标志陷阱标志、中断允许标志、方向标志、溢出标志等状态信息
段寄存器

8086微处理器具有4个段寄存器:代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES
段寄存器的内容与有效的地址偏移量一起可确定内存的物理地址。
CS规定并控制程序区,DS和ES控制数据区,SS控制堆栈区。

习题

8086处理器如何利用指令队列缓冲器实现EU和BIU的并行工作?

解答:
指令队列有空字节,BIU自动取指 → 队列
EU总是从队列前部取指令去执行
指令需要访问M或I/O,EU会请求BIU去完成

在算术运算中,如何判断结果溢出?

解答:

  • 无符号数运算后,检查 CF
  • 有符号数运算后,检查 OF
在调用指令执行过程中,堆栈的物理地址如何确定?

解答:SS × 16 + SP