但实际时,由于你的主程序调用和中断的调用可能同时发生,
这样可能会出现:
1)函数重入:变量、寄存器数值被改变,原来调用的程序得不到正确的执行结果;
2)堆栈混乱。。。
中断服务子程序不能直接调用,因为它们是特殊的程序,它们的功能是在 *** 作系统中运行,而不是在应用程序中运行。它们可以在 *** 作系统中执行特定的任务,比如处理系统中的中断,但是它们不能直接被应用程序调用。因此,如果要调用中断服务子程序,必须使用 *** 作系统提供的特殊接口,这些接口可以让应用程序调用中断服务子程序。一、主体不同
1、调用中断服务程序:可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的。
2、调用子程序:是指调用子程序的指令,包括调用指令(转子指令)和返回指令(返主指令)。
二、特点不同
1、调用中断服务程序:当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作。
2、调用子程序:子程序调用指令用于实现程序与程序之间的转移,与转移指令不同(转移指令用于实现同一程序内的转移)。子程序调用指令还可以进行嵌套调用,即可调用别的子程序,还可以实现递归调用。
三、方式不同
1、调用中断服务程序:保护被中断进程现场。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。
2、调用子程序:把常用的程序段编写成独立的子程序或过程,在需要时随时调用,调用子程序需要用到调用指令。
参考资料来源:百度百科-子程序调用指令
参考资料来源:百度百科-中断服务程序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)