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