×
单片机 > 单片机程序设计 > 详情

51单片机汇编语言子程序调用指令RET RETI

发布时间:2020-08-24 发布时间:
|

控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 


[3]. 子程序调用指令(1条)
子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。

LCALL  addr16 ; 长调用指令,可在64kB空间调用子程序。此时(PC)+ 3→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr16→(PC),即分别从堆栈中弹出调用子程序时压入的返回地址



ACALL  addr11 ; 绝对调用指令,可在2kB空间调用子程序,此时(PC)+ 2→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr11→(PC10-0)


上面这两条指令就是在主程序中调用子程序的。

RET  ; 子程序返回指令。此时(SP)→(PC15-8),(SP)- 1→(SP),(SP)→(PC7-0),(SP)- 1→(SP) 


子程序返回指令
子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了,即执行RET。


RETI  ; 中断返回指令,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的电子存包柜的软件设计