中断服务程序与普通子程序有哪些相同和不同之处???
相同点:都是从主函数转到子函数,子函数执行完后又返回主函数。
不同点:
一、执行方式不同
1、中断服务程序:中断函数是发生中断后,自动执行的,不需要主函数调用,是否执行,取决于相应的中断事件是否发生。
2、普通子程序:普通子函数要主函数调用才能执行。
二、使用情况不同
1、中断服务程序:中断函数在中断发生时,先进入中断入口地址,再通过中断入口地址处放置的一条无条件转移指令,使程序执行转向中断服务程序入口。
2、普通子程序:普通子函数调用时,直接进入函数入口地址。
三、定义方式不同
1、中断服务程序:中断服务程序用interrupt关键字来定义。
2、普通子程序:是一个大型程序中的某部分代码,由一个或多个语句块组成。
区别:
1、程序是否提前安排好:中断服务程序是随机的,而普通子程序是预先安排好的。
2、结束程序不同:中断服务子程序以RETI结束,而一般子程序以RET结束。
3、结束动作不同:中断服务子程序RETI除将断点弹回PC动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。一般子程序则无此项操作。
扩展资料:
当CPU正在处理内部数据时,会发生外部紧急情况,需要CPU暂停当前工作以处理紧急情况。返回到原来的中断地址以恢复原来的工作的过程称为中断。
组件实现这个函数被调用中断系统,应用CPU中断调用的请求源中断源,单片机的中断系统通常允许多个中断源,当多个中断源请求中断CPU的同时,有一个中断优先级的问题。通常,根据中断源的优先级,给予处理最紧急事件的中断请求源优先级,即最先响应最高级别的中断请求。
中断处理:
(1)保护中断的进程现场。为了使进程在中断处理后准确地返回到断点,系统必须保存当前处理器的程序状态字PSW、程序计数器PC等的值。
(2)分析中断的原因,go执行相应的中断处理程序。当多个中断请求同时发生时,来自最高优先级中断源的中断请求被处理。
(3)恢复中断的进程站点,CPU继续执行原来中断的进程。
参考资料来源:百度百科-中断服务程序
不同点:中断服务程序是随机的,而普通子程序是预先安排好的;中断服务子程序以reti结束,而一般子程序以ret结束。reti除将断点弹回pc动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。