- 1、本文档共84页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 MCS-51单片机指令系统
控制转移类指令 4.控制转移类指令(17条) 控制程序转移类指令一般不影响PSW,包括以下类型: 无条件转移和条件转移 相对转移和绝对转移 长转移和短转移 调用与返回指令 控制转移类指令 A.无条件转移类指令(4条) 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP @A+DPTR 控制转移类指令 跳转的范围不同 转移范围 短转移类指令:AJMP addr11 2KB 长转移类指令:LJMP addr16 64KB 相对转移指令:SJMP rel -128~+127 指令构成不同 AJMP、LJMP后跟的是绝对地址, SJMP后跟的是相对地址。 指令长度不同 原则上,所有用SJMP或AJMP的地方都可以用LJMP来替代。 控制转移类指令 B.条件转移指令(8条) 条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。 1)判A内容是否为0转移指令(2条) JZ rel ;如果A=0则转移,否则顺序执行 JNZ rel ;如果A≠0,就转移。 转移到相对于当前PC值的8位移量的地址即: 新的PC值 = 当前PC + 偏移量rel 在编写汇编语言源程序时,可直接写成: JZ 标号 ;即转移到标号处 控制转移类指令 2)比较不等转移指令(4条) CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 此类指令的功能是将两个操作数比较,如果两者相等,就顺序执行,如果不相等,就转移。同样地,使用时我们可以将rel理解成标号,即: CJNE A,#data,标号 CJNE A,direct,标号 控制转移类指令 CJNE Rn,#data,标号 CJNE @Ri,#data,标号 利用这些指令,可判断两数是否相等。 但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位)来反映哪个数大,哪个数小。 如果前面的数大,则CY=0,否则CY=1。 因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小。 控制转移类指令 举例:编程实现下列功能: 如果R0=10H,则R1=00H 如果R010H,则R1=0AAH 如果R010H,则R1=0FFH MOV A,R0 CJNE A,#10H,L1 MOV R1,#0 ;如R0=10H,不转移,R1=00H AJMP L3 L1: JC L2 ;如CY=1即 R010H,则转移 MOV R1,#0AAH ;CY=0即 R010H,则转移 AJMP L3 L2: MOV R1,#0FFH L3:SJMP L3 控制转移类指令 3)减1不为0转移指令(2条) DJNZ Rn,rel DJNZ direct,rel DJNZ指令的执行过程是这样的:它将第一个参数中的值减1,然后看这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移到第二个参数所指定的地方去。 例:DJNZ 10H,LOOP ... LOOP: ... 控制转移类指令 例: MOV 23H,#0AH CLR A LOOP: ADD A,23H DJNZ 23H,LOOP SJMP $ 上述程序段的执行过程是:将23H单元中的数连续相加,存至A中,每加一次,23H单元中的数值减1,直至减到0,共加(23H)次。 控制转移类指令 4)调用与返回指令(4条) 调用指令(2条) LCALL addr16 ;长调用指令(3字节) ACALL addr11 ;短调用指令(2字节) 上面两条指令都是在主程序中调用子程序。两者的区别:对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的2KB存储区之内。 控制转移类指令 使用时可以用下列指令来调用子程序: LCALL 标号 ;标号表示子程序首地址 ACALL 标号 返回指令(2条) 子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。两者不能互换使用。 RET ;子程序返回指令 RETI ;中断子程序返回指令 控制转移类指令 RET指令的执行过程是:堆栈栈顶内容(2字节,调用时保存的当前PC值)弹出给PC,实现返回。 RETI指令除了
您可能关注的文档
- 第四周 金属常见腐蚀形态及防护措施.ppt
- 第四章 设施选址及布置 (第五 六章).ppt
- 第四章 交货时间与地点.ppt
- 第四章 位置线及船位理论.ppt
- 第四章 仪表及指示灯系统(第1课).ppt
- 第四章 凝聚与絮凝.ppt
- 第四章 最小拍控制及纯滞后补偿.ppt
- 第四章 显示设备的校准及特性化.ppt
- 第四章 汇款与托收(金).ppt
- 第四章 法律责任及法律诉讼.ppt
- 国有企业党支部书记2024年组织生活会个人“四个带头”对照检查材料范文.docx
- 2024年党员干部民主生活会、组织生活会对照检查材料(四个带头)参考范文2篇.docx
- 2024年度组织生活会和民主评议党员大会实施方案参考范文(含:5个附件表格).docx
- 国有企业党支部书记组织生活会个人对照检查材料(四个带头)供参考.docx
- 浙教版9年级上册数学全册教学课件(2021年11月修订).pptx
- 苏教版8年级上册数学全册教学课件(2021年10月修订).pptx
- 比师大版数学4年级下册全册教学课件.pptx
- 冀教版5年级上册数学全册教学课件.pptx
- 办公室普通党员2024年组织生活会个人对照检查发言材料供参考.docx
- 领导班子成员2025年组织生活会“四个带头”对照检查材料范文.docx
文档评论(0)