8051中的程序分支组
在8051单片机中,逻辑组下有17条不同的指令。总共有46个操作码。这些指令不影响标志位,但是CJNE影响CY标志。在这些指令中,使用的是11位地址和16位地址。
在下表中,我们将以机器周期,操作码数量等形式查看助记符,长度,执行时间。
例子
这是LJMPaddr16的示例。LJMP代表跳远。它可以跳到符号位置标签。地址是由汇编程序根据label的值生成的。使用此指令,我们可以在程序中的任何位置跳转。
这是ACALLaddr11类型的指令。ACALL是绝对呼叫。使用该指令,它从符号位置SUBR调用子例程。在调用之前,它将程序计数器的值存储在堆栈的顶部。
此指令类似于SJMPrel.SJMP表示短跳转。这里的LABEL是由汇编程序生成的8位地址。使用此指令,我们可以停止8051中的程序。
该指令类似于JZrel指令。当A寄存器的值为00h时,只有它跳到LABEL,否则将被忽略。汇编器根据指令生成8位带符号位移。
这是返回指令。执行该程序时,将从堆栈顶部弹出程序计数器的下一个地址,并且SP的值减2。
这是中断返回。这也类似于RET指令。但是它也恢复了中断逻辑。因此,还原后,它可以接受相同优先级的其他中断。
这就像DJNZa8,相对。如果不为零,则表示减量和跳跃。因此,将端口P0的内容减1。减后的值不为00H时,发生分支指令。此处LABEL是一个带符号的8位数字。
这类似于CJNERn,#d8,相关指令。CJNE代表比较和跳转(如果不相等)。因此,这是比较和跳跃的综合说明。在此将R5的含量与90H进行比较。如果值不相同,则跳转到标签。LABEL是8位带符号的数字。
在执行ACALL或AJMP的过程中,我们可以认为程序存储器分为2K字节块。从16位地址开始,前5位是固定的。此外,可以将2K内存块划分为256个字节的页面。因此,我们需要3位来选择页面。
有三种无条件的跳转。SJMP,LJMP和AJMP,但两种无条件调用指令ACALL,LCALL。没有呼叫存在。