中断(CPU被动模式)
概述
中断——外设随机地(指主程序运行到任何一条指令时)或程序预先安排产生中断请求信号,暂停CPU正在运行的程序,转入执行称为中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。
中断源——引起中断的事件
通常中断源有以下几种:
输入、输出设备: 如键盘、显示器和打印机等;
数据通道: 如磁带等;
实时控制过程中的各种参数;
故障源: 如掉电保护等;
控制系统的现场测试信号以及软件中断。
中断系统应具有以下功能:
能实现中断响应、中断服务和中断返回
能实现中断优先级排队
能实现中断嵌套
中断过程
一个完整的中断基本过程包括:中断请求、中断判优、中断响应、中断处理及中断返回等五个基本过程。
(1)中断请求
当某一外部中断源要求CPU中断时,首先要向CPU发出中断请求,该请求信号被存放在中断源接口电路的中断请求触发器中暂存,并通过INTR或NMI信号线引入CPU 。
(2)中断判优
由于中断请求是随机的,在某一瞬间有可能出现两个或两个以上中断源同时提出请求的情况。这时必须根据中断源的轻重缓急,给每个中断源确定一个中断级别—— 中断优先权 。
(3)中断响应
CPU每执行完一条指令后,查询是否有中断请求。当查询到有中断请求且此时CPU允许中断(即IF=1,开中断),CPU响应中断。
响应中断后系统做的工作:
①自动关中断;通过使IF清零来实现,如果有中断嵌套,则需通过 STI 手动打开中断
②保存FR和断点;
③形成中断入口地址。通过中断矢量,查询中断地址表实现。
(4)中断处理
执行中断服务程序
①中断服务开始要用压栈指令(PUSH)将要用到的寄存器内容压入堆栈,以便返回到主程序时能正确运行。——保护现场
②中断服务程序结束后,用POP指令把所保存的有关寄存器的内容从堆栈弹出,以便恢复到中断前的状态。——恢复现场
中断中堆栈的作用:堆栈的作用是保护断点和保护现场
(5)中断返回(IRET)
通常在中断返回前,要用指令开中断,以便再次响应中断,然后执行中断返回指令IRET。IRET指令具有弹出断点地址送IP和CS及恢复标志寄存器FR内容的功能。
(随机、被动)IRET:中断返回 | (主动)RET:子程序返回(段内) | (主动)RETF:子程序返回(段间) |
---|---|---|
弹出 IP、CS、FR | 弹出: IP | 弹出:IP、CS |
SP+6 | SP+2 | SP+4 |
中断优先权
1、软件查询方式(如果某个中断出问题,挨个查询,查到一个处理一个)


2、硬件优先权排队电路。
①简单硬件方式——菊花链法或链式优先权排队电路。

②专用硬件方式——可编程的中断控制器