经典汇编语言教程:8.2.3 中断返回指令

8.2.3 中断返回指令

当一个中断服务程序执行完毕时,CPU将恢复被中断的现场,返回到引起中断的程序中。为了实现此项功能,指令系统提供了一条专用的中断返回指令。该指令的格式如下:

IRET/IRETD

该指令执行的过程基本上是INT指令的逆过程,具体如下:
◆、从栈顶弹出内容送入IP;
◆、再从新栈顶弹出内容送入CS;
◆、再从新栈顶弹出内容送入标志寄存器;

对80386及其以后的CPU,指令IRETD从栈顶弹出32位内容送入EIP。

8.2.4 中断和子程序的比较

中断和子程序调用之间有其相似和不同之处。它们的工作过程非常相似,即:暂停当前程序的执行,转而执行另一程序段,当该程序段执行完时,CPU都自动恢复原程序的执行。

如图8.3所示。

图8.3 中断和子程序调用的工作过程

它们的主要差异有:

◆、子程序调用一定是程序员在编写源程序时事先安排好的,是可知的,而中断是由中断源根据自身的需要产生的,是不可预见的(用指令INT引起的中断除外);
◆、子程序调用是用CALL指令来实现的,但没有调用中断的指令,只有发出中断请求的事件(指令INT是发出内部中断信号,而不要理解为调用中断服务程序);
◆、子程序的返回指令是RET,而中断服务程序的返回指令是IRET/IRETD。
◆、在通常情况下,子程序是由应用系统的开发者编写的,而中断服务程序是由系统软件设计者编写的。

上页:上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号