1.长转移指令LJMP
长转移指令的功能是直接将指令中的操作数,即16位地址,装入PC。使程序无条件转移到指定的地址处执行。这条指令是一条可以在64 KB范围内转移的指令。该指令不影响标志位。
视频:LJMP指令调试
2.绝对转移指令AJMP
绝对转移指令的功能是将指令中提供的操作数,即11位地址,与PC当前值的高5位共同组成16位目标地址,程序无条件转向目标地址。由于转移目标地址的高5位与当前PC值的高5位相同,因此目标地址必须与当前转移指令的下一条指令的首地址在同一个2 KB区域(即11位地址所能表示的地址范围)内。
视频:AJMP指令调试
视频:SJMP指令调试
3.短转移指令SJMP(www.xing528.com)
短转移指令的功能是将指令中提供的操作数,即地址偏移量rel,加上PC当前值,得到转移目标地址,将程序无条件转向目标地址。
指令中的rel是一个用补码表示的8位有符号数,范围为-128~+127。因此SJMP所能实现的程序转移是双向的。rel如为正,则向后(即地址增大的方向)转移;rel如为负,则向前(即地址减小的方向)转移。
上述3条指令均为无条件转移指令。转移到目标地址的方式不同,允许转移的范围也不同。但在用户编写程序时,非常方便,只需在转移指令中直接写上要转向的目标地址标号并确定在允许的转移范围内就可以了。
4.变址转移指令JMP
变址转移指令采用变址寻址方式,将累加器A中的8位无符号数与16位数据指针相加,其和装入程序计数器PC,控制程序转向目标地址。这条指令不改变累加器A和数据指针DPTR中的内容,也不影响标志位。
这条指令通常用于散转程序的设计中,因此又称散转指令。在这条指令执行时,转移的目标地址不能通过指令本身直接计算得到,而是根据程序运行时累加器A及数据指针DPTR中的内容动态决定,这也是和前3条转移指令的主要区别。在实际应用中,常常将多分支程序的首地址装入DPTR中,由累加器A的内容动态选择其中的某一个分支实现程序转移。
微课:延时程序设计
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。