51单片机汇编语言子程序调用指令RET RETI
控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,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代替
【51单片机汇编语言子程序调用指令RET RETI】
推荐阅读
- 单片机轻松入门之三:蜂鸣器
- 80c51单片机的中断响应过程
- 用单片机做一个计算器
- 51单片机12864打点程序
- 串行口异步通信单片机程序设计实例
- AVR单片机_学习ing—(十)、ATMEGA16的同步串行接口SPI—02
- 单片机EEPROM多字节读写操作时序
- 单片机控制洗衣机C程序设计
- 利用89C51单片机的P1口控制8个发光二极管LED编程
- 第二节:PIC16C5X系列单片机型号介绍及引脚介绍