300 likes | 497 Views
第七章 中 断 系 统. 课时数: 3 - 4. 第 七 章 主 要 内 容. 中断控制方式的特点 中断系统的功能及相关概念 中断处理过程 与子程序调用的区别 ( P309 ). 一、中断的基本概念 ( P307 ) 二、 8086CPU 的中断系统 ( P310 ) 三、 8086 系统中 INTR 中断的处理 ( P316 ) 四、 80X86 系列微机的硬中断控制逻辑 ( P326 ). 检测、响应、服务. 中断源及其优先级的定义 中断向量表的使用 中断全过程. 检测、排队、响应、处理、返回.
E N D
第七章 中 断 系 统 课时数:3-4
第 七 章 主 要 内 容 • 中断控制方式的特点 • 中断系统的功能及相关概念 • 中断处理过程 • 与子程序调用的区别(P309) 一、中断的基本概念(P307) 二、 8086CPU的中断系统(P310) 三、8086系统中 INTR中断的处理(P316) 四、 80X86系列微机的硬中断控制逻辑(P326) 检测、响应、服务 • 中断源及其优先级的定义 • 中断向量表的使用 • 中断全过程 检测、排队、响应、处理、返回 • INTR中断接口电路的结构 • INTR中断响应周期 • INTR中断的优先级判决 • 用户中断服务子程序的装载
第 七 章 习 题 (P329) 2、 4~6 思考: 1、3 2005. 5. 23 交作业
中断请求 中断请求 启动 启动 中断服务子程序 中断响应 中断返回 中断响应 中断返回 CPU 启动 现行 主程序 中断控制方式的特点(P307) • 可以实现实时故障处理 • 可以实现CPU与外设及外设与外设之间的并行工作 CPU处理流程 非预料事件 中断服务程序 外部设备
中 断 系 统(P308) • 中断系统:计算机中实现中断功能的软、硬件的总称。中断系统一般包括CPU内部配置的中断机构、外设接口中设计的中断控制器及各类中断服务子程序。 • 中断源,中断类型号,中断向量 • 中断优先级,中断嵌套,中断屏蔽 • 断点,现场 中断系统的功能主要包括以下两个方面:能实现中断及中断返回;能进行优先级排队和嵌套处理。
中 断 嵌 套(P309) CPU执行流程 非预料事件1 中断服务程序1 中断服务程序2 非预料事件2 中断嵌套的条件: 1)中断服务子程序1执行过程中允许中断; 2)新到来的中断应比原中断的优先级高; 注:为保护主程序及各级中断服务程序的数据不被破坏,所有中断服务程序均应进行保护及恢复操作;
可屏蔽中断NMI 不可屏蔽中断INTR 外中断 (硬件中断) 内中断 (软件中断) 除法错中断(被0除) 单步中断 断点中断 溢出中断 8086系统中中断源及其优先级的定义 中断 • 8086系统中断源的定义(P310) • 8086系统中断优先级的定义(P312) 执行中断指令INT n、INTO等 其它可能自动产生的中断 异常 8086系统中规定中断源的优先级顺序为(优先权依次降低):被0除中断、INT n指令、INTO指令、NMI中断、INTR中断、单步中断。
CPU内部 RAM校验错 I/O校验错 电源故障 I N T R 中 断 接 口 IRQ0系统定时器 NMI中断接口 IRQ1键盘 IRQ2彩色/图形接口 IRQ3保留(串口) CPU内的中断控制逻辑 IRQ4串口 IRQ5保留(并口) IRQ6软盘 自动产生的 软件中断 用户调用的软件中断 IRQ7 并口 …… 除法错 断点 单步(TF) 溢出(OF) INT n
8086系统的中断向量表(P313) • 8086系统采用向量式中断, 8086系统中主存最低的1KB空间(000H ~ 3FFH)被用来存放各中断向量,这就是中断向量表。 • 中断向量表中内容分为256项,分别对应256个中断类型号;表中每一项为一个中断向量,占用4个字节,其中高两个字节存放段基址、低两个字节存放偏移量。 • 中断类型号n与对应的中断向量存放地址m之间的关系,即m=4*n。 • 中断索引过程:根据中断类型号找到中断向量的过程。
被0除中断 单步中断 NMI中断 …… …… ~ 00003H 00004H~00007H 0~4号为 8086CPU专用中断 00008H~0000BH 05H~3FH号包括 DOS及BIOS中断 000FCH~000FFH 中断类型号n=3FH 003FCH~ 40H~0FFH号为 用户可用中断
8086系统的中断全过程 (P313) 当前指令执行完毕 • 中断请求的检测 • 中断优先级的判决 • 中断响应(索引)过程 • 中断处理过程 • 中断返回过程 中断响应的3个基本条件 可用硬件或软件实现;8086CPU内部的中断优先级判断由硬件电路自动完成。 指CPU从确定响应目标到转到中断服务子程序入口的过程。这个过程是由CPU内部的硬件电路自动完成的,主要包括获取中断类型码,保护现场和断点,获取中断向量三个步骤。 中断服务子程序的执行过程 执行IRET指令的过程,包括断点恢复和现场恢复。该过程是由CPU自动完成的。
8086中断响应的三个基本条件 • 当前指令执行完毕:一般情况下,CPU总是在当前指令执行完毕并且没有更紧迫的任务时才能响应中断请求。 • 接受到中断请求信号:其隐含的意义是,中断请求信号要能够送到CPU,并可能需要维持直到CPU检测或响应。 • 允许中断:对INTR中断来说有两方面的含义,一是中断允许位IF被置1,二是没有更高级的中断正在被响应。
Y 内部中断? 中断优先级判决 N Y NMI中断? N Y Y 从总线上取中断类型号 INTR中断? IF=1? N N Y TF=1? 中断响应过程 N 保护现场:FLAG压栈 TEMP=TF;IF=0,TF=0 保护断点:CS、IP压栈 根据中断类型号查向量表 设置新CS、IP值,进入中断处理过程 恢复断点:CS、IP出栈 恢复现场:FLAG出栈 执行下一条指令 中断返回过程 结束当前指令 8086中断全过程 指令中的n 2 1
中断检测及优先级判断 中断响应,获取中断向量 保存CPU内部其它各寄存器,以便在中断服务子程序中使用这些寄存器而不致破坏原信息 开总中断(IF =1),以便在该中断服务期间仍然能响应更高级的中断请求,即允许中断嵌套 用户中断服务的具体处理过程 恢复CPU内部各寄存器内容 8086中断处理过程 中断处 用户编写 理过程 的服务程序 执行IRET语句,中断返回
端口译码 AB DB WR INTR INTA 数据缓冲 DB READY C P U 端口译码 外 设 控制端口 中断屏蔽触发器 Q D 中断请求触发器 Q D +5V R 8086系统中INTR中断接口电路的结构(P316) 优先级排队 why? • INTR接口电路需要完成的功能:能产生中断请求,能进行中断 屏蔽,能进行优先级管理,能提供中断类型号 • 8086响应某外设INTR中断的条件:P317(与P315比较)
INTR中断响应周期(P315) 8086CPU通过两个总线周期从接口电路获取最高优先级的INTR中断类型号。 • 8086在第一个总线周期的T2时刻发出有效的中断响应信号(/INTA),通知接口电路准备中断类型号; • 8086在第二个总线周期的T2时刻再次发出有效的中断响应信号(/INTA),并于T4时刻从DB获取中断类型号; 第一个总线周期 第二个总线周期 T1 T4 T1 T4 T2 T3 T2 T3 CLK INTA AD7~AD0 中断类型号
8086系统中INTR中断的优先级判决(P317) 一个系统中可能有很多外设,而CPU只有一个INTR引脚。在可能有多个外设同时发出中断请求信号的系统中,应该设置外设的优先级判断机制。 • 软件查询 • 硬件排队 • 可编程中断管理芯片 简单易修改,先查询的优先级别就高。但占用CPU时间,且中断源较多时响应慢。 (如中断优先权编码电路和雏菊花链式排队电路) 中断响应速度快,CPU利用率高;但成本高,且硬件一旦确定后中断源的优先级别不可更改。 (如Intel8259) 结合了软件判优和硬件判优的特点。
可由程序设置的中断允许寄存器 12345678 + … … … 由外设设置的 中断请求寄存器 12345678 INTR中断的软件判优法(P317) 设备优先级由软件查询流程确定。 至CPU的INTR引脚 • 流程及代码可见教材P318 • 考虑如何得到中断类型号?
可由程序设置的 中断允许寄存器 中断请求信号 + … 1 2 3 4 5 6 7 8 8-3编 码 器 A2 A1 A0 B2 B1 B0 比较器 … … 1 A>B 1 2 3 4 5 6 7 8 + 优先权寄存器 2 CPU 由外设设置的 中断请求寄存器 INTR中断硬件判优法—中断优先权编码电路(P319) 设备优先级由编码器连接方式确定。 至CPU的INTR引脚 优先权失效信号
可由程序设置的 中断允许寄存器 至CPU的INTR引脚 + … CPU的中断响应信号INTA 1 2 3 4 5 6 7 8 A1 A2 … 到设备1的中断响应信号输出 … B1 B2 1 2 3 4 5 6 7 8 到设备2的中断响应信号输出 … G1 由外设设置的 中断请求寄存器 到设备7的中断响应信号输出 到设备8的中断响应信号输出 G2 H2 H1 INTR中断硬件判优法—雏菊花链式排队电路(P320) 设备优先级由链式电路连接顺序确定。
利用可编程中断控制器8259A完成INTR中断判优(P459)利用可编程中断控制器8259A完成INTR中断判优(P459) • Intel 8259A的基本功能 • Intel8259A的应用 • 判断中断请求信号是否有效; • 进行优先级判别以确定是否将INT信号送给CPU ; • 在中断请求被响应后负责将中断类型号送给CPU; • 在CPU处理中断的过程中继续负责管理外部中断请求; • 一片8259管理8级中断,不增加其它任何电路时可用9片8259 级联构成64级的主从式中断系统; • 具中断判优逻辑,对任一级中断都可以单独屏蔽或允许; • 中断响应后,能将用户预置的中断类型号自动提供给CPU; • 可通过编程选择其工作方式(即可程控),包括设置优先 级、中断触发方式、中断响应方式、中断嵌套方式、中 断结束方式、总线连接方式等。
8086系统中用户中断服务子程序的装载(P321) 8086系统中,将用户中断服务子程序的入口地址放入中断向量表的相应位置的过程称为中断服务子程序的装载。通常在装载之前需先保存原中断向量: MOV AL, N ;使用DOS中断取中断向量 MOV AH, 35H INT 21H PUSH ES ;保存中断向量 PUSH BX 假设N为中断类型号,nseg为中断向量的段基址部分,noffset为中断向量的段内偏移量部分,则常用的装载方法有以下三种: • 借助DOS功能调用 • 直接使用MOV指令 • 定义符合要求的数据段
用户中断服务子程序的装载-1 …… PUSH AX PUSH BX PUSH DS PUSH DX POP DX POP DS POP BX POP AX …… ;AL中预置中断类型号 MOV AL, N MOV BX, nseg ;DS中预置段基址 MOV DS, BX MOV DX, noffset ;DX中预置偏移量 MOV AH, 25H INT 21H ;调用25H号DOS中断
段基址为0,令当前默认数据段与中断向量表重合段基址为0,令当前默认数据段与中断向量表重合 将偏移量放入(n*4)和(n*4+1)单元 将段基址放入(n*4+2)和(n*4+3)单元 用户中断服务子程序的装载-2 …… PUSH AX PUSH ES POP ES POP AX …… MOV AX, 0 MOV ES, AX MOV ES:[N*4], noffset MOV ES:[N*4+2], nseg
根据中断类型号确定中断向量存放的起始地址 将中断向量放入表中(注意偏移量在低地址端) 用户中断服务子程序的装载-3 VECTORDATA SEGMENT AT 0 ORG N*4 DW noffset, nseg …… VECTORDATA ENDS
置中断向量例 设某中断服务程序的类型号为40H,中断服务程序的入口地址为3500H:4830H。试用INT 21H功能置中断向量到中断向量表中. …… ;保存原中断向量 …… ;寄存器压栈 MOV AL, 40H ;设置新中断向量 MOV BX, 3500H MOV DS, BX MOV DX, 4830H MOV AH, 25H INT 21H …… ;寄存器压栈
X86系列微机的中断控制逻辑(P326) • 其中可供用户开发使用的只有INTR中断,而其中大部分也 已被系统使用(如键盘中断、串口中断等); • INTR中断由8259A管理,用户扩展外设只能使用IRQ9、 IRQ10、IRQ11、IRQ12和IRQ15等几个引脚。 • 用户需从硬、软件两个方面设计开发INTR中断接口。
PC机中用户INTR中断接口的设计(P329) +5V S R 送至ISA总线的IRQn引脚 D Q 外设发出的中断请求信号 CP CPU中断请求复位信号 CPU中断请求允许信号 • 软件需完成的功能: • 产生中断请求允许信号 • 产生中断请求复位信号 • 装载中断服务子程序 • 硬件需完成的功能: • 可产生稳定的中断请求信号IRQn • 可屏蔽该中断请求信号 • 可清除该中断请求信号