微机原理 f5-中断过程及优先级
微机原理
第五章
中断(***)
中断的概述:外设随机地向CPU发出中断请求,如果响应中断请求CPU会暂停正在运行的程序,去执行中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。
中断源—引起中断的事件
键盘、鼠标是中断方式传送数据
中断系统应具有以下功能(***)
- 能实现中断响应、中断服务和中断返回。
- 能实现中断优先级排队。(同时)
- 能实现中断嵌套。(不同时分先后)(优先级高的可以嵌入优先级低的,但是优先级低的不可以嵌入优先级高的)
中断过程(***)
一个完整的中断基本过程包括:中断请求、中断判优(优先级)、中断响应、中断处理及中断返回。
中断请求
当某一外部中断源要求CPU中断时,首先要向CPU发出中断请求,中断请求被放入中断请求寄存器中,并通过INTR(可屏蔽中断信号)或NMI(不可屏蔽中断信号)信号线引入CPU。
中断判优
由于中断请求是随机的,在某一瞬间有可能出现两个或两个以上同时提出请求的情况。这时需要给每个中断源判断优先级。
另一个作用能实现中断嵌套。
中断响应
CPU每执行完一条指令后,查询是否有中断请求。当查询到有中断请求且此时CPU允许中断(即IF=1,开中断)(INTR需要查询IF,NMI不需要)CPU响应中断。
响应中断后系统做的工作(中断一旦被响应):
-
自动关中断;IF=0 TF=0(自动)(IF可屏蔽中断、TF单步运行,调试标志)
- 保护FR和断点;(入栈保护)(FR状态寄存器)(断点:当前的CS和IP)
- 形成中断入口地址。通过中断矢量,查询中断地址表实现。(在保护好CS和 IP之后去寻找中断入口地址)
中断处理
图中为AX,BX的举例
执行中断服务开始要用PUSH压栈指令—保护现场;结束后要用POP指令弹出—恢复现场。
栈:先入后出,例如:PUSH AX PUSH BX PUSH CX;POP CX POP BX POP AX; 内层对应,外层对应。
中断返回
响应中断以后,自动关中断。
手动开中断的指令为:STI—SET IF
通常在中断返回前,要用指令开中断,以便再次响应中断,然后执行中断返回指令IRET。
IRET具有弹出断点地址送IP和CS及恢复标志寄存器FR内容的功能。
中断优先权
软件查询方式
INTR收到中断之后,使用指令逐个询问。(例指令查询是不是A申请的中断,如若是则执行A中断服务程序,否则询问下一个)
硬件优先权排队电路
简单硬件方式—菊花链法或链式优先权排队电路。
专用硬件方式(***)—可编程的中断控制器(8259A)