中断全过程指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程。
步骤
- 请求中断→响应中断→关闭中断
- 保留断点
- 引出中断服务程序
- 保护现场
- 开启中断
- 执行中断服务程序
- 关闭中断
- 恢复现场
- 打开中断→中断返回
注:
2.保存断点:保证中断程序执行完能够回来继续执行后面的程序,其实保存的是程序计数器
3.引出中断服务程序:其实就是读取我们要执行的程序的地址,以便一会去执行
4.保存现场:保存寄存器中的数据,以便回来执行的时候恢复数据。为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。
开中断和关中断:加锁
将CPU不响应更高级中断请求
在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应,因为CPU不能假定中断服务程序是可重入的。
如果在保存寄存器值时被中断了,那么另外的操作很可能就把寄存器改写了,现场无法恢复
10.中断返回
在中断服务子程序的最后要安排一条中断返回指令IRET,执行该指令,系统自动将堆栈内保存的IP/EIP和CS值弹出,从而恢复主程序断点处的地址值,同时还自动恢复标志寄存器FR或EFR的内容,使CPU转到被中断的程序中继续执行