《334 控制转移类指令 控制转移类指令主要以改变程序计数器》由会员分享,可在线阅读,更多相关《334 控制转移类指令 控制转移类指令主要以改变程序计数器(10页珍藏版)》请在金锄头文库上搜索。
1、第3章 AT89C51指令系统 3.3.4 控制转移类指令 控制转移类指令主要以改变程序计数器PC内容为目标,用来控制程序执行的流向。它主要分为以下几类,如表3-4所示。第3章 AT89C51指令系统 表3-4 控制转移类指令第3章 AT89C51指令系统 第3章 AT89C51指令系统 1无条件转移指令 无条件转移指令是指当程序执行到这条指令时,程序将无条件地转移到指令指向的地址单元取指运行。 (1) AJMP为短转移指令。 (2) LJMP为长转移指令。 (3) SJMP为相对转移指令。 (4) “JMP A+DPTR”为间接转移指令,用它可实现分支转移。 第3章 AT89C51指令系统
2、2有条件转移指令 有条件转移指令是指根据指令中给出的条件进行判断,若条件成立,则程序转向指定的目的地址执行,否则顺序执行程序。有条件转移指令的目标地址都在相对于该指令的下一条指令为-128+127的区域内。第3章 AT89C51指令系统 1) 累加器判零指令 JZ指令的功能是判断累加器A的值。若累加器A的值为0,则程序转移到目标地址;否则,顺序执行程序。 JNZ指令的功能是判断累加器A的值。若累加器A的值不为0,则程序转移到目标地址;否则,顺序执行程序。第3章 AT89C51指令系统 2) 比较转移指令 这组比较指令的功能是将目的操作数的内容和源操作数的内容进行比较。若不相等,则程序转移到目标
3、地址;否则,则顺序执行程序。 3) 减1条件转移指令 这组指令的功能是先将操作数的内容减1,然后判断结果。如果不为0,则转移到目标地址;否则,则顺序执行程序。 第3章 AT89C51指令系统 判位转移指令是条件转移指令,它以进位标志CY 或位地址bit的内容为转移的判断条件。JC rel;若( CY)=1,则PC=(PC)+2+ rel, ;否则, PC=(PC)+2JNC rel;若( CY)=0,则PC=(PC)+2+ rel, ;否则, PC=(PC)+2JB bit, rel;若( bit)=1,则PC=(PC)+3+ rel, ;否则, PC=(PC)+3JNB bit, rel;若
4、( bit)=0,则PC=(PC)+3+ rel, ;否则, PC=(PC)+3JBC bit, rel;若( bit)=1,则PC=(PC)+3+ rel, ;且( bit) 0,否则, PC=(PC)+3例3-40第3章 AT89C51指令系统 3空操作指令 执行这条指令除PC内容加1外,不影响任何标志位和其他寄存器。NOP指令常用来产生一个机器周期的延迟。 4调用与返回指令 在程序设计中,有些如延时、显示等具有一定功能的程序在一个系统中常常被多次使用,为了避免重复编写相同功能的程序,使程序编写和调试更加容易,通常把这些具有一定功能的经常被反复使用的程序段作为子程序。 第3章 AT89C51指令系统 1) 短调用指令 ACALL指令的目标地址是11位。在调用子程序时,该指令与AJMP指令类似,要求调用子程序的入口地址与ACALL指令后面指令的第一个字节在同一个2 K页面的程序存储器区域中。 2) 长调用指令 LCALL指令的目标地址是 16位。可在64 K程序存储器区域范围内调用任何一个子程序。 3) 返回指令 RET是子程序返回指令。它使CPU从子程序返回到调用指令的下一条指令。