170 likes | 255 Views
第七章 中断控制技术. 理解中断的基本概念 中断、中断源的含义,中断的类型 实现中断的意义,中断系统的功能 CPU 响应中断的条件 了解 8086 CPU 的中断机构. 7-1 为什么要用中断. 快速的 CPU 与慢速的外设接口时采用中断方式。 实现中断的好处 实现同步操作: 有了中断, CPU 和外设可以同时工作。 实现实时处理: 在需要时,各个现场可以随时发出中断请求,要求 CPU 作出及时处理。 实现故障处理: 在计算机运行时,突然的故障可以通过中断系统自行处理,而不必停机或报告工作人员。. 7-2 中断源.
E N D
第七章 中断控制技术 • 理解中断的基本概念 • 中断、中断源的含义,中断的类型 • 实现中断的意义,中断系统的功能 • CPU响应中断的条件 • 了解8086 CPU的中断机构
7-1 为什么要用中断 • 快速的CPU与慢速的外设接口时采用中断方式。 • 实现中断的好处 • 实现同步操作:有了中断,CPU和外设可以同时工作。 • 实现实时处理:在需要时,各个现场可以随时发出中断请求,要求CPU作出及时处理。 • 实现故障处理:在计算机运行时,突然的故障可以通过中断系统自行处理,而不必停机或报告工作人员。
7-2 中断源 • 引起中断的原因或能发出中断申请的来源称为中断源。 • 一般的输入/输出设备(如键盘、打印机) • 数据通道中断源(磁盘、磁带等) • 实时时钟 • 故障源(如电源掉电) • 为调试程序而设置的中断源(断点和单步执行)
7-3 8086的中断方式 • 硬件中断:由外设的请求所引起的 • 可屏蔽中断 (INTR) :CPU是否响应取决于标志位IF的状态 • IF=1,CPU处在开中断状态,可以响应; IF=0, CPU处在关中断状态,不响应。 • STI可以开中断,CLI关中断。 • 非屏蔽中断 (NMI) : CPU在当前指令执行完,就可以响应。 • 软件中断:由指令的执行所引起的 DIV(IDIV)指令、INT指令、INTO指令、 单步执行(标志位TF=1)等。 • 8086中断优先权次序: 软件中断、NMI、INTR、单步执行最低。
软件中断(内部) 硬件中断(外部) 非屏蔽中断请求 INT n 指令 2 NMI 中 断 逻 辑 INTR 中 断 控 制 器 8259A 可屏蔽中断请求 3 4 1 0 断点 中断 溢出 中断 单步 中断 除数为 0 中断 OF=1 TF=1 INTO
7-4 中断系统的功能 • 实现中断及返回: • 有中断申请时,CPU能决定是否响应这个中断请求; • CPU在当前指令执行完,响应中断: • 中断类型码 N 乘4,作为中断向量表的指针 • 保护现场:SPSP-2,标志寄存器入栈 • 关中断: 清IF、TF(屏蔽新的INTR中断和单步中断) • 保留断点: SPSP-2,当前CS入栈; SPSP-2,当前IP入栈; • 从中断向量表中取出中断服务程序的入口地址 N*4地址的第一个字送IP; N*4地址的第二个字送CS; • 从新地址取指令执行(即执行中断服务程序) • 中断处理完,恢复断点和现场,开中断返回。
7-4 中断系统的功能 • 能实现中断优先权排队 • 通常,在系统中有多个中断源,会出现两个或更多个中断源同时提出中断请求的情况,这样就必须要设计者事先根据轻重缓急,给每个中断源确定一个中断级别------优先权排队。 • 当多个中断源同时发出中断申请时,CPU能找到优先级别最高的中断源,响应它的中断请求;在优先级别最高的中断源处理完之后,再响应级别较低的中断源。 • 能实现中断嵌套 当CPU在进行中断处理时,能同时处理其他的中断源的请求。 • 请求的中断源级别比当前的级别高时,中断嵌套。 • 请求的中断源级别与当前的级别相同或低时,暂不响应,等当前的中断处理完后,再响应。
7-5 CPU响应中断的条件 • 每个中断源设置一个中断请求触发器: 通过它,中断源的的中断请求信号一直保持到CPU响应后,然后清除中断请求信号。 • 接口电路中设置中断屏蔽触发器: 当此触发器为“1”时,外设的中断请求才能被送出至CPU • 中断是开放的: CPU内部有一个中断允许触发器,当其为“1”时,CPU才能响应中断,当其为“0”时,即使INTR线上有中断请求,CPU也不响应,即称为“可屏蔽中断” • CPU在当前指令结束后响应中断(CPU在当前指令的最后一个T状态检测到INTR信号,进入中断响应周期)
7-6 中断优先权的实现 • 用软件查询法确定中断优先权 • 将8个中断源的中断请求触发器组合起来,将各个外设的中断请求信号相“或”后,作为INTR信号 • 当CPU响应中断后,把中断请求触发器的状态读入CPU • 逐位检测(查询)它们的状态,若有中断请求就转到相应的中断服务程序。 • 查询的次序就是优先权的次序(最先查询的,优先级最高) • 查询程序的两种实现方法 • 屏蔽法:用 TEST指令,JNZ 实现跳转 • 移位法:用 RCL 指令 ,JC 实现跳转
7-6 中断优先权的实现 • 屏蔽法:用 TEST指令,JNZ 实现跳转 IN AL,20H;读入中断请求触发器的状态 TEST AL,80H;检查最高位D7是否有请求 JNZ SERVE7;有,转至第7号设备的服务程序 TEST AL,40H;否,检查次高位D6是否有请求 JNZ SERVE6;有,转至第6号设备的服务程序 TEST AL,20H;否,检查下一位D5是否有请求 JNZ SERVE5;有,转至第5号设备的服务程序 ……
7-6 中断优先权的实现 • 移位法:用 RCL指令,JC实现跳转 XOR AL,AL;AL清0 IN AL,20H;读入中断请求触发器的状态 RCL AL,1;检查最高位D7是否有请求 JC SERVE7;有,转至第7号设备的服务程序 RCL AL,1;否,检查次高位D6是否有请求 JC SERVE6;有,转至第6号设备的服务程序 RCL AL,1;否,检查下一位D5是否有请求 JC SERVE5;有,转至第5号设备的服务程序 ……
8 到 3 优先权 编码组 中断请求输入 A>B比较器 去CPU 的 INTR A2 A1 A0 1 优先权 寄存器 B2 B1 B0 CPU数据总线 2 优先权失效 7-6 中断优先权的实现 • 硬件实现优先权排队的电路
7-7 中断类型和中断向量 • 8086微处理器有处理256种中断的能力。 • 每个中断分配给一个中断类型码,在0~255之间,用 N(一字节代码)表示,也称为256种类型中断。 • 中断向量与中断向量表 • 中断向量:每种中断处理程序的入口地址称为中断向量。每个中断向量占4字节,前两个字节为IP,后两个为CS。 • 中断向量表:8086将内存最低地址的1K字节单元作为中断向量表(地址00000H ~ 003FFH),存放256种中断处理程序的入口地址。 • 中断向量表的分配如下图所示:
03FFH CS Type FF 用 户 可用 IP 03FCH : 0083H CS Type 40 IP 0080H 007FH CS Type 3F 系统保 留 IP 007CH : CS Type 5 IP 0014H 0013H CS Type 4 溢出中断 IP 0010H 000FH CS 8086 专 用 5 个 Type 3 断点中断 IP 000CH 000FH CS Type 2 非屏蔽中断 IP 0008H 0007H CS Type 1 单步中断 IP 0004H 0003H CS Type 0 除数为 0 IP 0000H
7-7 中断类型和中断向量 例1:8086内存的前1K字节建立了一个中断向量表,可以容纳多少个中断向量?如果有中断向量表指针是004CH,假设由该指针起的4个内存单元中顺序存放着59H,ECH,00H,F0H,中断服务程序的入口地址是多少? 答:1、可以容纳256个中断向量。 2、 IP = 0EC59H ,CS = 0F000H 中断服务程序的入口地址为 PA = CS ×10H + IP = FEC59H
7-7 中断类型和中断向量 例2:若某中断源的中断类型是24H,对应该中断源的中断向量表入口地址是什么? 若中断服务程序入口地址为4FE24H,则对应该中断源的中断向量表内容是什么,如何定位? 答:1、对应该中断源的中断向量表入口地址为: 0段的0090H地址(24H*4=90H) 2、其中断服务程序入口地址为4FE24H , 则在向量表中定位情况: (0090H)=24H (0091H)=00H (0092H)=E0H (0093H)=4FH
7-7 中断类型和中断向量 注意: 8086对不同的中断源的响应和处理的过程,主要区别在于获取相应类型码的方式不相同。 在取得中断类型码后的处理过程是一样的。 • INTR中断,在第2个中断响应周期的T4状态前沿,采样数据线获得中断类型码。 • NMI的中断,内部自动产生中断类型码为2。 • 软件中断,中断类型码也是自动生成的。