区别:
1、程序是否提前安排好:中断服务程序是随机的,而普通子程序是预先安排好的。
2、结束程序不同:中断服务子程序以RETI结束,而一般子程序以RET结束。
3、结束动作不同:中断服务子程序RETI除将断点d回PC动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。一般子程序则无此项 *** 作。
扩展资料:
当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。
实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。
中断处理过程:
(1)保护被中断进程现场。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。
(2)分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。
(3)恢复被中断进程的现场,CPU继续执行原来被中断的进程。
参考资料来源:百度百科-中断服务程序
CALL调用子程序只需要保护断点,即该指令的下一条指令的地址(段内调用只保护IP,段间调用要保护CS和IP);
中断调用子程序不但要保护断点(即该指令的下一条指令的CS和IP),还要保护标志寄存器FLAGS。
相同点、均能中断主程序执行本程序,然后返回断点继续执行子程序
不同点
1中断服务程序入口地址是固定的,子程序调用户口地址是用户自己设定的
2中断服务子程序返回指令,除具有子程序返回指令所具有的全部功能之外,还有清除中断相应时被置位的优先级状态,开发较低中断和恢复中断逻辑等功能
3中断服务子程序在满足中断申请的条件下随时发生的,而子程序调用是用户主程序事先安排好的。
差别:
⑴ 中断请求信号可以由外部设备发出,是随机的;子程序调用却是由软件编排好的。
⑵ 中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。
⑶ 中断响应是受控的,其响应时间会受一些因素影响;子程序响应时间是固定的。
钟翼翔,哈哈!
这个问题异还好答,问题是相同点难啊!找不到哦~~~~
它与一般用户子程序的区别是:系统调用程序是在核心态(即管态)下执行,调用它们需要一个类似于硬件中断处理的中断处理机制来提供系统服务,而一般的子程序调用是在用户态(即目态)下执行的。
基本没有区别!都会在返回时恢复压栈的PC指针并继续执行程序。
中断处理程序实际上也可以看做是一个普通的子程序,只是它的调用是预先设定的地址入口,并且它的调用时由中断触发的;而子程序是我们人为地调用的。
但是中断子程序的返回有时要考虑对中断的处理(如开关中断允许、初始化数据-----比如计数器或者定时器的初始值处理等等)。
相同点:都是让CPU从主程序转去执行子程序,执行完毕又返回主程序。
不同点:中断服务程序是随机的,而普通子程序是预先安排好的;中断服务子程序以RETI结束,而一般子程序以RET结束。RETI除将断点d回PC动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。
以上就是关于中断服务子程序和普通子程序有什么区别全部的内容,包括:中断服务子程序和普通子程序有什么区别、用CALL调用子程序和用中断调用子程序有什么区别、简述子程序调用和执行中断服务程序的异同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)