单片机能否使用LJMP指令从主程序转入子程序或从子程序跳回主程序,为什么? 10
请问各位大神,单片机能否使用LJMP指令从主程序转入子程序或从子程序跳回主程序,为什么?谢谢啦!...
请问各位大神,单片机能否使用LJMP指令从主程序转入子程序或从子程序跳回主程序,为什么?谢谢啦!
展开
3个回答
展开全部
这个当然是能使用LJMP指令重主程序跳转到子程序,或从子程序跳回主程序,但一般是不允许这样使用LJMP指令的,很容易造成程序运行混乱。因为调用子程序保护现场要将当前的地址压入堆栈,子程序返回时,会弹出该地址赋值给PC指针。如果使用,必须满足以下条件:
1、跳出跳入成对出现,也就是说,从主程序用LJMP跳转到子程序,那么在子程序中的RET前,必须是用LJMP指令跳回。
2、不成对出现,但是如果子程序是LJMP跳转来的控制,那么在RET前,需要压入返回位置的地址。比如:
主程序:
.....
LJMP SUB01
........
CON: ;返回地址
......
SUB: ;子程序
....
SUB01: ;跳转到的地址
....
MOV DPTR,#CON ;返回前处理。
PUSH DPH
PUSH DPL
RET
1、跳出跳入成对出现,也就是说,从主程序用LJMP跳转到子程序,那么在子程序中的RET前,必须是用LJMP指令跳回。
2、不成对出现,但是如果子程序是LJMP跳转来的控制,那么在RET前,需要压入返回位置的地址。比如:
主程序:
.....
LJMP SUB01
........
CON: ;返回地址
......
SUB: ;子程序
....
SUB01: ;跳转到的地址
....
MOV DPTR,#CON ;返回前处理。
PUSH DPH
PUSH DPL
RET
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
这是一条无条件转移指令,而且是长转移,转移可达64K,已完全覆盖51单片机的程序空间,只要利用对应的标号,完全可以从主程序转入子程序或从子程序跳回主程序。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的,但要在相应跳转处设好标签
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询