1. 中断请求
CPU每条指令执行完之前,按中断优先级的顺序分别检查是否有软中断,NMI和单步中断,如果没有就继续执行下条指令,如果有则进入中断响应周期。
2. 中断响应
根据不同的中断源形成不同的中断类型码,再根据中断类型码在中断向量中寻找中断服务程序的入口地址,转入相应的中断处理程序。
(1)硬件自动完成
- 标志寄存器FLAGS的内容入栈;
① 保护单步标志TF;
② 清IF标志,在中断处理过程中禁止其他中断进入(关中断);
③ 清TF标志,使CPU不会以单步形式执行中断处理程序; - 保护断点,CS:IP入栈
总共有6个字节进栈。
(2)进入中断服务
如果在处理过程中又有NMI进入,NMI中断处理后会清楚CPU中锁存的NMI请求信号,使之加在CPU上的NMI只会被CPU识别一次;
执行用户编写的的中断服务程序,保护现场、中断处理和恢复现场程序。
3. 中断服务
CPU根据查询到的CS:IP执行中断服务程序。
4. 中断返回
CS:IP出栈,恢复断点,并恢复标志寄存器FLAGS的内容,返回主程序,继续执行下一条指令。