
准确辨别LJMP、AJMP、SJMP和JMP指令的区别
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本文章深入解析了MCS-51单片机中的四种跳转指令(LJMP、AJMP、SJMP及JMP)之间的区别与应用场合,帮助读者掌握其准确使用方法。
在单片机汇编语言中使用跳转指令需要注意一些特定的问题。MCS-51系列的控制转移类指令共有17条,可以分为无条件转移、条件转移、子程序调用与返回以及空操作等四种类别。其中,无条件转移包括LJMP(长跳转)、AJMP(绝对地址跳转)、SJMP(短距离相对跳转)和JMP(@A+DPTR)这四种指令。
1. **长转移指令 (LJMP)**
这条命令的功能是将目标地址addr16装入程序计数器PC,从而实现向该位置的无条件跳转。它不改变任何标志位,并且可以覆盖整个单片机内存(0000H—FFFFH),即支持在64KB范围内进行转移操作。LJMP指令为三字节双周期指令。
示例:LJMP F886H
2. **绝对地址跳转 (AJMP)**
这条命令是使用11位的addr11(a10—a0)作为目标地址,其格式由两部分组成,即操作码和一个指定的目标位置。该指令执行时首先会将PC加两次以获取下一条指令的位置,并随后结合当前高5位地址与指令中提供的低11位来确定最终的跳转目标位置。AJMP可以在2KB范围内向前或向后跳跃。
示例:MGH2001: AJMP addr11,其中,addr11为一个特定的目标地址。
3. **短距离相对跳转 (SJMP)**
这条指令用于执行程序计数器PC的加一操作两次,并将结果与rel(即目标位置相对于当前指令的位置差)相加形成新的目标地址。因此它是一个双字节,双周期的操作码格式为80H rel,其中80H表示SJMP指令本身;rel则指示从当前位置到跳转目的地的距离。
4. **变址寻址转移 (JMP @A+DPTR)**
这条命令使用当前累加器(A)的值与数据指针(DPTR)中的地址相加以确定目标位置,执行时会改变程序计数器PC的内容。这种类型的指令可以在256个存储单元内进行跳转。
总结来说,无条件转移指令包括LJMP、AJMP、SJMP和JMP(@A+DPTR),它们都通过修改程序计数器(PC)来实现控制流的改变。
全部评论 (0)


