《中断及中断处理过程课件》由会员分享,可在线阅读,更多相关《中断及中断处理过程课件(24页珍藏版)》请在金锄头文库上搜索。
1、3-1 3-1 中断及中断处理过程中断及中断处理过程所谓中断是指某事件的发生引起所谓中断是指某事件的发生引起所谓中断是指某事件的发生引起所谓中断是指某事件的发生引起CPUCPU暂停当前程序的运行,暂停当前程序的运行,暂停当前程序的运行,暂停当前程序的运行,转入对所发生事件的处理,处理结束又回到原程序被打断处转入对所发生事件的处理,处理结束又回到原程序被打断处转入对所发生事件的处理,处理结束又回到原程序被打断处转入对所发生事件的处理,处理结束又回到原程序被打断处接着执行这样一个过程。接着执行这样一个过程。接着执行这样一个过程。接着执行这样一个过程。中断及中断处理过程3-1 3-1 中断及中断处理
2、过程中断及中断处理过程 中断源分类中断源分类中断源分类中断源分类 1 1、外中断源、外中断源、外中断源、外中断源 2 2、内部中断源、内部中断源、内部中断源、内部中断源 I/OI/O设备设备 数据通道数据通道 实时钟实时钟 故障源故障源 CPUCPU执行指令产生的异常执行指令产生的异常 执行执行INT INT 软件中断指令软件中断指令 1 1、外部中断、外部中断、外部中断、外部中断 2 2、内部中断、内部中断、内部中断、内部中断 软件中断软件中断 没有随机性,类似于普没有随机性,类似于普通子程序的调用通子程序的调用 硬件中断硬件中断 具有随机性具有随机性 分为分为 可屏蔽中断可屏蔽中断与与不可
3、屏蔽中不可屏蔽中断断两种两种 中断分类中断分类中断分类中断分类中断及中断处理过程3.1.2 3.1.2 中断处理过程中断处理过程中断请求中断请求中断请求中断请求中断优先级判定中断优先级判定中断优先级判定中断优先级判定中断响应中断响应中断响应中断响应中断处中断处中断处中断处理理理理中断返回中断返回中断返回中断返回 1 1、中断请求、中断请求、中断请求、中断请求 2 2、中断优先级判定、中断优先级判定、中断优先级判定、中断优先级判定多中断请求的优先级判定多中断请求的优先级判定多中断请求的优先级判定多中断请求的优先级判定实现多层中断嵌套实现多层中断嵌套实现多层中断嵌套实现多层中断嵌套信号形式应满足信
4、号形式应满足CPUCPU要求。要求。 中断请求信号应被有效地记录,以便中断请求信号应被有效地记录,以便CPUCPU能够检测到它。能够检测到它。一旦一旦CPUCPU对某中断源的请求提供了服对某中断源的请求提供了服务,则该中断源的请求信号应及时撤消。务,则该中断源的请求信号应及时撤消。中断及中断处理过程3.1.2 3.1.2 中断处理过程中断处理过程 3 3、中断响应、中断响应、中断响应、中断响应获得中断类型号获得中断类型号获得中断类型号获得中断类型号保护状态标志保护状态标志保护状态标志保护状态标志屏蔽新的屏蔽新的屏蔽新的屏蔽新的INTRINTR中断和单步中断中断和单步中断中断和单步中断中断和单步
5、中断 保存断点信息保存断点信息保存断点信息保存断点信息根据中断类型,获得中断服务程序的入口地址根据中断类型,获得中断服务程序的入口地址根据中断类型,获得中断服务程序的入口地址根据中断类型,获得中断服务程序的入口地址进入中断服务程序进入中断服务程序进入中断服务程序进入中断服务程序 CPUCPU状态字中状态字中状态字中状态字中IFIF1 1,开中断;开中断;开中断;开中断;IFIF0 0,关中断关中断关中断关中断 CPUCPU复位,复位,复位,复位,IFIF0 0,TFTF0 0;用;用;用;用STISTI开中断,开中断,开中断,开中断,CLICLI关中断关中断关中断关中断 CPUCPU响应中断后
6、,自动实现关中断,若要实现中断嵌套,在中响应中断后,自动实现关中断,若要实现中断嵌套,在中响应中断后,自动实现关中断,若要实现中断嵌套,在中响应中断后,自动实现关中断,若要实现中断嵌套,在中断服务程序中要用断服务程序中要用断服务程序中要用断服务程序中要用STISTI开中断开中断开中断开中断中断及中断处理过程图 1 微机系统中实现中断的基本模型 中断及中断处理过程图2 有中断产生的情况下CPU运行程序的轨迹 中断及中断处理过程3.1.2 3.1.2 中断处理过程中断处理过程 4 4、中断处理、中断处理、中断处理、中断处理保护现场保护现场保护现场保护现场开中断开中断开中断开中断中断服务中断服务中断
7、服务中断服务关中断关中断关中断关中断恢复现场恢复现场恢复现场恢复现场 中断处理程序中,最后应有中断处理程序中,最后应有中断处理程序中,最后应有中断处理程序中,最后应有IRETIRET指令指令指令指令 恢复断点信息恢复断点信息恢复断点信息恢复断点信息 恢复标志寄存器恢复标志寄存器恢复标志寄存器恢复标志寄存器FRFR 4 4、中断返回、中断返回、中断返回、中断返回中断及中断处理过程3.2 3.2 中断优先权中断优先权软件查询。软件查询。软件查询。软件查询。 硬件链式优先级排队电路。硬件链式优先级排队电路。硬件链式优先级排队电路。硬件链式优先级排队电路。硬件优先级编码比较电路。硬件优先级编码比较电路
8、。硬件优先级编码比较电路。硬件优先级编码比较电路。利用可编程中断控制器。利用可编程中断控制器。利用可编程中断控制器。利用可编程中断控制器。中断及中断处理过程3.2.1 3.2.1 软件查询软件查询中断及中断处理过程3.2.2 3.2.2 硬件排优硬件排优中断及中断处理过程2 2 可编程中断控制器可编程中断控制器中断优先权管理电路中断优先权管理电路中断优先权管理电路中断优先权管理电路 中断请求锁存器中断请求锁存器中断请求锁存器中断请求锁存器中断类型寄存器中断类型寄存器中断类型寄存器中断类型寄存器中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器当前中断服务寄存器当前中断服务寄存器当前中断服
9、务寄存器当前中断服务寄存器中断及中断处理过程3.3 80X863.3 80X86中断系统中断系统3.3.1 3.3.1 3.3.1 3.3.1 中断结构中断结构中断结构中断结构 8086(88) 8086(88)中断系统可以容纳最多中断系统可以容纳最多256256个中断源,个中断源,所有中断源统一编码,每个中断源用一个字节型编码所有中断源统一编码,每个中断源用一个字节型编码标识,它是标识,它是CPUCPU识别中断源的标记。识别中断源的标记。 256 256个中断源分为两大类:个中断源分为两大类: (1) (1)内部中断内部中断内部中断内部中断 由由由由CPUCPU内部事件及执行软中断指令产生。
10、已定义内部事件及执行软中断指令产生。已定义内部事件及执行软中断指令产生。已定义内部事件及执行软中断指令产生。已定义的内部中断有:的内部中断有:的内部中断有:的内部中断有: 除法错中断,除法错中断,除法错中断,除法错中断,0 0型中断。型中断。型中断。型中断。 单步中断,单步中断,单步中断,单步中断,1 1型中断型中断型中断型中断 断点中断,断点中断,断点中断,断点中断,3 3型中断,用于调试插入断点。型中断,用于调试插入断点。型中断,用于调试插入断点。型中断,用于调试插入断点。 溢出中断,溢出中断,溢出中断,溢出中断,4 4型中断,型中断,型中断,型中断,INTOINTO指令。指令。指令。指令
11、。 指令中断,指令中断,指令中断,指令中断,INT nINT n指令指令指令指令中断及中断处理过程 中断在处理过程中,中断在处理过程中,中断在处理过程中,中断在处理过程中,CPUCPUCPUCPU自动将标志自动将标志自动将标志自动将标志FRFRFRFR入栈,然入栈,然入栈,然入栈,然后清后清后清后清TFTFTFTF和和和和IFIFIFIF IF IF IF IF的值可以通过指令的值可以通过指令的值可以通过指令的值可以通过指令STISTISTISTI和指令和指令和指令和指令CLICLICLICLI改变改变改变改变 没有直接改变没有直接改变没有直接改变没有直接改变TFTFTFTF值的指令,需要编程
12、值的指令,需要编程值的指令,需要编程值的指令,需要编程 PUSHF PUSHF POP AX POP AX OR AX,0100H OR AX,0100H PUSH AX PUSH AX POPF POPF OF DF IF TF SF ZFAFPFCFFR:FR:注意:注意:注意:注意:中断及中断处理过程 (2) (2)外部中断外部中断外部中断外部中断3.3.1 3.3.1 3.3.1 3.3.1 中断结构中断结构中断结构中断结构由外部中断源产生对由外部中断源产生对由外部中断源产生对由外部中断源产生对CPUCPU的请求而引发的。的请求而引发的。的请求而引发的。的请求而引发的。8086(88)
13、8086(88)中断系统将外部中断源又分为两种。中断系统将外部中断源又分为两种。中断系统将外部中断源又分为两种。中断系统将外部中断源又分为两种。 非屏蔽中断。非屏蔽中断。非屏蔽中断。非屏蔽中断。 可屏蔽中断可屏蔽中断可屏蔽中断可屏蔽中断 2型型中断。当中断。当NMI引脚出现上升沿触发,表示有非引脚出现上升沿触发,表示有非屏蔽中断请求屏蔽中断请求 信号的有效高电平应持续信号的有效高电平应持续2个时钟周期以上个时钟周期以上 用来处理系统突发事件用来处理系统突发事件当当INTR引脚出现高电平,表示有可屏蔽中断请求引脚出现高电平,表示有可屏蔽中断请求 只有在只有在IF1时,时,CPU才响应此中断才响应
14、此中断 CPU响应后,会执行两个响应周期,分别送两个响应后,会执行两个响应周期,分别送两个INTA 负脉冲信号,以获得该中断源的中断类型码负脉冲信号,以获得该中断源的中断类型码中断及中断处理过程3.3.2 3.3.2 3.3.2 3.3.2 中断向量表中断向量表中断向量表中断向量表中断向量:中断向量:中断向量:中断向量:中断服务程序的入口地址。中断服务程序的入口地址。中断服务程序的入口地址。中断服务程序的入口地址。8086(88)8086(88)在内存的最低在内存的最低在内存的最低在内存的最低1K1K字节建了一个字节建了一个字节建了一个字节建了一个中断向量表中断向量表中断向量表中断向量表,用以
15、存放用以存放用以存放用以存放256256个中断类型的中断向量(中断服务程个中断类型的中断向量(中断服务程个中断类型的中断向量(中断服务程个中断类型的中断向量(中断服务程序的地址)序的地址)序的地址)序的地址)存放方法:存放方法:存放方法:存放方法:每个中断向量占每个中断向量占每个中断向量占每个中断向量占4 4个字节,前个字节,前个字节,前个字节,前2 2个字节是个字节是个字节是个字节是IPIP,后两个字节是,后两个字节是,后两个字节是,后两个字节是CSCS。按中断向量码的序号排列。按中断向量码的序号排列。按中断向量码的序号排列。按中断向量码的序号排列. .中断及中断处理过程 图7 中断向量表
16、中断向量地址指针中断向量地址指针中断向量地址指针中断向量地址指针4中断类型码中断类型码如:中断类型码为如:中断类型码为20H20H的中断的中断向量,存放在向量,存放在00000000:0080H0080H开开始的四个单元中。始的四个单元中。中断及中断处理过程1 1、绝对地址置入、绝对地址置入、绝对地址置入、绝对地址置入2 2、使用串指令置入、使用串指令置入、使用串指令置入、使用串指令置入3.3.3 3.3.3 3.3.3 3.3.3 中断向量表的建立中断向量表的建立中断向量表的建立中断向量表的建立中断服务程序的入口地址该怎么置入中断向量表中?中断服务程序的入口地址该怎么置入中断向量表中?中断服
17、务程序的入口地址该怎么置入中断向量表中?中断服务程序的入口地址该怎么置入中断向量表中?INT-TBL SEGMENT AT 0INT-TBL SEGMENT AT 0 ORG n4 ORG n4 DD INT-VCE DD INT-VCEINT-TBL ENDSINT-TBL ENDSINT-VCE PROC FARINT-VCE PROC FAR IRET IRETCLICLIMOV AX,0MOV AX,0MOV ES,0 MOV ES,0 ; ;置向量表段地址置向量表段地址置向量表段地址置向量表段地址MOV DI,n * 4 MOV DI,n * 4 ; ;置向量表偏移地址置向量表偏移地
18、址置向量表偏移地址置向量表偏移地址MOV AX,OFFSET INT-VCE MOV AX,OFFSET INT-VCE ; ;置中断服务程序偏移地址置中断服务程序偏移地址置中断服务程序偏移地址置中断服务程序偏移地址CLD CLD ; ;清除方向标志清除方向标志清除方向标志清除方向标志STOSWSTOSWMOV AX,SEG INT-VCE MOV AX,SEG INT-VCE ; ;置中断服务程序段地址置中断服务程序段地址置中断服务程序段地址置中断服务程序段地址STOSWSTOSWSTISTI中断及中断处理过程3.3.3 3.3.3 3.3.3 3.3.3 中断向量表的建立中断向量表的建立中
19、断向量表的建立中断向量表的建立3 3、使用、使用、使用、使用DOSDOS系统功能调用系统功能调用系统功能调用系统功能调用 INT 21HINT 21H1 1)使用)使用)使用)使用25H25H功能功能功能功能系统功能调用:系统功能调用: a a)把调用号放入)把调用号放入AHAH中,设置入口参数中,设置入口参数 b b)执行)执行INT 21HINT 21H25H25H功能:根据中断号更新中断服务程序的入口地址功能:根据中断号更新中断服务程序的入口地址 a a)ALAL中断号中断号 b b)DSDS:DXDX中断服务程序新的入口地址的段、偏移地址中断服务程序新的入口地址的段、偏移地址PUSH
20、DSPUSH DSMOV DX,SEG INT60H MOV DX,SEG INT60H ; ;置中断服务程序段地址置中断服务程序段地址置中断服务程序段地址置中断服务程序段地址MOV DS,DXMOV DS,DXMOV DX,OFFSET INT60H MOV DX,OFFSET INT60H ; ;置中断服务程序偏移地址置中断服务程序偏移地址置中断服务程序偏移地址置中断服务程序偏移地址MOV AL,60HMOV AL,60HMOV AH,25HMOV AH,25HINT 21HINT 21HPOP DSPOP DS中断及中断处理过程35H35H功能:查询指定中断号的中断服务程序入口地址功能:
21、查询指定中断号的中断服务程序入口地址 a a)ALAL中断号中断号 b b)执行)执行INT 21HINT 21H后入口地址的段地址放在后入口地址的段地址放在ESES中,偏移地址中,偏移地址放在放在BXBX中中 c c)可利用)可利用35H35H功能,在功能,在更新中断服务程序入口更新中断服务程序入口之前,保存之前,保存原有的中断服务程序入口原有的中断服务程序入口地址地址2 2)使用)使用)使用)使用35H35H功能功能功能功能3.3.3 3.3.3 3.3.3 3.3.3 中断向量表的建立中断向量表的建立中断向量表的建立中断向量表的建立3 3、使用、使用、使用、使用DOSDOS系统功能调用系
22、统功能调用系统功能调用系统功能调用 INT 21HINT 21HMOV AH,35H MOV AH,35H ; ;功能号置功能号置功能号置功能号置AHAHMOV AL,0 MOV AL,0 ; ;中断类型号置中断类型号置中断类型号置中断类型号置ALALINT 21HINT 21HMOV INTOSEG,ES MOV INTOSEG,ES ; ;保存原中断服务程序段基址保存原中断服务程序段基址保存原中断服务程序段基址保存原中断服务程序段基址MOV INTOFF,BX MOV INTOFF,BX ; ;保存原中断服务程序偏移基址保存原中断服务程序偏移基址保存原中断服务程序偏移基址保存原中断服务程序
23、偏移基址4 4、直接装入法、直接装入法、直接装入法、直接装入法中断及中断处理过程1 1、各类中断的优先权、各类中断的优先权、各类中断的优先权、各类中断的优先权3.3.4 3.3.4 3.3.4 3.3.4 中断响应过程中断响应过程中断响应过程中断响应过程 除法出错中断除法出错中断除法出错中断除法出错中断 溢出中断溢出中断溢出中断溢出中断 INT n INT n 中断中断中断中断 NMINMI INTR INTR中断中断中断中断 单步中断单步中断单步中断单步中断 图6 中断响应时CPU查询中断源的顺序 中断及中断处理过程2 2、内部中断响应过程、内部中断响应过程、内部中断响应过程、内部中断响应过
24、程3.3.4 3.3.4 3.3.4 3.3.4 中断响应过程中断响应过程中断响应过程中断响应过程获得中断类型号获得中断类型号获得中断类型号获得中断类型号保护状态标志保护状态标志保护状态标志保护状态标志屏蔽新的屏蔽新的屏蔽新的屏蔽新的INTRINTR中断和单步中断中断和单步中断中断和单步中断中断和单步中断保存断点信息保存断点信息保存断点信息保存断点信息根据中断类型,获得中断服务程序的入口地址根据中断类型,获得中断服务程序的入口地址根据中断类型,获得中断服务程序的入口地址根据中断类型,获得中断服务程序的入口地址进入中断服务程序进入中断服务程序进入中断服务程序进入中断服务程序 CPUCPU无需执行
25、响应周期去获取中断类型码无需执行响应周期去获取中断类型码无需执行响应周期去获取中断类型码无需执行响应周期去获取中断类型码 除单步中断外,内部中断无法用软件禁止除单步中断外,内部中断无法用软件禁止除单步中断外,内部中断无法用软件禁止除单步中断外,内部中断无法用软件禁止 内部中断没有随机性内部中断没有随机性内部中断没有随机性内部中断没有随机性中断及中断处理过程3 3、外部中断响应过程、外部中断响应过程、外部中断响应过程、外部中断响应过程3.3.4 3.3.4 3.3.4 3.3.4 中断响应过程中断响应过程中断响应过程中断响应过程 响应过程响应过程响应过程响应过程 同同同同 内部中断内部中断内部中
26、断内部中断1 1)非屏蔽中断响应过程)非屏蔽中断响应过程)非屏蔽中断响应过程)非屏蔽中断响应过程2) 2) 可屏蔽中断响应过程可屏蔽中断响应过程可屏蔽中断响应过程可屏蔽中断响应过程 不同点在于:需要两个响应周期,获取中断类型码不同点在于:需要两个响应周期,获取中断类型码不同点在于:需要两个响应周期,获取中断类型码不同点在于:需要两个响应周期,获取中断类型码中断及中断处理过程3 3、外部中断响应过程、外部中断响应过程、外部中断响应过程、外部中断响应过程3.3.4 3.3.4 3.3.4 3.3.4 中断响应过程中断响应过程中断响应过程中断响应过程 执行两个中断响应周期,获取中断类型号执行两个中断
27、响应周期,获取中断类型号执行两个中断响应周期,获取中断类型号执行两个中断响应周期,获取中断类型号 执行一个写总线周期,执行一个写总线周期,执行一个写总线周期,执行一个写总线周期,FRFR入栈,同时清入栈,同时清入栈,同时清入栈,同时清IFIF、TFTF 执行两个写总线周期,断点地址入栈执行两个写总线周期,断点地址入栈执行两个写总线周期,断点地址入栈执行两个写总线周期,断点地址入栈 执行两个读总线周期,将中断服务程序地址送到执行两个读总线周期,将中断服务程序地址送到执行两个读总线周期,将中断服务程序地址送到执行两个读总线周期,将中断服务程序地址送到IPIP、CSCS外部中断响应一共需要外部中断响应一共需要外部中断响应一共需要外部中断响应一共需要7 7个总线周期个总线周期个总线周期个总线周期中断及中断处理过程 图5 中断响应过程 中断及中断处理过程