1.按照中断请求的来源可以分为
○ 内部中断(完全在CPU内部实现)
§ 异常中断----异常事件引起的(掉电、除法、溢出等)
§ 软件中断----中断指令引起的(INT n---中断调用系统的DOS功能)
○ 外部中断
§ 可屏蔽中断----INTR引脚上输入的中断(高电平有效)。
□ IF=1表示开中断,CPU响应INTR中断
□ IF=0表示关中断,CPU不响应INTR中断
§ 非屏蔽中断----NMI中断(上升沿有效)
□ 只要有NMI请求,CPU就一定会响应中断
2.中断处理的过程
○ 中断请求
§ 边沿触发:适用于CPU可以及时响应的中断
□ NMI采用的就是边沿触发中断
§ 电平触发:适用于CPU不能及时响应的中断,所以需要中断源保持一段时间
□ INTR采用的是电平中断
□ 电平中断的请求信号应该一直保持到CPU响应中断为止;CPU响应中断后要及时撤除,避免引起多次响应
□ 外设的中断请求信号IRQ被锁存进中断请求寄存器中
□ 经过逻辑输入到INTR外部可屏蔽中断引脚
□ CPU响应中断之后会以此查询并行端口的中断状态,查询到哪个中断时就去响应哪个中断源的中断服务程序
□ 缺点:花费的时间较长,影响中断响应的实时性
□ 优点:线路简单、优先权安排灵活
® 中断控制器安排各中断源的优先级级别
® 核心思想:根据中断向量码(中断类型码)来确定中断源,每一个中断类型码都对应有一个中断服务程序入口
□ 链式判优
○ 中断响应
§ CPU响应中断的条件
□ 1.正在执行的指令的最后一个时钟周期执行结束
□ 2.CPU处于开中断状态也即IF=1(对于NMI则无此要求)
□ 3.当前没有发生复位(RESET)、保持(HOLD),因为此时CPU没有工作不可能响应中断请求;
□ 4.内部中断和非屏蔽中断请求(NMI),因为他们的优先级高于INTR,CPU会优先响应NMI
□ 5.若当前正在执行开中断STI、中断返回指令IRET,则他们执行完后再执行一条指令,CPU才可以相响应中断请求;
若对于前缀指令,LOCK、REP等,CPU会将他们和其后的一条指令看作是一个整体,然后待这条指令执行完之后再响应中断请求
§ 中断响应时,CPU会向中断源发出中断响应信号,同时会做如下工作
□ 保护硬件现场FLAGS
□ 保护断点(先压入CS,再压入IP)
□ 获得中断服务程序入口
○ 中断处理
§ 通过压栈,保护软件现场
§ 开中断,因为CPU在响应中断时会自动关中断(IF=0),为了实现中断嵌套,需要开中断
§ 执行中断处理程序
§ 关中断,在恢复现场的过程中不希望被打扰
§ 恢复软件现场
○ 中断返回
§ 弹出断点地址→先弹出IP、再弹出CS
§ 恢复硬件现场
§ 开中断
3. 8088的中断系统