16位微处理器8086

8086结构图

执行单元(EU-Execution Unit)

负责指令的译码和执行。

4个16位数据寄存器(AX、BX、CX、DX)

AX和AL可用作累加操作,因此又称作累加器

4个16位地址指针寄存器:通常用于存放操作数偏移地址

  1. SP (Stack Pointer)—堆栈指针寄存器,指示堆栈段栈顶位置
  2. BP (Base Pointer)—基址指针寄存器,指示堆栈段数据区基址
  3. SI (Source Index)—源变址寄存器,指示数据段源串地址
  4. DI(Destination Index)—目的变址寄存器,指示扩展段目的串地址

标志寄存器 FLAG

image.png

  • 状态标志

    1. CF(Carry Flag)进(借)位标志,加法运算最高位产生进位或减法运算最高位产生借位,表示无符号数运算产生溢出,CF置1,否则置0
    2. AF(Auxiliary Carry Flag)辅助进位标志,加法运算时第3位往第4位有进位,或减法运算时第3位往第4位有借位,则AF置1,否则置0
    3. ZF (Zero Flag)零标志, 若当前运算结果为零, 则ZF置1,否则置0
    4. SF(Sign Flag)符号标志,与运算结果最高位相同,若为负数,则SF置1,否则置0,SF指示了当前运算结果是正还是负
    5. OF(Overflow Flag)溢出标志,有符号数算术运算结果溢出,则OF置1,否则置0
    6. PF(Parity Flag)奇偶标志,运算结果低8位所含1个数为偶数则PF置1,否则置0
  • 控制标志

    1. DF(Direction Flag)方向标志
      DF=1,串操作时,地址不断递减;DF=0,串操作时,地址不断递增
    2. IF(Interrupt enable Flag)中断允许标志
      IF=1,CPU允许接收可屏蔽中断请求,即开中断;IF=0,则关中断
    3. TF(Trap Flag)跟踪标志,又称单步标志
      TF=1,CPU为单步工作方式,每执行完一条指令产生一次软件中断

总线接口单元(BIU-Bus Interface Unit)

与系统总线连接,实现与存储器、I/O口之间的数据传送。

4个16位段地址寄存器

  1. CS (Code Segment)——代码段寄存器,代码段存放代码
  2. DS (Data Segment)——数据段寄存器,数据段存放数据
  3. SS (Stack Segment)——堆栈段寄存器,堆栈段用作堆栈操作
  4. ES (Extra Segment)——扩展段寄存器,扩展段存放数据

8086对存储器采用分段管理,4个段寄存器分别存放4个当前段的起始地址,又称作段基址寄存器。

指令指针寄存器IP (Instruction Pointer)

16位IP存放当前代码段(CS)所要取出的下一条指令的偏移地址

地址加法器∑

8086用20位地址线寻址1MB内存空间,但其内部寄存器是16位的,因此需要用地址加法器∑根据16位寄存器的值计算出20位物理地址

指令缓冲队列

8086执行指令的同时,会从内存取1条或几条指令,取来的指令就存放在指令队列中

暂存器

用于与EU通信的内部寄存器

总线控制电路

负责总线操作控制

存储器和I/O管理

逻辑地址形式为 段地址 : 偏移地址

image.png

段超越

image.png

8086 I/O编址

8086对I/O端口操作,需要专门的IN、OUT指令,并且只能通过累加器(AX/AL)来完成
例: IN AL, 80H

8086系统中,存储器和I/O端口分别独立编址

存储器的地址范围是00000H – 0FFFFFH
I/O端口的地址范围是0000H – 0FFFFH

8086引脚信号和工作模式

最小模式:系统中只有一个处理器;$MN/\overline{MX}$为高电平
最大模式:系统中包括两个或多个处理器;$MN/\overline{MX}$为低电平
8086 CPU为40pin双列直插(DIP)封装。

8086最小模式下引脚信号和功能

image.png

总线信号

  1. AD0~AD15: 地址/数据复用引脚,双向工作
    分时传送16位数据和地址的低16位,由ALE锁存地址信息
  2. A16~A19(S3~S6): 地址/状态复用引脚,输出
    分时输出地址的高4位和CPU当前状态,地址信息由ALE锁存
  3. $\overline{BHE}/S7$: 高8位数据总线允许/状态复用引脚,输出
    低电平有效,表示高8位数据线D15~D8上数据有效
  4. ALE: 地址锁存允许信号输出
    高电平有效,表示总线上的信息是地址信息。

总线控制信号

  1. HOLD: 总线保持请求信号输入
    高电平有效,表示其他模块(如DMA)申请占用总线
  2. HLDA: 总线保持响应信号输出
    高电平有效,表示CPU已让出总线

系统控制信号

  1. $M/\overline{IO}$: 存储器/输入输出选择信号,输出,高电平表示CPU访问存储器,低电平表示CPU访问I/O端口
  2. $\overline{RD}$: 读信号输出,低电平有效,表示CPU从存储器或I/O口读入信息
  3. $\overline{WR}$: 写信号输出,低电平有效,表示CPU向存储器或I/O口输出数据
  4. $DT/\overline{R}$: 数据收发信号输出,高电平表示CPU正在发送数据,低电平表示CPU接收数据
  5. $\overline{DEN}$: 数据允许信号输出,低电平有效,表示CPU当前准备发送或接收一个数据

中断控制信号

  1. INTR: 可屏蔽中断请求信号输入,高电平有效,表示外部向CPU提出中断申请
  2. $\overline{INTA}$: 中断响应信号输出,低电平有效,表示CPU响应外设中断请求
  3. NMI: 非屏蔽中断请求信号输入,上升沿有效。表示外部有非屏蔽中断申请。非屏蔽中断不受软件控制,CPU必须响应

CPU控制信号

  1. RESET: 复位信号输入
    高电平有效,至少保持4个时钟周期的高电平。复位时CPU停止现行操作,开始复位,并进行初始化:标志寄存器FLAG、IP、DS、SS、ES及指令队列均清零,CS为FFFFH,复位结束时CPU从FFFF0H开始执行程序
  2. $MN/\overline{MX}$:最小模式/最大模式选择信号输入,高电平为最小模式
  3. READY:“准备好”信号输入,高电平有效,表示存储器或I/O口已准备就绪,可进行一次数据传输
  4. $\overline{TEST}$: 测试信号输入,低电平有效,有效时CPU退出WAIT指令;

其它信号

  1. CLK: 时钟信号,8086主频为4.77MHZ T=210ns;单相,占空比为1/3
  2. VCC,GND: 电源及地,+5V,满足TTL规范

8086最小模式下的总线连接

Intel 8282

把AD复用引脚连接到地址总线的8位地址锁存器。3片8282(功能同74LS373)A0~A19和$\overline{BHE}$,$ALE$为锁存信号。

Intel 8286

把AD复用引脚连接到数据总线的8位数据缓冲器。2片8286(功能同74LS245)做D15~D0的缓冲器,$DT/\overline{R}$做方向选择,$\overline{DEN}$为选通信号。

控制信号$M/\overline{IO}$、$\overline{RD}$和$\overline{WR}$

image.png

中断控制信号INTR、$\overline{INTA}$、NMI

  1. INTR: 外部可屏蔽中断请求引脚,高电平有效
  2. $\overline{INTA}$: 中断响应信号,低电平有效
  3. NMI: 不可屏蔽中断请求引脚,上升沿有效

总线控制信号HOLD、HLDA

  1. HOLD:总线保持请求引脚,高电平有效
  2. HLDA:总线保持响应引脚,高电平有效
    HLDA控制8282的OE,当CPU总线保持响应时让出总线

8086操作和时序

1. 8086时钟电路与复位电路
8284为8086提供CLK时钟信号、 RESET复位信号和READY准备信号
8086/8088内部无时钟发生器,时钟由8284提供,频率为4.77MHz
输入RES经8284内部斯密特触发器整形,同步后产生RESET信号,给CPU复位
外界准备好信号输入到8284的RDY端,同步后产生READY信号给CPU

2. 8086/8088系统的复位操作和启动过程

  • CPU接到RESET信号,停止现有工作,进行复位操作:CS置FFFFH,IP置0,指令队列清空,其余寄存器清0
  • 从存储器FFFFH :0000H取第一条指令,一般在此处放一条跳转指令,跳转到ROM BIOS中的系统测试程序
  • 系统测试程序执行硬件自检(对CPU、RAM、ROM等硬件进行测试),然后执行ROM BIOS中的初始引导程序
  • 初始引导程序再从磁盘0面0道1扇区装入引导程序,执行引导操作
  • 按引导程序的指令,顺序装入其他程序模块,完成操作系统的引导操作

注:在3、4步之间微机还会检查C0000H开始的扩展ROM空间中是否有程序,如果有,并且校验正确,则先执行这些程序

3. 8086总线周期

  • 时钟周期T(T状态)
    时钟脉冲的一个循环时间叫做一个时钟周期。每个时钟周期T又称为一个“状态”。它是CPU工作的最小时间单位,是计算机系统工作速度的重要标志。8086 CPU的F=4.77M,T=210ns
  • 总线周期
    CPU通过总线从存储器或I/O端口存取一个字或字节的时间称为总线周期。包括三类:存储器读写周期、I/O端口读写周期、中断响应周期
    一个基本总线周期包括4个状态:T1,T2,T3,T4
  • 指令周期
    执行一条指令所需要的时间称为指令周期。8086指令周期最短为2个时钟周期,最长为200个时钟周期

4. 8086总线操作时序(最小模式下存储器读周期)

  • T1状态
    置$M/\overline{IO}$为高电平,指示是从存储器读数据
    T1开始,ALE置高,8282输出跟随输入,T1上升沿,ALE置低,8282锁存20位地址
    $\overline{BHE}$也在T1状态锁存,指示T2、T3状态传送数据时,高8位是否有效
    置$DT/\overline{R}$为低,控制8286接收数据,置$\overline{DEN}$为高,让8286输出浮空

  • T2状态
    撤销地址信号,AD15~AD0处于高阻状态,为读入数据作准备
    A19/S6~A16/S3及$\overline{BHE}/S7$引脚输出状态信息S6~S3
    置$\overline{RD}$信号为低电平,输出读信号到存储器
    置$\overline{DEN}$为低电平,打开8286三态门,准备接收存储器输出的数据

  • T3状态
    存储器将数据送到数据总线,CPU通过AD15~AD0接收数据
    T3上升沿检测READY信号,若为高电平,则下一个为T4状态;否则插入等待周期Tw

  • T4状态
    T4开始,撤销$\overline{RD}$和$\overline{DEN}$信号,置为高电平无效,数据总线浮空
    T4上升沿撤销$DT/\overline{R}$信号
    CPU读取存储器数据的时间为 2T = 420ns ($\overline{RD}$或$\overline{DEN}$有效时间)

注:最小模式下I/O口读周期与存储器读周期类似,区别为读I/O口时,T1状态将置$M/\overline{IO}$为低电平,表示是对I/O口进行读