微机原理及应用 主讲:谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 第8章 中断 8.1 引言 第7章中当CP U与外设交换信息时 , 若 用 查 询 方 式 , 则 CPU就要 浪费 很多 时间去等待外设,这就存 在 一 个 快 速 的 CPU与 慢速 的外设之间的矛盾,这也 是计算机在发展过程中遇到的严重问题之一。 中断的出现是为了解决高速C PU与慢速外 设 之 间的矛盾而引出的一个概念。 8.1.1 中断的概念及为什么要用中断技术 中断 是指C PU暂时中止它正在执行的主程序,转 去执行请求中断的那个外设的中断服务程序,处理 完毕后,又返回主程序的过程。 子程序的调用是固定的,而中断是随机的。 1、同步操作 可以使C PU与外设同时工作,C PU启动启动外设后 继续执行主程序。 2、实现实时处理 3、故障处理 8.1.2 中断源 中断源: 引起中断的原因或能发出中断申请的来源 。 1、一般的输入输入输出设备(如键盘、打印机等) 2、数据通道中断源(如磁盘、磁带机) 3、实时时钟(外部电路如8253) 4、故障源 ( 如掉电,需保存信息) 5、调试程序时设置的中断源(如断点、单步) 8.2 最简单的中断情况 8.2.1 CPU响应中断的条件 1、设置中断请求出触发器; 2、设置中断屏蔽触发器; 3、中断是开放的; 4、现行指令执行结束; 8.2.2 CPU对中断的响应 8.2.2 CPU对中断的响应 满足以上四个条件后,C PU响应中断,转入中断 周期,CPU完成如下操作 (P267-268) 1、关中断; 2、保留断点; 3、保护现场; 4、给出中断入口,转入相应中断服务程序; 5、恢复现场; 6、开中断与返回; 8.3 中断优先权 8.3.1 用软件确定中断优先权 例: 把8个外设的中断请求组合起来,作为一个端口, 将各个外设请求信号 “或 ”后,作为 INTR信号,如下图示: ≥1 INTR (CPU) I/O D 0 D 1 至CPU数据 总线 INTR 0 INTR 1 INTR 7 D 7 软件优先权排队 端口控制 8.3.1 用软件确定中断优先权 D 7 D 0 20H 磁 盘 纸 带 输 入 纸 带 穿 孔 打 印 机 输 出 CRT 显 示 电 源 故 障 磁 带 键 盘 输 入 8.3.1 用软件确定中断优先权 判优: 一 个 外 设 有 中 断 请 求 ,都可向 CPU发INTR, CPU响应 后把中断寄存器的状态读入C PU,设该状态为1,表示该位 有 中 断 申 请 ,通 过 软 件 查询,查到那位为1,转到相应中断服务程序。 程序段如下: 1、屏蔽法(P269) IN AL,20H TEST AL,80H ;D7有请求? JNZ II1 ;有,转对应中断服务程序 TEST AL,40H ;D6有请求? JNZ II2 ;有,转对应中断服务程序 ┇ 先查谁,谁的优先权高 8.3.1 用软件确定中断优先权 2、移位法(P269) XOR AL,AL IN AL,20H RCL AL,1 JC PWS RCL AL,1 JC DISK ┇ 先移位到C标志的优先权高 8.3.2 用硬件确定中断优先权 编码器和比较器硬件组成的优先权排队电路 … 1 ≥ INTR 0 INTR 7 } 优先 权编 码组 中断 输入 … & 1 图8-7 编码器和比较器硬件组成的优先权排队电路 & 2 A>B 比较器 A 2 A 1 A 0 B 2 B 1 B 0 优先权失效信号 1 ≥ 去 CPU INTR CPU数据总线优先 权寄 存器 8.4 中断控制器Intel 8259A 略(自学,后续课程的重点内容) 8.5 8086微处理器的中断方式 8086/8088有两类中断: 硬件中断 ― 由外设的请求引起,又叫 外中断 软件中断 ― 由执行指令所引起,又叫 内中断 中断系统: 为实现中断功能而设置的各种 硬件 和软 件, 统 称为中断系统。 8.5.1 外部中断 8086/8088有两条外部中断请求线 NMI(非 屏 蔽 中断)和INTR(可屏蔽中断) 1、INTR(可屏蔽中断) 2、NMI(非屏蔽中断) 8.5.1 外部中断(中断) 出现在INTR上的请求信号是 电平 触发的,在CPU未响 应前,此信号应保持有效。当外设的中断请求未被屏蔽, 且IF=1,则CPU在当前指令周期的最后一个T状态去采样 INTR线,若有效,CPU予以响应,时序如下:( 参见P175 图5-12) 图5-12 中断响应周期时序 T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 CLK ALE INTA 第一个中断响应周期 第二个中断响应周期 AD 7 ~AD 0 向量类型 8.5.1 外部中断(中断) 在第一个中断响应周期,CPU输出中断响应信号INTA。 在第一 个机器周期 ,CPU使AD 15 -AD 0 浮空, 在第二个机器周期 ,被响应的 外设(或接口芯片)应向数据总线输送一个字节的中断向量号, CPU读入中断向量号后,就可以在中断向量表上找到该设备服务 程序的入口地址,转入中断服务( 参见P175 图5-12) 图5-12 中断响应周期时序 T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 第一个中断响应周期 第二个中断响应周期 CLK ALE INTA AD 7 ~AD 0 向量类型 8.5.2 内部中断 8086可以有几种产生内部中断的情况 1、DIV/IDIV 2、INT指令 3、INTO指令 4、单步执行 8086规定这些中断优 先权为:内部中断、N MI、 INTR、单步执行(T) 8.5.3 中断向量表 地址 内容 0000H } } } } } 类型 1(IP) 类型 2(IP) 类型 3(IP) 类型 4(IP) 类型 5(IP) 类型 0(CS) 类型 1(CS) 类型 2(CS) 类型 3(CS) 类型 4(CS) 类型 5(CS) … 0的 类型 1的 中断向量 类型 2的 中断向量 类型 3的 中断向量 类型 4的 中断向量 (除法错 ) (单步 ) (非屏蔽中断 ) (断点 ) (溢出中断 INTO) } 类型 中断向量 类型 0(IP) 0004H 0008H 000CH 0010H 0014H 4*N } 类型 中断向量 N的 类型 N(IP) 类型 N(CS) … 图8-22 中断向量表 Summary ? Question and Problem ?