进入中断服务子程序时,SP怎么变化

进入中断服务子程序时,SP怎么变化,第1张

中断服务程序执行完毕后返回原程序,恢复堆栈中保存的断点地址CS:IP,以及标志寄存器。

中断返回指令IRET实现从中断服务程序返回原程序,整个过程sp一共加6,其过程如下:

●pc出栈恢复:IP←SS:[SP],SP←SP+2;CS←SS:[SP],SP←SP+2

●标志寄存器出栈恢复:FLAGS←SS:[SP],SP←SP+2

相同点:都是从主函数转到子函数,子函数执行完后又返回主函数。

不同点:

一、执行方式不同

1、中断服务程序:中断函数是发生中断后,自动执行的,不需要主函数调用,是否执行,取决于相应的中断事件是否发生。

2、普通子程序:普通子函数要主函数调用才能执行。

二、使用情况不同

1、中断服务程序:中断函数在中断发生时,先进入中断入口地址,再通过中断入口地址处放置的一条无条件转移指令,使程序执行转向中断服务程序入口。

2、普通子程序:普通子函数调用时,直接进入函数入口地址。

三、定义方式不同

1、中断服务程序:中断服务程序用interrupt关键字来定义。

2、普通子程序:是一个大型程序中的某部分代码,由一个或多个语句块组成。

1子程序调用是预先安排好的,程序中断是随机发生的;

2调用子程序,是为主程序服务的,而中断程序与主程序的程序毫无关系;

3子程序是由调用指令给出目标地址,中断是通过隐指令获得中断服务程序的入口地址

中断服务程序 调用子程

序随机产生的 程序中事先安排好的

保护断点、保护现场 只保护断点

为外设服务和处理各种事件 为主程序服务

相同点:都是让cpu从主程序转去执行子程序,执行完毕又返回主程序。

不同点:中断服务程序是随机的,而普通子程序是预先安排好的;中断服务子程序以reti结束,而一般子程序以ret结束。reti除将断点d回pc动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应。

以上就是关于进入中断服务子程序时,SP怎么变化全部的内容,包括:进入中断服务子程序时,SP怎么变化、中断服务程序与普通子程序有哪些相同和不同之处、调用中断服务程序和调用子程序有何区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9279376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存