51单片机汇编程序跳转问题,

51单片机汇编程序跳转问题,,第1张

不能跳转子程序或从一个子程序跳转到另一个子程序,这主要是牵涉到子程序的调用有现场保护也就是堆栈的问题,如果跳转到其他子程序,那么返回时就会破坏这个被保护的现场,出现一些未知的结果。

修改堆栈数据,令中断返回时,从堆栈d出的地址(修改的数据)刚好就是指定的子程序入口 地址。就实现了你的要求

例:

指定返回入口地址:

LOOP:

中断返回如下编程:

pop acc ;腾出返回位置

pop acc

mov dptr,#loop ;读取返回入口地址

push dpl ;低位在前,压入返回地址

push dph ;高位在后

reti;返回喽!

中断服务子程序,你指的的是哪部分的?如果是产生中断后,硬件自动跳转到中断服务入口处,执行的那个程序的话,必须加跳转。因为每个中断入口后仅分配给该中断服务程序8字节的指令空间,只能用于保护现场并跳转到真正的中断服务程序,执行完后用RET指令跳回这里,再用RETI指令跳回主程序。

当然,在真正的中断服务程序中也可以加跳转指令,而且跳转指令作用很多,可以用于多路分支程序和查表程序

以上就是关于51单片机汇编程序跳转问题,全部的内容,包括:51单片机汇编程序跳转问题,、单片机中断返回/跳转子程序、请问51单片机的中断服务子程序中能否加跳转指令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存