Skip to content

中断(CPU被动模式)

概述

中断——外设随机地(指主程序运行到任何一条指令时)或程序预先安排产生中断请求信号,暂停CPU正在运行的程序,转入执行称为中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。

中断源——引起中断的事件

  1. 通常中断源有以下几种:

    1. 输入、输出设备: 如键盘、显示器和打印机等;

    2. 数据通道: 如磁带等;

    3. 实时控制过程中的各种参数;

    4. 故障源: 如掉电保护等;

    5. 控制系统的现场测试信号以及软件中断。

      中断系统应具有以下功能:

      1. 能实现中断响应、中断服务和中断返回

      2. 能实现中断优先级排队

      3. 能实现中断嵌套

中断过程

一个完整的中断基本过程包括:中断请求、中断判优、中断响应、中断处理及中断返回等五个基本过程。

(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+6SP+2SP+4

中断优先权

1、软件查询方式(如果某个中断出问题,挨个查询,查到一个处理一个)

image-20231015222557554image-20231015222610945

2、硬件优先权排队电路。

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

image-20231015222657107

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