但实际时,由于你的主程序调滚如用和中断的调用可能同时发生,
这样可能会出现:
1)函数重入:变量、寄存器数值被改变,原来调用卜配的程序大弊启得不到正确的执行结果;
2)堆栈混乱。。。
用CALL调用子程序和用中断调用子程序区别为:发生时间不同、关系不同、系统不同。乱肢
一、发生时间不同
1、用CALL调用子程序:在主程序的调用指令(CALL)执行时发生主程序调用子程序过程,调用指令所在位置是已知的和固定的。
2、用中断调用子程序:中断过程发生的时间一般是随机的,CPU在执行某一主程序时受到中断源提出的中断申请,就发生中断过程。
二、关系不同
1、用CALL调用子程序:子程序完全为主程序服务,两者属于主从关系。主程物激序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。
2、用中断调用子程序:中断服务程序与子程序二者一般是无关的,两者是平行关系。
三、系统不同
1、用CALL调用子程序:主程序调用子程序的过程完全属于软件处理过程,不需要专门的硬件电路。
2、用中断调用子程序:中断处理系统是一个软、硬件结合的系统,需要专门的硬件电路才能完成中断处理的过程。哗蚂世
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)