子程序与中断程序的区别 点击:0 | 回复:3



杯末停

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 365回
  • 年度积分:1
  • 历史总积分:828
  • 注册:2006年9月01日
发表于:2009-08-13 15:56:42
楼主

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

PS:
若按中断源来划分,则系统中的中断又可分为:硬件中断和软件中断。对于硬件中断,程序员不能控制它,它们基本上是随机产生的,而对于软件中断,程序员可通过指令INT和INTO来有目的安排它们的
硬件中断和软件中断的区别
区别有以下几点
1.软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的
2.软中断是由程序调用发生的,而硬中断是由外设引发的
3.硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会
等待较长时间,编写这两类的中断处理程序我感觉区别不太大
4. CALL调用子程序只需要保护断点,即该指令的下一条指令的地址(段内调用只保护IP,段间调用要保护CS和IP);
中断调用子程序不但要保护断点(即该指令的下一条指令的CS和IP),还要保护标志寄存器FLAGS。,也是要等中断程序完成后再回主程序执行下面的动作




flx1984

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 16回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2009年11月30日
发表于:2009-11-30 17:15:35
1楼

好的,谢谢,不过还的不太详细,没有例子啊 ,大虾你可以加个例子吗。

杯末停

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 365回
  • 年度积分:1
  • 历史总积分:828
  • 注册:2006年9月01日
发表于:2009-12-04 16:40:49
2楼

需要的话可以进入91109412VIGOR丰炜PLC技术论坛

到时发给你

songlei

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 77回
  • 年度积分:0
  • 历史总积分:488
  • 注册:2008年6月20日
发表于:2010-01-15 16:44:04
3楼

恩,如果说是要系统快速响应的话,就要避开输入的延时和程序扫描周期的影响,这样就要用到中断了。子程序的话一般是为了编程的简便,可以进行随时的或者多次的调用,可以简化程序的。

但是,需要注意无论是中断程序还是子程序,在使用定时器,及定位等应用指令时,一定要注意指令及程序的执行方式,防止误动作的产生。

欢迎大家加入QQ群:91109412一起交流使用。


相关主题

官方公众号

智造工程师