控制转移指令

控制/MCU

1877人已加入

描述

控制转移指令

控制转移类指令用于控制程序的走向,故其作用区间是程序存储器空间。利用具有16位地址的长调用、长转移指令可对64K程序存储器的任一地址单元进行访问,也可用具有11位地址的绝对调用和绝对转移指令,访问2K字节的空间。另外,还有在一页范围的短相对转移以及许多条件转移指令,这类指令一般不影响标志位,不面分别给予介绍。

1.无条件转移语句(4条)

LJMP addr16 AJMP addr11 SJMP rel JMP  @(A)+DPTR

    上述指令的功能是当程序执行完该指令时,程序就无条件地转移到指令所提供的地址上去。

    第一条指令称为长转移指令,指令提供16位目标地址,将指令中第二字节和第三字节地址码分别装入PC的高8位中,所以无条件转移的目标地址范围是64K字节空间。

    第二条指令称为绝对转移指令,指令提供11位目标地址,所以,无条件转移的目标地址范围是从下条指令开始的2K字节空间。

    第三条指令称为相对短转移指令,指令控制程序无条件的转向指定地址。该指令的rel是一个带符号的相对偏移量,范围为-128~+127。负数表示向后转移,正数表示向前转移。这条指令的优点是指令给出的是相对转移地址,不具体指出地址值,这样当程序地址发生变化时,只要相对地址不发生变化,该指令就不需作任何改动。在用汇编语言写程序时,rel是一个标号,由汇编程序在汇编过程中自动计算偏移地址。在手工汇编时,可用下式计算偏移地址:

    向后转移时:rel=FEH-(源、目的地址的绝对值)

    向前转移时:rel=(源、目的地址差的绝对值)-2

    第四条指令称为散转指令(又称为间接转移指令),该指令把累加器A中的8位无符号数与作为基址寄存器DPTR中的16位数据相加,所得的值送入PC作为转移的目的地址。该指令执行后不影响累加器A和数据指针DPTR中的原内容,也不影响任何标志位。这条指令的特点是其转移地址不是编程时确定的,而是在程序运行时动态决定的。因此,可以在DPTR中装入多条转移程序的首地址,而由累加器A中的内容来动态选择该时刻应转向那一条分支程序。

2.条件转移指令(8条)

1.JZ  rel 2.JNZ  rel
3.CJNEA,data,rel 4.CJNE  A,#data,rel

5. CJNE  Rn,#data,rel

6.CJNE  @Ri,data,rel

7.DJNZ   Rn,rel

8.DJNZ  data,rel

    上述指令执行满足某种特定条件的转移,其目标在以下一条指令的起始地址为中心的256个字节范围内(-128~+127)。

    第一条和第二条指令是判别累加器A中的内容是否为0来确定是顺序执行还是转移。

    第三条至第六条是比较转移指令,该指令通过比较前面两个操作数的大小,如果它们的值不相等则转移,相等则继续执行。指令执行后要影响进位位CY,若操作数1小于操作数2,则CY=1;若操作数1大于操作数2,则CY=0。

3.调用指程序及返回指令(4条)

1.LCALL  addr16 2.ACALL  addr11 3.RET 4.RETI

    在程序设计中,经常需要对某段程序反复执行,为了减少程序的编写以及浪费不必要的地址空间,于是引入了主程序和子程序的概念,通常把某一段需要反复调用的程序称为子程序,子程序的最后一条指令为返回主程序指令(RET),而对具有调用子程序功能的指令称为调用指令。

    第一条指令称为长调用指令,其与LJMP一样提供16位地址,可调用64K字节范围内的子程序。由于其为三字节指令,所以执行时首先(PC)+3,以获得下一条指令地址,并把此时的PC内容压入堆栈,作为返回地址,然后把地址addr16装入PC,转去执行子程序。

    第二条指令称为绝对调用指令,该指令提供11位目标地址,限制在2K字节范围内调用,由于是双字节指令,所以执行时(PC)+2以获得下一条指令的地址,然后把该地址压入堆栈作为返回地址。其操作码的形成与AJMP指令相同。

    第三条指令称为子程序返回指令,表示子程序结束需返回主程序,所以执行该指令时,分别从堆栈中弹出调用子程序时压入的返回地址。

    第四条指令称为中断返回指令,该指令的执行过程类似指令RET,但其还能恢复中断逻辑,RETI和RET决不能互换使用。

4.空操作指令(1条)

        NOP;

    空操作指令除了PC加1外,CPC不作任何操作,而转向下一条指令去执行。这条指令常用于产生一个机器周期的延时。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分