更新时间:2023-03-12 21:57
转移指令,相对于流水指令而说的。转移指令是指不按程序的语句流程执行的指令,如跳转指令,call指令、jmp指令等。
转移指令分为以下几类:
(1)绝对跳转指令
AJMP addr11 ; (PC)+2→PC, addr10~0→PC10~0
这是2KB寻址范围内的无条件转移指令,是绝对跳转。跳转的目的地址必须与AJMP的下一条指令的第一个字节在同一个2KB寻址范围内,这是因为跳转的目的地址与AJMP的下一条指令的第一个字节的高5位addr15~11相同。这条指令是为与MCS-48兼容而保留的指令,现在一般很少使用。
(2)相对跳转指令
SJMP rel ; (PC)+2→rel PC
这条指令执行的时候先将PC的内容加2,再加相对偏移量rel,计算出跳转目的地址。rel是一个带符号的字节数,在程序中用补码表示,其值范围为-128B~+127B,当rel为正数时表示正向跳转,为负数时表示负向跳转。
(3)长跳转指令
LJMP addr16 addr16 PC
这条指令执行时把16位操作数的高低8位分别装入PC的PCH和PCL,无条件地转向指定地址。跳转的目的地址可以在64KB程序存储器地址空间的任何地方,不影响任何标志位。
(4)间接跳转指令
JMP @A+DPTR
这条指令的功能是把累加器A中的8位无符号数与数据指针DPTR中的16位地址相加,相加形成的16位新地址送入PC。指令执行过程不改变累加器和数据指针的内容,也不影响标志位。
功能:以标志位的状态或者以标志位的逻辑运算结果作为转移依据,如果满足转移条件,则转到目标地址所指示的指令执行否则继续执行下一条指令。必须指出,条件转移指令转移地址的偏移量限制在-128~+127字节范围内,采用相对转移方式(相对转移指令是指跳转时以当前地址为基准加上相对偏移量进行跳转,一般是在本地址段内跳转。如果需要跳转到较远的地方如跳到另一个地址段,就需要加上跳转的目标段地址)。
可以控制程序的循环.
例如子程序调用和返回指令.
使计算机暂时挂起正在执行的进程而转去处理某事件.处理完后再恢复执行原进程的过程.