微机原理——16位微处理器8086/8088CPU

8086/8088CPU

期末考试要求

  • Intel 8086CPU的结构:执行部件及总线接口部件
    • 执行部件
    • 总线接口部件
    • 标志位
    • 20位的地址加法器
  • 存储器结构
    • ROM、RAM
    • 按字节编址,最大地址空间为 2 n 2^n 2n个字节
    • 存储器的分段(段基址、段边界、偏移量)
    • 物理地址与逻辑地址
  • 8086CPU的工作模式
  • 8086CPU的引脚
  • 系统总线及其作用?8086最小工作模式下的复位和启动操作、总线操作(读、写操作)、总线保持等。
  • 何为总线周期?
    • 8086的一个总线周期包括多少个时钟周期?
    • 什么情况下要插入 T w T_w Tw等待周期?
    • 插入多少个时钟周期取决于什么因素?
    • T w T_w Tw T i T_i Ti的区别
  • 中断的基本概念、中断的分类,掌握中断类型码、中断向量表地址以及中断入口地址之间的关系,中断的响应过程,中断相应与子程序调用的区别。

一、执行部件及总线接口部件

  • 执行部件(EU)
    • 通用寄存器(AX、BX、CX、DX)
    • 变址寄存器(SI、DI)
    • 堆栈指针寄存器(SP)
    • 基数指针寄存器(BP)
    • 标志寄存器(FR)
    • 算术逻辑部件(ALU)
  • 总线接口部件(BIU)
    • 4个段地址寄存器(CS、DS、SS、ES)
    • 指令指针寄存器(IP)
    • 20位地址加法器
    • 六字节的指令队列
  • 标志位:SF、ZF、CF、OF、AF、PF、DF、IF、TF(黑体为状态标志位,其余的为控制标志位)
    • SF:符号标志位,结果为负数,SF=1,否则SF=0
    • ZF:零标志位,指令执行后结果为0,ZF=1;结果不为0,ZF=0
    • CF:进位标志位,加减算数指令执行后,最高位有进位或错位,CF=1;无进位或错位,CF=0.(STC将其置1,CLC将其清0,CMC将其取反)
    • OF:溢出标志位,计算机所进行的运算均是无符号数运算,即把符号数的符号位也当数值进行计算,又把所有数的运算结果当符号数来影响标志位。如果执行后的结果超过了机器数所能表示的范围,OF=1,反之OF=0.
    • AF:辅助进位标志位,该标志用于BCD码的运算指令。最低4位有进位或错位,AF=1;无进位或错位,AF=0。
    • PF:奇偶标志位,指令执行后结果的低八位中1的个数为偶数,PF=1;若为奇数,PF=0。该标志可用于检查数据在传送过程中是否发生错误。
    • DF:方向标志位,用于控制数据串操作指令的步进方向。若DF=0,则数据串中操作指令增量自动从低地址向高地址进行;若DF=1,方向则相反。(STD将其置1,CLD将其清0)
    • IF:中断允许标志位,IF=1,允许CPU响应外部可屏蔽中断;IF=0,不允许CPU响应外部可屏蔽中断。(STI将其置1,CLI将其清0)
    • TF:追踪标志位,TF=1,CPU每执行一条指令就自动发生一个内部中断,CPU转去执行一个中断程序,因而CPU单步执行程序,常用于debug;TF=0,CPU正常执行程序。
  • 20位地址加法器
    段基址*10H+偏移地址=物理地址

执行部件与总线接口部件之间是并行关系

二、存储器的结构

8086CPU把内存空间划分为若干个逻辑段,每段64KB,逻辑段可以重叠,其段首地址的高16位被称为段基址,在16字节的位置,低四位为零称为整数边界。

逻辑地址包含了段基址和偏移地址,它们都是无符号的16位二进制数。

物理地址被称为绝对地址,它是20位的。

三、8086CPU的工作模式

最小模式:用于由8086单一微处理器构成的小系统。在这种方式下,由8086CPU直接产生小系统所需要的全部控制信号。系统特点是:总线控制逻辑直接由8086CPU产生和控制。若有CPU以外的其他模块想占用总线,则可以向CPU提出请求,在CPU允许并响应的情况下,该模块才可以获得总线控制权,使用完后,又将总线控制权还给CPU。

最大模式:用于实现多处理机系统,其中,8086CPU被称为主处理器,其他处理器被称为协处理器。在这种方式下,8086CPU不直接提供用于存储器或I/O读写的读写命令等控制信号,而是将当前要执行的传送操作类型编码为3个状态位输出,由总线控制器8288对状态信号进行译码产生相应控制信号。最大模式系统的特点是:总线控制逻辑由总线控制器8288产生和控制,即8288将主处理器的状态和信号转换成系统总线命令和控制信号。 协处理器只是协助主处理器完成某些辅助工作,即被动的接受并执行来自主处理器的命令。和8086配套使用的协处理器有两个:一个是专用于数值计算的协处理器8087,另一个是专用于输入输出操作的协处理器8089。8087通过硬件实现高精度整数浮点数运算。8089有其自身的一套专门用于输入输出操作的命令系统,还可带局部存储器,可以直接为输入输出设备服务。增加协处理器,使得浮点运算和输入输出操作不再占用8086时间,从而大大提高了系统的运行效率。

四、8086CPU的引脚

  1. 20根地址线,其中 A D 0 AD_0 AD0- A D 7 AD_7 AD7共8根与数据复用,4根与状态复用。通过地址锁存器ALE,可以实现数据与地址的分时复用。
  2. NMI,非屏蔽中断引脚,这条线上的中断请求信号是不能屏蔽的,只要这条线上有低到高的变化,就在现行指令结束之后中断现行程序的执行,进入非屏蔽中断服务程序。
  3. INTR,可屏蔽中断信号,CPU在每一条指令结束前都会采样该引线,以决定是否中断现行程序的执行,进入中断服务程序。该信号可以通过IF来屏蔽。
  4. I N T A ‾ \overline{INTA} INTA,中断响应信号,相应中断请求信号引线INTR来的外部中断时输出的中断响应信号。
  5. D T / R ‾ DT/\overline{R} DT/R,数据发送/接收信号。高电平,发送数据;低电平,接收数据。确定双向驱动器的数据传送方向。
  6. D E N ‾ \overline{DEN} DEN,数据允许信号,用作双向驱动器的输出允许信号。
  7. M ‾ / I O \overline{M}/IO M/IO,存储器及IO选择。
  8. HOLD,HLDA,保持请求和保持响应信号。
  9. R D ‾ , W R ‾ \overline{RD},\overline{WR} RD,WR,读写信号
  10. READY,准备就绪信号。该信号是CPU寻址的存储器或I/O设备送来的响应信号。8088所寻址的存储器或I/O设备没有准备就绪就将该信号设置为低电平,8088等待。
  11. T E S T ‾ \overline{TEST} TEST,测试信号,该信号是由WAIT指令测试的信号。若为低电平,执行WAIT指令后面的指令,若为高电平,则CPU处于空闲状态,重复执行WAIT指令。
  12. RESET,由低变高时,8088立即结束现行操作;当其返为低时,8088将发生以下变化,标志寄存器置为0000H,禁止可屏蔽中断和单步中断;DS,SS,ES,IP复位位0000H,CS置成FFFFH,8088将从存储单元FFFF0H开始取值执行。

五、系统总线及其作用

六、总线周期

CPU每从存储器或输入输出端口的读取一个字节就要经过一个总线周期。

每个总线周期通常包含4个T状态,T状态是CPU处理动作的最小单位,它就是时钟周期。所以,一个总线周期通常包括了四个时钟周期。一个取指可能需要若干个总线周期。

T 1 T_1 T1:CPU发送20位地址信号至多路复用线

T 2 T_2 T2:CPU向高4位复用线送状态,低16位高阻

T 3 T_3 T3:高4位复用线继续传送状态,低16位传送数据

T 4 T_4 T4:总线周期结束

注意,在任何一个总线的 T 1 T_1 T1状态,ALE输出有效电平,以表示当前在地址/数据复用总线上输出的是地址信息,地址锁存器将ALE作为锁存信号,对地址进行锁存。要注意ALE不能浮空。

T w T_w Tw,等待时钟周期, T 3 T_3 T3时钟周期内存或I/O接口不能完成读写工作,需通知CPU,CPU将在 T 3 T_3 T3后插入一个或多个等待时钟周期,直到内存或I/O准备好

空闲周期,CPU不需要取指令,不需要取数据。

T w 和 T i T_w和T_i TwTi的区别在于,一个在于总线周期内,一个在于总线周期间。

七、中断操作

中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。可用于解决快速的CPU与慢速的外设之间交换数据的矛盾。

有以下好处:

同步操作、实现实时处理、故障处理。

软件中断:是CPU根据软件中的某条指令软件对标记寄存器中某个状态的设置而产生的中断。进入中断时,不需要执行中断响应周期,也不从数据总线读取中断类型码,不受中断允许标志位IF的影响,但是和TF的状态有关(只有TF=1才进行单步中断)。

硬件中断:外部硬件产生的中断叫做硬件中断,也叫外部硬件中断。

  • NMI:通过CPU的NMI引脚接入,不受IF的影响,但是系统内只有一个非屏蔽中断。
  • INTR:通过CPU的INTR引脚接入,只有IF为1时中断请求才能进入。在中断控制器的配合下,一个系统可以有几十个可屏蔽中断。

中断向量,中断子程序的入口地址,每个中断类型对应一个中断向量。它和断点不同,所谓断点就是响应中断时,主程序中当前指令的下一个指令地址。

中断向量表,根据中断类型和中断服务子程序对应关系建立的列表。具体来说,就是把内存中的0段的0000-03FFH区域设置为一个中断向量表。每一个中断向量占4个存储单元,前两个单元存放中断子程序入口的偏移量IP,后两个单元存放中断子程序入口的段地址CS。

注意,非屏蔽中断的类型码是类型2.

可屏蔽中断的响应过程:

  1. 从数据总线上获取中断类型码,并存入内部暂存器
  2. 将标志位压入堆栈
  3. 将IF和TF清零
  4. 将断点保护到堆栈
  5. 根据中断类型码,到内存的0000段的中断向量表找到中断向量,再根据中断向量转入相应的中断处理子程序。

可屏蔽中断总线时序

  1. 执行两个中断响应总线周期,之间用2-3个空闲状态隔开。
  2. 执行一个总线写周期,把标志位的值推入堆栈。
  3. 将标志寄存器的中断允许标志IF和单步标志TF置0.
  4. 执行一个总线写周期,把CS推入堆栈
  5. 执行一个总线写周期,把IP推入堆栈
  6. 执行一个总线读周期,读出IP
  7. 执行一个总线读周期,读出CS

如果是非屏蔽中断或者是软件中断,则跳过第一步,从第二步开始执行到第七步,也就是不受中断向量表和中断类型码的影响。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值