- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十二讲:控制转移类指令
3.3.4 控制转移类指令 控制转移类指令主要以改变程序计数器PC内容为目标,用来控制程序执行的流向。它主要分为以下几类,如表3-4所示。 表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,则转移到目标地址;否则,则顺序执行程序。 3.空操作指令 执行这条指令除PC内容加1外,不影响任何标志位和其他寄存器。NOP指令常用来产生一个机器周期的延迟。 4.调用与返回指令 在程序设计中,有些如延时、显示等具有一定功能的程序在一个系统中常常被多次使用,为了避免重复编写相同功能的程序,使程序编写和调试更加容易,通常把这些具有一定功能的经常被反复使用的程序段作为子程序。 1) 短调用指令 ACALL指令的目标地址是11位。在调用子程序时,该指令与AJMP指令类似,要求调用子程序的入口地址与ACALL指令后面指令的第一个字节在同一个2 K页面的程序存储器区域中。 2) 长调用指令 LCALL指令的目标地址是 16位。可在64 K程序存储器区域范围内调用任何一个子程序。 3) 返回指令 RET是子程序返回指令。它使CPU从子程序返回到调用指令的下一条指令。 第3章 AT89C51指令系统 判位转移指令 是条件转移指令,它以进位标志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章 AT89C51指令系统
文档评论(0)