在计算机执行程序的过程中,出现某些需要紧急处理的特殊情况或者特殊请求,cpu暂时终止现行程序。而转去对这些特殊情况处理,处理完毕后在返回到原程序的断点处。
工作流程
1.中断请求
中断源向cpu发送中断请求信号
2.中断响应
相应中断的条件,中断判优:多个中断源同时提出请求时,通过中断判优六级响应一个中断源
3.中断处理
中断隐指令;中断服务程序
关中断
如果程序处于【关中断】状态,就说明程序不会响应任何一个中断请求信号
【关中断】IF(Interrupt Flag)存在psw中
当IF=1表示开中断(允许中断)
当IF=0表示关中断(不允许中断)
当然还有一些是不可被关中断的信号
非屏蔽中断
关中断时也会响应(掉电)在强制关机,检测到掉电的时候,计算机就会自动记录当前的状态,这是不会被屏蔽的
可屏蔽中断
关中断时不会响应
中断请求标记
需要一个中断请求标记寄存器
中断判优-实现
软件实现
查询程序,通过软件实现较慢
硬件实现
硬件排队器,硬件实现较快
中断判优-优先级设置
1.硬件故障中断属于最高级,其次是软件中断
2.非屏蔽中断优于可屏蔽中断
3.DMA请求优于IO设备传送
4.高速设备优于低速设备
5.输入设备优于输出设备
6.实时设备优于普通设备
中断处理过程-中断隐指令
1.中断的事件导致了pc值会发生改变,让原本指向K的pc指向中断服务程序的入口
2.等中断事件处理完之后,中断服务程序把原本的值K+1放回到pc
1.关中断
再中断服务程序中,为了保护中断现场期间不被新的中断所打断,必须关中断,从而保证被中断的程序再中断服务程序执行完毕之后,能接着正确执行下去
2.保存断点
为了保证再中断服务程序执行完毕后能正确返回到原来的程序,必须将原来执行的程序的断点(pc)值保存起来,可以存入堆栈,也可以存入指定单元
3.引出中断服务程序
引出中断服务程序的实质,就是取出中断服务程序的入口地址,并传送给PC
中断处理过程-确定起始地址
确定起始地址有两种方法
软件查询法
硬件向量法(重点)
1.给每个中断请求编号 这个编号对应的指令JMP 200(无条件跳转)
我们把这个跳过去的地址200称为中断向量
由硬件(中断向量地址形成部件)产生向量地址(中断类型号)。再由向量地址找到入口地址
中断处理过程-中断服务程序
1.保护现场
保护通用寄存器的喝状态寄存器的内容(acc存储器的值),疑返回原程序后可以恢复cpu环境,可使用堆栈,也可以使用特定存储单元
2.中断服务
主体部分,通过程序控制需打印的字符代码送入打印机的缓冲存储器(中断服务有可能会修改acc寄存器的值)
3.恢复现场
通过出栈指令或者取数指令把之前保存的信息送回寄存器中(把原程序算到一半的ACC恢复原样)
4.中断返回
通过中断返回指令,返回到原程序断点处
前面学的这些,我们称为单重中断:执行中断服务程序时不响应新的中断请求。