指令系统控制程序转移类指令.ppt

上传人:wuy****n92 文档编号:54708260 上传时间:2022-10-29 格式:PPT 页数:34 大小:331KB
返回 下载 相关 举报
指令系统控制程序转移类指令.ppt_第1页
第1页 / 共34页
指令系统控制程序转移类指令.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《指令系统控制程序转移类指令.ppt》由会员分享,可在线阅读,更多相关《指令系统控制程序转移类指令.ppt(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、3.3.4 3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令包括以下类型:包括以下类型:无条件转移和条件转移无条件转移和条件转移相对转移和绝对转移相对转移和绝对转移长转移和短转移长转移和短转移调用与返回指令调用与返回指令重点、难点:重点、难点:“JMP、CJNE、DJNZ”指令。指令。3.3.4 3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令 短转移类指令:短转移类指令:AJMP addr11 AJMP addr11;先(先(PCPC)+2+2PCPC,后后addr11 addr11 PC100,(,(PC1511 )不

2、变不变程序转移范围:程序转移范围:2 2KBKB的程序存储器地址空间的程序存储器地址空间。2 2字节指令字节指令 l例:例:1030H:AJMP 0010000 0000B 问:转移的地址是多少?问:转移的地址是多少?解:解:addr=001 00 00 0000 B 先先(PC)+2=1030H+2=1032H=0001 0 000 0011 0010 B 后:后:(PC1511 )不变,不变,PC100=0001 0 001 00 00 0000 B=1100H 即执行该指令后,将转至地址为:即执行该指令后,将转至地址为:1100H处。处。3.3.4 3.3.4 控制程序转移类指令控制程序

3、转移类指令控制程序转移类指令控制程序转移类指令长转移指令长转移指令 LJMP addr16LJMP addr16 ;addr16addr16PCPC。3字节指令字节指令 指令中:第二字节装入指令中:第二字节装入PCPC的高的高8 8位,第三字节装入位,第三字节装入PCPC的低的低8 8位。位。程序转移范围:程序转移范围:6464KBKB的程序存储器地址空间。的程序存储器地址空间。例:例:1023 1023H H:LJMP 212AH LJMP 212AH(PCHPCH)=21H=21H,(,(PCLPCL)=2AH=2AH。机器码为:机器码为:02 21 202 21 2AHAH。3.3.4

4、3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令相对转移指令相对转移指令 SJMP rel SJMP rel ;先(先(PCPC)+2PC+2PC,后(后(PCPC)+rel PC+rel PC ;2字节指令字节指令 程序转移范围程序转移范围:256B.手工编程时,需计算偏移量手工编程时,需计算偏移量rel:rel机器码的相对偏移量,为机器码的相对偏移量,为8位补码。位补码。转移范围:转移范围:-128+127字节。字节。即:即:rel为正数时,范围为:为正数时,范围为:0+127(00H7FH)。)。rel为负数时,范围为:为负数时,范围为:-128-1(

5、80HFFH)。)。相对转移指令相对转移指令“SJMP relSJMP rel”例如:例如:0100H:SJMP rel设转移的地址为设转移的地址为0157H,则:则:rel=0157H-0100H-2=55H。故该指令可写成:。故该指令可写成:0100H:SJMP 55H 其机器码为:其机器码为:80H 55H正向跳转时:正向跳转时:rel目的地址源地址目的地址源地址-2 =地址差地址差-2。0157H反向跳转时:反向跳转时:rel目的地址源地址目的地址源地址-2补补 =-2补补-|地址差地址差|=FEH-|地址差地址差|例如例如:0100H:SJMP rel设程序转移的地址为:设程序转移的

6、地址为:00F8H,则地址偏移量则地址偏移量rel为:为:rel=FEH-|0100H-00F8H|=FEH-0008H=F6H。故该指令可写成:故该指令可写成:0100H:SJMP F6H 其机器码为:其机器码为:80H F6H00F8Hl编程时,可用编程时,可用标号标号代替转移目的地址,代替转移目的地址,rel 交给编译程序计交给编译程序计算。算。l例如:例如:SJMP NEXT NEXT:原地踏步指令的指令原地踏步指令的指令:HERE:SJMP HERE常写成:常写成:SJMP$l总结总结短转移类指令:短转移类指令:AJMP addr11AJMP addr11 长转移类指令:长转移类指令

7、:LJMP addr16LJMP addr16 相对转移指令:相对转移指令:SJMP relSJMP rel这三条指令,可理解成:这三条指令,可理解成:PCPC值改变,即跳转到一个标号处。值改变,即跳转到一个标号处。它们的区别:它们的区别:v跳转的范围不同(跳转的范围不同(2 2KBKB;64KB 64KB;-128-128+127+127 )。)。v指令构成不同。指令构成不同。AJMPAJMP、LJMPLJMP后跟的是后跟的是绝对地址绝对地址,而而SJMPSJMP后跟的是后跟的是相对地址相对地址。v指令长度不同(指令长度不同(2 2字节;字节;3 3字节;字节;2 2字节)。字节)。v 原则

8、上,所有用原则上,所有用SJMPSJMP或或AJMPAJMP的地方都可以用的地方都可以用LJMPLJMP来替代。来替代。均可用标号表示均可用标号表示3.3.4 3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令间接转移指令(散转指令)间接转移指令(散转指令)JMP A+DPTR JMP A+DPTR ;(;(A A)+(DPTRDPTR)PCPC。1字节指令字节指令 使用该指令前,应先给使用该指令前,应先给DPTRDPTR赋值,赋值,A A中的内容为无符号数。中的内容为无符号数。转移范围转移范围:256B.:256B.该指令多用于多分支程序结构中。该指令多用于

9、多分支程序结构中。P75.P75.例例3-113-11 根据累加器根据累加器A A中命令键的键值,设计命令健操作中命令键的键值,设计命令健操作程序入口跳转表。程序入口跳转表。例如:当(例如:当(A A)=2=2时,程序跳转到标号为时,程序跳转到标号为“XX2”2”的程序中。的程序中。3.3.4 3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令2.空操作空操作 NOP ;(;(PC)+1PC。1字节指令字节指令 3.条件转移类指令条件转移类指令条件转移指令是指在满足一定条件转移指令是指在满足一定条件条件时进行时进行相对转移相对转移,否则程序,否则程序继续执行继

10、续执行本指令的本指令的下一条指令。下一条指令。3.3.4 3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令判判A A内容是否为内容是否为0 0转移指令转移指令JZ relJZ rel ;(PCPC)+2+2PCPC。若若A=0A=0,则转移到(则转移到(PCPC)=(PCPC)+rel+rel;否则顺序执行。否则顺序执行。JNZ relJNZ rel ;(;(PCPC)+2PC+2PC。若若A0A0,则转移到(则转移到(PCPC)=(PCPC)+rel+rel ;否则顺序执行。;否则顺序执行。在编写汇编语言源程序时,可以直接写成:在编写汇编语言源程序时,可以

11、直接写成:JZ JZ 标号标号 ;即转移到;即转移到标号标号处。例如:处。例如:JZ LOOPJZ LOOP以上两条指令均为:2字节指令字节指令 判判判判A A A A内容是否为内容是否为内容是否为内容是否为0 0 0 0转移指令转移指令转移指令转移指令l例:例:MOV AMOV A,R0R0 JZ L1JZ L1 MOV R1MOV R1,#00H#00H AJMPAJMP L2L2 L1:L1:MOV R1MOV R1,#0FFH#0FFH L2:L2:SJMPSJMP L2L2 ENDEND 问:如果执行程序前(问:如果执行程序前(R0R0)=0=0,执行上述程序后,(执行上述程序后,(

12、R1R1)=?;?;若执行程若执行程序前(序前(R0R0)0 0,则(则(R1R1)=?。?。解:解:如果如果(R0R0)=0=0,结果结果(R1R1)=0FFH=0FFH;而若而若(R0R0)0 0,则结果是则结果是(R1R1)=00H=00H。3.3.4 3.3.4 控制程序转移类指令控制程序转移类指令控制程序转移类指令控制程序转移类指令比较比较(不相等)(不相等)转移指令转移指令 CJNE CJNE (目的字节),(源字节),目的字节),(源字节),rel rel ;3 3字节指令字节指令 CJNE ACJNE A,#data#data,rel rel CJNE ACJNE A,dire

13、ctdirect,relrel CJNE RnCJNE Rn,#data#data,relrel CJNE RiCJNE Ri,#data#data,relrel同样地,使用时,可以将同样地,使用时,可以将relrel理解成标号,即:理解成标号,即:CJNE ACJNE A,#data#data,标号标号CJNE ACJNE A,directdirect,标号标号CJNE RnCJNE Rn,#data#data,标号标号CJNE RiCJNE Ri,#data#data,标号标号比较比较比较比较(不相等)(不相等)(不相等)(不相等)转移指令转移指令转移指令转移指令 CJNE ACJNE A

14、,#data#data,relrel ;先(先(PCPC)+3+3PCPC 若若(A)#data,A)#data,则则(PC)+relPC)+relPC,PC,且且0 0CYCY;若若(A)#data,A)(direct),A)(direct),则则(PC)+relPC)+relPC,PC,且且0 0CYCY;若若(A)(direct),A)#data,Rn)#data,则则(PC)+relPC)+relPC,PC,且且0 0CYCY;若若(Rn)#data,Rn)#data,(Ri)#data,则则(PC)+relPC)+relPC,PC,且且0 0CYCY;若若(Ri)#data,(Ri)

15、10H,10H,10HR010H,则则R1=0AAHR1=0AAH;如果如果R010HR010H,则则R1=0FFHR1=0FFH。;如;如R0=10H,R0=10H,则不转移则不转移R1=00HR1=00H;如如CY=1CY=1即即 R010H,R010H,R010H,则转移则转移例:例:例:例:如图所示:和上各接有一只按键,要求它们分别按如图所示:和上各接有一只按键,要求它们分别按下时下时(P3.2=0P3.2=0或或P3.3=0),P3.3=0),分别使分别使P1P1口为口为0 0或或FFHFFH。试编写程序。试编写程序。思考题:思考题:思考题:思考题:如图所示,开关如图所示,开关K1K1和和K2K2未按下未按下时,两只发光二极管均不亮。当时,两只发光二极管均不亮。当按下按下K1K1时,使发光二极管时,使发光二极管LED1LED1亮亮,而发光二极管,而发光二极管LED2LED2不亮;当不亮;当按下按下K2K2时,时,LED2LED2亮亮而而LED1LED1不亮。不亮。试编写程序实现上述功能。试编写程序实现上述功能。本本 章章 完完

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com