《控制转移类指令》PPT课件.ppt_第1页
《控制转移类指令》PPT课件.ppt_第2页
《控制转移类指令》PPT课件.ppt_第3页
《控制转移类指令》PPT课件.ppt_第4页
《控制转移类指令》PPT课件.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 MCS-51指令系统,实训3 指令的应用 3.1 简介 3.2 寻址方式 3.3 指令系统 本章小结 习题3, 循环移位指令(4条), 循环左移:RL A 不影响标志位, 带Cy循环左移:RLC A 影响Cy,P, 循环右移:RR A 不影响标志位, 带Cy循环右移:RRC A 影响Cy,P,二进制数的特点:左移一位增大一倍,右移一位减少一半。 在汇编语言程序中,通常用带CY(CY=0)循环左移实现乘2操作,通常用带CY(CY=0)循环右移实现除以2操作。,例3 某已知数存在R4中,试将其乘以2存在R3中,除以2存在R2中。,编程如下: CLR C MOV A,R4 RLC A MOV R3,A CLR C MOV A,R4 RRC A MOV R2,A,3.3.5 控制转移类指令 控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移类指令分为:无条件转移指令、条件转移指令及调用和返回指令。,四、控制转移类指令,三字节指令 机器码:02addr15-8 addr7-0, 无条件转移指令(4条), 长转移指令 LJMP addr16 ; addr150PC,,转移范围:可以转移到16位地址所表示的整个64K 程序存储区( ROM)。,例1: 2000H:LJMP 3000H 解:PC3000H,16位目标地址直接进入PC。,例3.11 假定在某程序中存在如下指令: NEXT: MOV A,#00H ;NEXT为指令的标号,代表该指令在 ;程序存储器中存放的地址,假定该 ;指令的存储地址为2000H 请写出指令LJMP NEXT执行后PC的值。 解:执行指令LJMP NEXT之后,PC=2000H,即程序从NEXT标号所指向的指令开始执行。, 短转移指令 AJMP addr11 ; PC+2PC, addr100PC100, PC1511不变,双字节指令 机器码:a10a9a800001a7a6a0 转移范围:11位地址转移,转移范围为PC2后 的同一2KB区域内。 执行步骤:(1)产生当前PC。PC2 PC (2)形成转移目标地址。, 相对转移指令 SJMP rel ;PC+2PC,PC+relPC,双字节指令 转移范围:当前PC127B 128B 执行步骤: (1)形成当前PC (2)形成转移目标地址,PCrel PC rel(相对偏移量):有符号数8位二进制数, 正数程序向下转移,负数程序向上转移。,例 4、2000H:SJMP 60H 5、2000H:SJMP 90H 6、2000H:SJMP 0FEH 解4: (1)当前PCPC22000H22002H (2)形成转移目标地址, PCPCrel=2002H+60H=2062H, 向2000H后转移,解5:(1)产生当前PC=PC+2=2000H+2=2002H (2)rel是带符号的补码,当rel80H(负数) 时,计算前应加上FF,即relFF90H(带符号扩展) ( 3)形成转移目标地址, PCPC+rel=2002+FF90H =1F92H,向2000H前转移,解6: (1)产生当前PC,PCPC22002H (2)形成转移目标地址, PCPCrel2002FFFEH2000H, 程序在原地踏步。 常写为:SJMP $; $表示0FEH,LJMP、AJMP、SJMP三条无条件转移指令的区别:, 转移范围不一样。 LJMP转移范围是64KB; AJMP转移范围是与当前PC值同一2KB; SJMP转移范围是当前PC-128B+127B。 使用AJMP和SJMP指令应注意转移目标地址是否在转移范围内,若超出范围,程序将出错。, 指令字节不一样。 LJMP是3字节指令; AJMP、SJMP是2字节指令。, 间接转移指令(散转指令) JMP A+DPTR ;A+DPTRPC 指令的目标地址与当前PC值无关,可以在程序 运行中加以改变,完成程序的散转。,例3.14 假定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、 条件转移指令(13条),条件转移指令根据判断条件可分为: (1) 判A转移 (2)比较不相等转移指令 (3)减1非0转移 (4)判C转移(位指令) (5)判bit转移(位指令) 满足条件,则转移; 不满足条件,则程序顺序执行。, A=0转移指令: JZ rel ; PC+2PC, 若A=0,则PC+relPC,转移 若A0,则程序顺序执行,(1)判A转移指令(2条), A0转移指令: JNZ rel ; PC+2PC, 若A0,则PC+relPC,转移 若A=0,则程序顺序执行,例2 试编程实现:B中数据不断加1,加至FF,则不断减1,减至0,则不断加1,往返不断循环。,程序如下: GADD: INC B MOV A,B CPL A JNZ GADD GSUB: DEC B MOV A , B JZ GADD SJMP GSUB,(2) 比较转移指令,形式:CJNE (目的操作数),(源操作数),rel,功能:PC3 PC,目的操作数与源操作数进行比 较,不相等转移。 若(目的操作数)(源操作数),则程序顺序执行, 且Cy0 若(目的操作数)(源操作数), 则PC rel PC,转移, 且若(目的操作数)(源操作数),则 Cy0 若(目的操作数)(源操作数),则 Cy1,流程示意图:,目标操作数=源操作数,(PC)+3 PC 0 Cy,Y,N,目标操作数源操作数,(PC)+3+rel PC 1 Cy,(PC)+3+rel PC 0 Cy,Y,N, CJNE A,direct,rel;PC+3PC, ;若A=(direct),则程序顺序执行,Cy=0 ;若A(direct),则PC+relPC,转移 ;且若A(direct),Cy=0;若A(direct),Cy=1, CJNE A,#data,rel ;PC+3PC, ;若A=data,则程序顺序执行,Cy=0 ;若Adata,则PC+relPC,转移 ;且若Adata,Cy=0;若Adata,Cy=1, 比较转移指令, CJNE Rn,#data,rel;PC+3PC, ;若Rn=data,则程序顺序执行, Cy=0 ;若Rndata,则PC+relPC,转移 ;且若Rndata,Cy=0;若Rndata,Cy=1 CJNE Ri,#data,rel;PC+3PC, ;若(Ri)=data,则程序顺序执行, Cy=0 ;若(Ri)data,则PC+relPC,转移 ;且若(Ri)data,Cy=0;若(Ri)data,Cy=1,例3 试编写程序,将内RAM20H2FH共16个连续地址单元清零。,编程如下: CLR16: MOV R0 ,#20H CLR A CLOP: MOV R0, A INC R0 CJNE R0 , #30H , CLOP SJMP $,(3) 减1非0转移指令(2条), DJNZ direct,rel;PC+3PC,(direct)-1direct 若(direct)=0,则程序顺序执行 若(direct)0,则PC+relPC,转移, DJNZ Rn,rel ;PC+2PC,Rn-1Rn, 若Rn=0,则程序顺序执行 若Rn0,则PC+relPC,转移,例4,例4 试编写程序,将内RAM20H2FH共16个连续地址单元清零。,编程如下: CLR16: MOV R0 ,#20H MOV R2, #16 CLR A CLOP: MOV R0 , A INC R0 DJNZ R2 , CLOP SJMP $,3. 调用和返回指令(5条) 1) 绝对调用指令(1条),注意: 该指令结果不影响程序状态字寄存器PSW。 调用范围与AJMP指令相同。,2) 长调用指令(1条),注意: 该指令结果不影响程序状态字寄存器PSW。 调用范围与LJMP指令相同。,3) 返回指令(2条),注意:该指令结果不影响程序状态字寄存器PSW。,2、 空操作指令(1条),NOP为单机周指令,在时间上占用一个机器周期,常用于时间“微调”。,NOP ;PC+1PC,注意:该指令结果不影响程序状态字寄存器PSW。,4) 空操作(1条),例5 如果单片机的时钟频率为12MHZ,试设计2ms的延时程序。,编程如下: MOV R2, #200 TIME:NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R2, TIME,3.3.6 位操作类指令 位操作指令的操作数是“位”,其取值只能是0或1,故又称之为布尔操作指令。位操作指令的操作对象是片内RAM的位寻址区(即20H2FH)和特殊功能寄存器SFR中的11个可位寻址的寄存器。片内RAM的20H2FH共16个单元128个位,我们为这128个位的每个位均定义一个名称:00H7FH,称为位地址,如表3.5所示。对于特殊功能寄存器SFR中可位寻址的寄存器的每个位,也有名称定义,如表3.6所示。,表3.5 片内RAM位寻址区的位地址分布,表3.6 SFR中的位地址分布,对于位寻址,有以下四种不同的写法。 第一种是直接地址写法,如MOV C,0D2H,其中,0D2H表示PSW中的OV位地址。 第二种是点操作符写法,如MOV C,0D0H.2。 第三种是位名称写法,即在指令格式中直接采用位定义名称,这种方式只适用于可以位寻址的SFR,如MOV C,OV。 第四种是专用寄存器符号与点操作符表示法,如MOV C,PSW.0。,位操作类指令分为以下五组: 位传送指令(2条):MOV。 位置位和位清0指令(4条):SETB、CLR。 位运算指令(6条):ANL、ORL、CPL。 位转移指令(3条):JB、JNB、JBC。 判CY标志指令(2条):JC、JNC。,1. 位传送指令(2条),注意:位传送指令的操作数中必须有一个是进位位C,不能在其它两个位之间直接传送。进位位C也称为位累加器。,2. 位置位和位清0指令(4条),3. 位运算指令(6条),注意:以上指令结果通常影响程序状态字寄存器PSW的CY标志。,4. 位转移指令(3条),注意: JBC与JB指令的区别是:前者转移后把寻址位清0,后者只转移而不把寻址位清0。 以上指令结果不影响程序状态字寄存器PSW。,5. 判CY标志指令(2条),注意:以上结果不影响程序状态字寄存器PSW。,例3.16 用位操作指令编程计算逻辑方程P1.7=ACC.0(B.0+P2.1)+ ,其中“+”表示逻辑或,“”表示逻辑与。 解: 程序段如下: MOV C,B.0 ;B.0C ORL C,P2.1 ;C或P2.1C ANL C,ACC.0 ;C与ACC.0C,即ACC.0(B.0+P2.1) C ORL C,/P3.2 ;C或/P3.2,即ACC.0(B.0+P2.1)+ C MOV P1.7,C ;C P1.7,例题:设字节地址(20H)=01H,试分析程序执行后位地址01H、00H中的内容为何值?P1口的8条I/O口线为何状态?,clr c mov a,#66h jb 07h,loop1 cpl c setb 01h loop1:orl c,acc.2 jbc acc.2,loop2 clr 00h loop2:mov P1,a end,3.3.7 常用伪指令 1. 定位伪指令ORG 格式: 标号: ORG 地址表达式 功能:规定程序块或数据块存放的起始位置。 例如:ORG 1000H ;表示下面的指令MOV A, ;#20H存放于1000H开始的单元 MOV A,#20H,2. 定义字节数据伪指令DB 格式: 标号: DB 字节数据表 功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。 例如:ORG 1000H TAB:DB 2BH,0A0H,A,2*4 ;表示从1000H单元开始的地方存放数据2BH, ; 0A0H, 41H(字母A的ASCII码),08H,3. 定义字数据伪指令DW 格式: 标号: DW 字数据表 功能:与DB类似,但DW定义的数据项为字,包括两个字节,存放时高位在前,低位在后。 例如: ORG 1000H DATA:DW 324AH,3CH ;表示从1000H单元开始 ;的地方存放数据32H, ;4AH,00H,3CH(3CH ;以字的形式表示为 ;003CH),4. 定义空间伪指令DS 格式: 标号: DS 表达式 功能:从指定的地址开始,保留多少个存储单元作为备用的空间。 例如: ORG 1000H BUF:DS 50 TAB:DB 22H ;表示从1000H开始的地方预留 ;50(1000H1031H)个存储字节 ;空间,22H存放在1032H单元,5. 符号定义伪指令EQU或= 格式: 符号名 EQU 表达式 或 符号名=表达式 功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,并且必须遵循先定义后使用的原则,因此该语句通常放在源程序的开头部分。 例如: LEN=10 SUM EQU 21H MOV A,#LEN ;执行指令后,累加器A中的值 ;为0AH,6. 数据赋值伪指令DATA 格式: 符号名 DATA 表达式 功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,但可以先使用后定义,因此用它定义数据时可以放在程序末尾。 例如: MOV A,#LEN LEN DATA 10 尽管LEN的引用在定义之前,但汇编语言系统仍可以知道A的值是0AH。,7. 数据地址赋值伪指令XDATA 格式: 符号名 XDATA 表达式 功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,可以先使用后定义,可用于双字节数据定义。 例如: DELAY XDATA 0356H LCALL DELAY ;执行指令后,程序转到 ; 0356H单元执行,8. 汇编结束伪指令END 格式: 标号: END 功能:汇编语言源程序结束标志,用于整个汇编语言程序的末尾处。,本 章 小 结 程序由指令组成。一台计算机能够提供的所有指令的集合称为指令系统。指令有机器码指令和助记符指令两种形式。计算机能够直接执行的指令是机器码指令。 寻找操作数地址的方式称为寻址方式。MCS-51指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址等。 MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类:数据传送指令(29条)、算术运算指令(24条)、逻辑运算指令(24条)、控制转移指令(17条)和位操作指令 (17条)。,习 题 3 3.1 单项选择题。 (1) 单片机在与外部I/O口进行数据传送时,将使用 指令。 A. MOVX B. MOV C. MOVC D. 视具体I/O口器件而定 (2) 在寄存器间接寻址方式中,Ri是指 。 A. R0R7 B. R0R1 C. 操作码 D. 操作数地址 (3) 下列指令中,影响堆栈指针的指令是 。 A. LJMP addr16 B. DJNZ Rn,rel C. LCALL addr16 D. MOVX A,Ri,(4) MCS-51单片机有七种寻址方式,其中:MOV A,direct指令的源操作数属于 寻址方式。 A间接 B变址 C相对 D直接 (5) 指令JZ NEXT的作用是 。 A当CY标志为0时跳转到NEXT语句执行 B当累加器A内容不为全0时跳转到NEXT语句执行 C当累加器A内容为全0时跳转到NEXT语句执行 D当CY标志为1时跳转到NEXT语句执行 (6) 将外部数据存储单元的内容传送到累加器A中的指令是 。 AMOVX A,A+DPTR B. MOV A,R0 CMOVC A,A+DPTR D. MOVX A,DPTR,(7) 在指令MOV 30H,#55H中,30H是 。 A指令的操作码 B. 操作数 C操作数的目的地址 D. 机器码 (8) 在下列指令中,属判位转移的指令是 。 A. AJMP addr11 B. CJNE A,direct,rel C. DJNZ Rn,rel D. JNC rel (9) 8031有4组工作寄存器区,将当前工作寄存器设置为第2组应使用的指令是 。 A. SETB RS0和CLR RS1 B. SETB RS0和SETB RS1 C. CLR RS0和CLR RS1 D. CLR RS0和SETB RS1 (10) MCS-51单片机中,下一条将要执行的指令地址存放在 中。 A. SP B. DPTR C. PC D. PSW,(11) 当执行DA A指令时,CPU将根据 的状态自动调整,使ACC的值为正确的BCD码。 A. CY B. MOV 20H,R4 C. CY和AC D. RS0和RS1 (12) 下列指令中正确的是 。 A. MOV A,R4 B. MOV R1,R3 C. MOV R4,R3 D. MOV R4,R3 (13) 在堆栈操作中,当进栈数据全部弹出后,这时SP应指向 。 A. 栈底单元 B. 7FH单元 C. 栈底单元地址加1 D. 栈底单元地址减1,3.2 填空题。 (1) 在直接寻址方式中,只能使用 位二进制数作为直接地址,因此,其寻址方式对象只限于 。 (2) 在相对寻址方式中,寻址得到的结果是 。 (3) 假定A=85H,(20H)=0FFH,CY=1,执行指令:ADDC A,20H后,累加器A的内容为 ,CY的内容为 ,AC的内容为 ,OV的内容为 。 (4) 假定A=56H,R5=67H,执行如下指令后,累加器A的内容为 ,CY的内容为 。 ADD A,R5 DA A (5) 假定A=40H,B=0A0H,执行指令:MUL AB后,寄存器B的内容 ,累加器A的内容为 ,CY的内容为 ,OV的内容为 。,(6) 假定A=0FEH,B=15H,执行指令:DIV AB后,累加器A的内容为 ,寄存器B的内容为 ,CY的内容为 ,OV的内容为 。 (7) 假定A的内容为0FEH,执行完指令:SWAP A后,累加器A的内容为 。 (8) 将累加器A清0的指令有很多种,请按下面的要求写出指令: 数据传送指令 逻辑与操作指令 逻辑异或操作指令 累加器清0指令 (9) 在位操作中,能起到字节操作中累加器作用的是 。,(10) 假定addr11=00100000000B,标号next的地址为1030H,执行指令:next: AJMP addr11后,程序转移到地址 去执行。 (11) 假定指令SJMP next所在地址为0100H,标号next代表的地址为0123H(即跳转的目标地址为0123H),那么该指令的相对偏移量为 。 3.3 指出下列指令的寻址方式及执行的操作: (1) MOV A,data (2) MOV A,#data (3) MOV A,R1 (4) MOV A,R1 (5) MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论