由于 CPU 随时都可能检测到中断信息,也就是说,CPU 随时都可能执行中断处理程序,所以中断处理程序必须一直存储在内存某段空间之中。而中断处理程序的入口地址,即中断向量,必须存储在对应的中断向量表表项中。
中断处理程序的编写方法和子程序的比较相似,下面是常规步骤:
(1)保存用到的寄存器
(2)处理中断
(3)恢复用到的寄存器
(4)用 iret 指令返回
iret 指令的功能用汇编语法描述为:
pop IP pop CS popf
iret 指令通常和硬件自动完成的中断过程配合使用。可以看到,在中断过程中,寄存器入栈的顺序是标志寄存器、CS、IP,而 iret 的出栈顺序是 IP、cs、标志寄存器,刚好和其相对应,实现了用执行中断处理程序前的 CPU 现场恢复标志寄存器和 CS、IP 的工作。iret 指令执行后,CPU 回到执行中断处理程序前的执行点继续执行程序。