控制转移类指.ppt
《控制转移类指.ppt》由会员分享,可在线阅读,更多相关《控制转移类指.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章MCS-51指令系统第3章 MCS-51指令系统 实训实训3 指令的应用指令的应用 3.1 简介简介 3.2 寻址方式寻址方式 3.3 指令系统指令系统 本章小结本章小结 习题习题3 第3章MCS-51指令系统 循环移位指令循环移位指令(4 4条)条)循环左移循环左移:RL ARL A 不影响标志位不影响标志位 带带CyCy循环左移循环左移:RLC ARLC A 影响影响Cy,P 循环右移:循环右移:RR ARR A 不影响标志位不影响标志位 带带CyCy循环右移循环右移:RRC ARRC A 影响影响Cy,P 第3章MCS-51指令系统 二进制数的特点:左移一位增大一倍,右移一二进制数
2、的特点:左移一位增大一倍,右移一位减少一半。位减少一半。在汇编语言程序中,通常用带在汇编语言程序中,通常用带CYCY(CY=0CY=0)循环循环左移实现乘左移实现乘2 2操作,通常用带操作,通常用带CYCY(CY=0CY=0)循环右移实循环右移实现除以现除以2 2操作。操作。第3章MCS-51指令系统例例3 3 某已知数存在某已知数存在R4R4中,试将其乘以中,试将其乘以2 2存在存在R3R3中,除以中,除以2 2存在存在R2R2中。中。编程如下:编程如下:CLR CCLR C MOV A MOV A,R4R4 RLC A RLC A MOV R3 MOV R3,A A CLR C CLR C
3、 MOV A MOV A,R4R4 RRC A RRC A MOV R2 MOV R2,A A 第3章MCS-51指令系统3.3.5 控制转移类指令控制转移类指令控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移类指令分为:无条件转移指令、条件转移指令及调用和返回指令。第3章MCS-51指令系统四四、控制转移类指令控制转移类指令第3章MCS-51指令系统三字节指令三字节指令机器码:机器码:02addr02addr15-815-8 addr addr7-07-0 无条件转移指令无条件转移指令(4条)条)长转移指令长转移指令 LJMP addr16 LJMP addr
4、16 ;addr;addr15150 0PCPC,转移范围:可以转移到转移范围:可以转移到16位地址所表示的整个位地址所表示的整个64K 程序存储区(程序存储区(ROM)。)。第3章MCS-51指令系统例例1:2000H:LJMP 3000H解:解:PC3000H,16位目标地址直接进入位目标地址直接进入PC。例3.11 假定在某程序中存在如下指令:NEXT:MOV A,#00H ;NEXT为指令的标号,代表该指令在;程序存储器中存放的地址,假定该 ;指令的存储地址为2000H请写出指令LJMP NEXT执行后PC的值。解:解:执行指令LJMP NEXT之后,PC=2000H,即程序从NEXT
5、标号所指向的指令开始执行。第3章MCS-51指令系统 短转移指令短转移指令 AJMP addr11AJMP addr11;PC+2PC;PC+2PC,addraddr10100 0PCPC10100 0,PCPC15151111不变不变双字节指令双字节指令机器码:机器码:a10a9a800001a7a6a0转移范围:转移范围:11位地址转移,转移范围为位地址转移,转移范围为PC2后后 的同一的同一2KB区域内。区域内。执行步骤:执行步骤:(1)产生当前)产生当前PC。PC2 PC (2)形成转移目标地址。形成转移目标地址。第3章MCS-51指令系统 相对转移指令相对转移指令 SJMP SJMP
6、 relrel ;PC+2PC,PC+relPC;PC+2PC,PC+relPC 双字节指令双字节指令 转移范围:当前转移范围:当前PC127B 128B 执行步骤:执行步骤:(1)形成当前)形成当前PC (2)形成转移目标地址,形成转移目标地址,PCrel PC rel(相对偏移量)相对偏移量):有符号数有符号数8位二进制数,位二进制数,正数程序向下转移,负数程序向上转移正数程序向下转移,负数程序向上转移。第3章MCS-51指令系统例例 4、2000H:SJMP 60H 5、2000H:SJMP 90H 6、2000H:SJMP 0FEH解解4:(1)当前)当前PCPC22000H22002
7、H (2)形成转移目标地址,形成转移目标地址,PCPCrel=2002H+60H=2062H,向向2000H后转移后转移 第3章MCS-51指令系统解解5:(1)产生当前)产生当前PC=PC+2=2000H+2=2002H (2)rel是带符号的补码,当是带符号的补码,当rel 80H(负数)负数)时,计算前应加上时,计算前应加上FF,即,即relFF90H(带符号扩展)带符号扩展)(3)形成转移目标地址,形成转移目标地址,PCPC+rel=2002+FF90H =1F92H,向,向2000H前转移前转移第3章MCS-51指令系统解解6:(1)产生当前)产生当前PC,PCPC22002H(2)
8、形成转移目标地址,形成转移目标地址,PCPCrel2002FFFEH2000H,程序在原地踏步。程序在原地踏步。常写为:常写为:SJMP$;$表示表示0FEH第3章MCS-51指令系统LJMPLJMP、AJMPAJMP、SJMPSJMP三条无条件转移指令的三条无条件转移指令的区别区别:转移范围不一样。转移范围不一样。LJMPLJMP转移范围是转移范围是64KB64KB;AJMPAJMP转移范围是与当前转移范围是与当前PCPC值同一值同一2KB2KB;SJMPSJMP转移范围是当前转移范围是当前PC-128BPC-128B+127B+127B。使用使用AJMPAJMP和和SJMPSJMP指令应注
9、意转移目标地址是否指令应注意转移目标地址是否在转移范围内,若超出范围,程序将出错。在转移范围内,若超出范围,程序将出错。指令字节不一样。指令字节不一样。LJMPLJMP是是3 3字节指令;字节指令;AJMPAJMP、SJMPSJMP是是2 2字节指字节指令。令。第3章MCS-51指令系统 间接转移指令间接转移指令(散转指令)(散转指令)JMP A+DPTRJMP A+DPTR;A+DPTRPC;A+DPTRPC 指令的目标地址与当前指令的目标地址与当前PC值无关,可以在程序值无关,可以在程序 运行中加以改变,完成程序的散转。运行中加以改变,完成程序的散转。第3章MCS-51指令系统例3.14
10、假定DPTR=2000H,指出当累加器A的内容分别为02H、04H、06H、08H时,执行指令JMP A+DPTR后,PC的值分别为多少。解:当累加器A=02H时,执行指令JMP A+DPTR后,PC=2000H+02H=2002H。当累加器A=04H时,执行指令JMP A+DPTR后,PC=2000H+04H=2004H。当累加器A=06H时,执行指令JMP A+DPTR后,PC=2000H+06H=2006H。当累加器A=08H时,执行指令JMP A+DPTR后,PC=2000H+08H=2008H。第3章MCS-51指令系统3、条件转移指令条件转移指令(1313条)条)条件转移指令根据判
11、断条件可分为:条件转移指令根据判断条件可分为:(1)判判A A转移转移 (2 2)比较不相等转移指令比较不相等转移指令 (3 3)减减1 1非非0 0转移转移 (4 4)判判C C转移转移(位指令)位指令)(5 5)判判bitbit转移转移(位位指令)指令)满足条件,则转移;满足条件,则转移;不满足条件,则程序顺序执行。不满足条件,则程序顺序执行。第3章MCS-51指令系统 A=0A=0转移指令转移指令:JZ JZ relrel ;PC+2PC,;PC+2PC,若若A=0,A=0,则则PC+relPC,PC+relPC,转移转移 若若A A 0,0,则程序顺序执行则程序顺序执行(1)判)判A
12、A转移指令转移指令(2 2条)条)A A 0 0转移指令转移指令:JNZ JNZ relrel ;PC+2PC,;PC+2PC,若若A A 0,0,则则PC+relPC,PC+relPC,转移转移 若若A=0,A=0,则程序顺序执行则程序顺序执行第3章MCS-51指令系统例例2 试编程实现:试编程实现:B中数据不断加中数据不断加1,加至,加至FF,则不断减则不断减1,减至,减至0,则不断加,则不断加1,往返不断循环。,往返不断循环。程序如下:GADD:INC BGADD:INC B MOV A,B MOV A,B CPL ACPL A JNZ GADD JNZ GADD GSUB:DEC B
13、GSUB:DEC B MOV A,B MOV A,B JZ GADD JZ GADD SJMP GSUB SJMP GSUB第3章MCS-51指令系统(2)比较转移指比较转移指令令形式形式:CJNE (目的操作数),(源操作数),目的操作数),(源操作数),rel功能功能:PC3 PC,目的操作数与源操作数进行比目的操作数与源操作数进行比 较,不相等转移。较,不相等转移。若若(目的操作数)(源操作数),则程序顺序执行,目的操作数)(源操作数),则程序顺序执行,且且Cy0 若(若(目的操作数)目的操作数)(源操作数),(源操作数),则则PC rel PC,转移,转移,且若且若(目的操作数)目的操
14、作数)(源操作数),则(源操作数),则 Cy0 若(若(目的操作数)目的操作数)(源操作数),则(源操作数),则 Cy1 第3章MCS-51指令系统流程示意图:流程示意图:目标操作数=源操作数(PC)+3 PC0 CyYN目标操作数源操作数(PC)+3+rel PC1 Cy(PC)+3+rel PC0 CyYN第3章MCS-51指令系统 CJNE CJNE A A,directdirect,rel,rel;PC+3PC,;PC+3PC,;若若A A=(=(directdirect),),则程序顺序执行则程序顺序执行,Cy=0Cy=0 ;若若A A(directdirect),),则则PC+PC
15、+relrelPCPC,转移转移 ;且若且若A A(directdirect),Cy=0;),Cy=0;若若A A(directdirect),Cy=1),Cy=1 CJNE CJNE A A,#data#data,rel,rel ;PC+3PC,;PC+3PC,;若若A A=datadata,则程序顺序执行则程序顺序执行,Cy=0Cy=0 ;若若A Adatadata,则则PC+PC+relrelPCPC,转移转移 ;且若且若A Adatadata,Cy=0;,Cy=0;若若A Adatadata,Cy=1,Cy=1 比较转移指令比较转移指令第3章MCS-51指令系统 CJNE CJNE R
16、nRn,#data#data,rel,rel;PC+3PC,;PC+3PC,;若若RnRn=datadata,则程序顺序执行则程序顺序执行,Cy=0Cy=0 ;若若RnRndatadata,则则PC+PC+relrelPCPC,转移转移 ;且若且若RnRndatadata,Cy,Cy=0;=0;若若RnRndatadata,Cy=1,Cy=1 CJNE CJNE RiRi,#data#data,rel,rel;PC+3PC,;PC+3PC,;若若(RiRi)=datadata,则程序顺序执行则程序顺序执行,Cy=0Cy=0 ;若若(Ri)Ri)datadata,则则PC+PC+relrelPC
17、PC,转移转移 ;且若且若(Ri)Ri)datadata,Cy,Cy=0;=0;若若(RiRi)datadata,Cy=1,Cy=1第3章MCS-51指令系统例例3 试编写程序,将内试编写程序,将内RAM20H2FH共共16个连续地址单元清零。个连续地址单元清零。编程如下:编程如下:CLR16:MOV R0,#20HCLR16:MOV R0,#20H CLR A CLR A CLOP:MOV R0,A CLOP:MOV R0,A INC R0 INC R0 CJNE R0,#30H,CLOP CJNE R0,#30H,CLOP SJMP$SJMP$第3章MCS-51指令系统(3)减减1 1非非
18、0 0转移指令转移指令(2 2条)条)DJNZ DJNZ directdirect,rel,rel;PC+3PC,(direct)-1direct;PC+3PC,(direct)-1direct 若若(direct)=0,(direct)=0,则程序顺序执行则程序顺序执行 若若(direct)(direct)0,0,则则PC+relPC,PC+relPC,转移转移 DJNZ DJNZ RnRn,rel,rel ;PC+2PC,Rn-1Rn,;PC+2PC,Rn-1Rn,若若RnRn=0,=0,则程序顺序执行则程序顺序执行 若若RnRn 0,0,则则PC+relPCPC+relPC,转移转移 第
19、3章MCS-51指令系统例4 例例4 试编写程序,将内试编写程序,将内RAM20H2FH共共16个连续地址单元清零。个连续地址单元清零。编程如下:编程如下:CLR16:MOV R0,#20HCLR16:MOV R0,#20H MOV R2,#16 MOV R2,#16 CLR A CLR ACLOP:MOV R0,ACLOP:MOV R0,A INC R0 INC R0 DJNZ R2,CLOP DJNZ R2,CLOP SJMP$SJMP$第3章MCS-51指令系统3.调用和返回指令调用和返回指令(5条条)1)绝对调用指令(1条)注意:该指令结果不影响程序状态字寄存器PSW。调用范围与AJM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制 转移
限制150内