3.5-3.6 逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂

| 26页
| 99人阅读
| 1人下载
精品

内容正文:

单片机技术与应用 -第14课时- 高教版第二版 逻辑运算类指令、控制转移类指令 教学目标 了解逻辑运算类指令和控制转移类指令的数量、分类和主要功能 掌握各类逻辑运算指令和控制转移指令的格式、操作功能、字节数和机器周期数 理解逻辑运算指令和控制转移指令对标志位的影响 教学重难点 各类逻辑运算指令和控制转移指令的功能和使用方法 理解控制转移指令中目标地址的计算和转移范围 正确运用子程序调用与返回指令实现程序的模块化设计 让我们一起开启单片机的学习之旅。 导入新课 在单片机编程中,逻辑运算和程序流程控制是非常重要的部分。 MCS - 51 系列单片机有哪些逻辑运算类指令和控制转移类指令呢? 它们各自的功能和特点是什么? 如何运用这些指令实现复杂的程序逻辑? 让我们一起开启单片机的学习之旅。 新知讲授 概述 逻辑运算类指令共 24 条,包括 20 条逻辑指令(与、或、异或、累加器 A 清 0 和求反等)和 4 条移位指令。 特点 累加器 A 清 0 和取反、移位指令是针对累加器 A 的单操作数指令。 与、或、异或操作指令寻址方式组合部分与加、减法指令相同。 这类指令不影响 PSW 算术标志位,只有带进位循环移位指令影响 CY,所有逻辑运算按位进行。 逻辑运算类指令 逻辑运算类指令 新知讲授 逻辑与指令 逻辑运算类指令 逻辑运算类指令 指令助记符 操作功能 字节数 机器周期数 ANL A,#data A←(A) ∧ data 2 1 ANL A,Rn A←(A) ∧ (Rn) 1 1 ANL A,@Ri A←(A) ∧ ((Ri)) 1 1 ANL A,direct A←(A) ∧ (direct) 2 1 ANL direct,A direct←(direct) ∧ (A) 2 1 ANL direct,#data direct←(direct) ∧ data 3 2 例3 - 16:(A)=07H,(R0)=0FDH, 执行指令 ANL A,R0, 执行结果为:(A)=05H。 新知讲授 逻辑或指令 逻辑运算类指令 逻辑运算类指令 指令助记符 操作功能 字节数 机器周期数 ORL A,#data A←(A) ∨ data 2 1 ORL A,Rn A←(A) ∨ (Rn) 1 1 ORL A,@Ri A←(A) ∨ ((Ri)) 1 1 ORL A,direct A←(A) ∨ (direct) 2 1 ORL direct,A direct←(direct) ∨ (A) 2 1 ORL direct,#data direct←(direct) ∨ data 3 2 例3 - 17:(P1)=05H,(A)=33H, 执行指令 ORL P1,A, 执行结果为:(P1)=37H。 新知讲授 逻辑异或指令 逻辑运算类指令 逻辑运算类指令 指令助记符 操作功能 字节数 机器周期数 XRL A,#data A←(A) ⊕ data 2 1 XRL A,Rn A←(A) ⊕ (Rn) 1 1 XRL A,@Ri A←(A) ⊕ ((Ri)) 1 1 XRL A,direct A←(A) ⊕ (direct) 2 1 XRL direct,A direct←(direct) ⊕ (A) 2 1 XRL direct,#data direct←(direct) ⊕ data 3 2 例 3 - 18:(A)=90H,(R3)=73H, 执行指令 XRL A,R3, 执行结果为:(A)=0E3H。 新知讲授 逻辑异或指令 逻辑运算类指令 逻辑运算类指令 指令助记符 操作功能 字节数 机器周期数 XRL A,#data A←(A) ⊕ data 2 1 XRL A,Rn A←(A) ⊕ (Rn) 1 1 XRL A,@Ri A←(A) ⊕ ((Ri)) 1 1 XRL A,direct A←(A) ⊕ (direct) 2 1 XRL direct,A direct←(direct) ⊕ (A) 2 1 XRL direct,#data direct←(direct) ⊕ data 3 2 例 3 - 18:(A)=90H,(R3)=73H, 执行指令 XRL A,R3, 执行结果为:(A)=0E3H。 新知讲授 逻辑异或指令 - 应用 例 3 - 19:若 (A)=B5H = 10110101B 逻辑异或指令可使字节中某些位取反,其他位保持不变,也可对某单元自身异或实现清 0 操作。 逻辑运算类指令 XRL A,#0FOH ;A 的高 4 位取反,低 4 位保留,(A)=01000101B = 45H MOV 30H,A ;(30H)=45H XRL A,30H ;自身异或使 A 清 0 新知讲授 移位指令 逻辑运算类指令 控制转移位指令 指令助记符 操作功能 字节数 机器周期数 RL A   1 1 RR A   1 1 RLC A   1 1 RRC A   1 1 累加器 A 清 0 和取反指令 CLR A:功能是累加器 A 清 0,不影响 CY、AC、OV 等标志。 CPL A:功能是将累加器 A 的内容按位逻辑取反,不影响标志。 新知讲授 移位指令- 应用 例 3 - 20:设 (A)=5AH,且 CY = 0 移位指令可实现算术运算,左移 1 位相当于原内容乘以 2,右移 1 位相当于原内容除以 2(商为非整数时向下取整)。 移位指令 执行指令 RL A 后,(A)=0B4H。 执行指令 RR A 后,(A)=2DH。 执行指令 RLC A 后,(A)=0B4H。 执行指令 RRC A 后,(A)=2DH。 新知讲授 控制转移类指令概述 控制转移类指令共 17 条,可分为无条件转移指令、条件转移指令、子程序调用及返回指令。能实现程序向前、向后转移,根据条件分支、循环运行及调用子程序。 无条件转移指令 逻辑运算类指令 控制转移类指令 指令助记符 操作功能 字节数 机器周期数 LJMP addr16 PC←addr16 3 2 AJMP addr11 PC10~0←addr11,PC15~11 不变 2 2 SJMP rel PC←(PC)+2 + rel 2 2 JMP @A+DPTR PC←(A)+(DPTR) 1 2 新知讲授 无条件转移指令 - 长转移指令 LJMP addr16 该指令把 16 位目标地址装入 PC,不影响标志位,可使程序在 64KB 程序存储器地址空间任意转移,但执行时间长、字节多。汇编语言中 addr16 通常是标号。 无条件转移指令 - 绝对转移指令 AJMP addr11 逻辑运算类指令 控制转移类指令 程序转移目的地址由 AJMP 指令所在地址 PC 值加 2 构成当前 PC 值,当前 PC 值高 5 位与指令中 11 位直接地址形成转移目的地址,可在 2KB 范围内转移。汇编语言中 addr11 通常是标号。 例3 - 21:若 AJMP 指令地址 (PC)=2300H,执行指令 AJMP 0FFH 后,转移目的地址 (PC)=20FFH。 例3 - 22:若 AJMP 指令地址 (PC)=2FFFH,执行指令 AJMP OFFH 后,转移目的地址 (PC)=30FFH。 MOV DPTR,#TABLE JMP @A+DPTR TABLE:AJMP TAB1 AJMP TAB2 AJMP TAB3 新知讲授 无条件转移指令 - 短转移指令 SJMP rel SJMP 指令操作数 rel 用 8 位带符号数补码表示,转移范围是相对 PC 当前值向前 128 字节,向后 127 字节,即转移目的地址 = SJMP 指令所在地址 + 2 + rel。汇编语言中 rel 通常是标号。若程序末尾加 SJMP $,则程序进入无限循环。 无条件转移指令 - 间接转移指令 JMP @A+DPTR 逻辑运算类指令 控制转移类指令 该指令以 DPTR 内容为基址,累加器 A 内容为相对偏移量,在 64KB 范围内无条件转移,可实现多分支转移,又称散转指令。 例 3 - 23:根据累加器A的值,转移不同处理程序的入口 MOV DPTR,#TABLE JMP @A+DPTR TABLE:AJMP TAB1 AJMP TAB2 AJMP TAB3 当(A)=0 时转 TAB1 执行,(A)=2 时转 TAB2 执行,(A)=4 时转 TAB3 执行,A 的值必须是偶数。 新知讲授 控制转移类指令——条件转移类指令 指令名称 指令助记符 操作功能 字节数 机器周期数 判断累加器是否为零转移指令   JZ rel 若 (A)=0,则 PC←PC + 2 + rel;若 (A)≠0,则顺序执行 2 2 JNZ rel 若 (A)≠0,则 PC←PC + 2 + rel;若 (A)=0,则顺序执行 2 2 比较转移指令       CJNE A,#data,rel 若 (A)≠data,则 PC←PC + 3 + rel;若 (A)=data,则 PC←PC + 3 3 2 CJNE A,direct,rel 若 (A)≠(direct),则 PC←PC + 3 + rel;若 (A)=(direct),则 PC←PC + 3 3 2 CJNE @Ri,#data,rel 若 ((Ri))≠data,则 PC←PC + 3 + rel;若 ((Ri))=data,则 PC←PC + 3 3 2 CJNE Rn,#data,rel 若 (Rn)≠data,则 PC←PC + 3 + rel;若 (Rn)=data,则 PC←PC + 3 3 2 减 1 条件转移指令   DJNZ direct,rel 若 (direct)-1≠0,则 PC←PC + 3 + rel;若 (direct)-1=0,则 PC←PC + 3 3 2 DJNZ Rn,rel 若 (Rn)-1≠0,则 PC←PC + 2 + rel;若 (Rn)-1=0,则 PC←PC + 2 2 2 新知讲授 判断累加器是否为 0 转移指令 例 3 - 24:编写程序:两个数相加,若和不等于0则和取反,若和为0则将20H单元清0 控制转移类指令——条件转移类指令 ADD A,R0 JNZ LOOP MOV 20H,A LOOP:CPL A 判断累加器是否为0转移指令是以累加器A 的内容是否为0作为转移的条件,累加 器A为0,则转移,累加器A不为0,则顺序执行。执行这条指令不作任何运算,也不影 响标志位。 新知讲授 比较转移指令 例 3 - 25:编写程序:当从P1 口输人数据为08H 时,程序继续执行,否则等待,直到P1 口出现08H。参考程序如下: 控制转移类指令——条件转移类指令 MOV A,#08H WAIT: CJNE A,P1,WAIT 比较转移指令是先对两个规定的操作数进行比较,根据比较的结果来决定是否转移。若两 个操作数相等,则不转移,程序顺序执行;若两个操作数不等,则转移。比较是做一次减法运 算,但其差值不保存,两个数的原值不受影响,而标志位要受到影响。 新知讲授 减1条件转移指令 例 3 - 26:编写程序:将内部RAM从 DATA 单元开始的10个无符号数相加,相加结果送 SUM单元保存(设相加结果不超过8位二进制数)。参考程序如下: 控制转移类指令——条件转移类指令 MOV R0,#0AH ;设置循环次数 MOV R1,#DATA ;R1 作地址指针,指向数据块首地址 CLR A ;A 清 0 LOOP: ADD A,@R1 ;加一个数 INC R1 ;修改指针,指向下一个数 DJNZ R0,LOOP ;R0 减 1,不为 0 循环 MOV SUM,A ;存 10 个数相加的和 减1条件转移指令又称减1不为0转移指令,该指令是把源操作数减1,结果送回到源操 作数中去,并判断结果是否为0,若不为0则转移到目标地址,继续执行循环程序;若为0则 终止循环程序的执行。 新知讲授 (1)子程序调用指令 ② 绝对调用指令ACALL addr11 它的操作功能为:PC←(PC)+2,SP←(SP)+1,(SP)←(PC)7~0,SP←(SP)+1, (SP)←(PC)15~8,(PC)10~0←addr11。 子程序调用与返回指令 子程序调用指令有长调用和绝对调用两条,它们都是双周期指令。 ① 长调用指令LCALL addr16 它的操作功能为:PC←(PC)+3,SP←(SP)+1,(SP)←(PC)7~0,SP←(SP)+1, (SP)←(PC)15~8,PC←-addr16。 新知讲授 (2)返回指令 子程序调用与返回指令 返回指令共两条:一条是对应两条调用指令的子程序返回指令RET, 另一条是对应从中断服务程序的返回指令RETI。 ① 子程序返回指令RET, 功能为(PC)15~8—((SP)),SP←(SP-1),(PC)7~0← ((SP)),SP←(SP-1)。 ② 中断服务程序的返回指令RETI, 功 能 为(PC)15~8←((SP)),SP←-(SP-1),(PC)7~0←((SP)),SP←(SP-1)。 共同点:从堆栈中弹出返回地址送PC, 堆栈指针减2. 不同点: ① 在使用上,RET 指令必须作为子程序的最后一条指令;RETI 必须作为中断服务程序的 最后一条指令。 ② RETI 指令除恢复断点地址外,还使得已申请的同级或低级中断申请可以响应;而RET 指令只能恢复返回地址。 随堂检测1 逻辑运算类指令中,哪些指令不影响 PSW 算术标志位? 答案:逻辑运算类指令中,除带进位循环移位指令影响 CY 外,其他指令不影响 PSW 算术标志位,如逻辑与、或、异或、累加器 A 清 0 和取反指令等。 无条件转移指令 LJMP addr16 和 AJMP addr11 的转移范围分别是多少? 答案:LJMP addr16 可使程序在 64KB 程序存储器地址空间任意转移;AJMP addr11 只能在 2KB 范围内转移。 练一练 随堂检测2 条件转移指令 JZ rel 和 JNZ rel 的功能分别是什么? 答案:JZ rel 功能是若 (A)=0,则 PC←PC + 2 + rel;若 (A)≠0,则顺序执行。JNZ rel 功能是若 (A)≠0,则 PC←PC + 2 + rel;若 (A)=0,则顺序执行。 比较转移指令 CJNE A,#data,rel 执行后,如何根据 CY 的值判断两数大小? 答案:当 CY = 0 时,第一操作数大于第二操作数;当 CY = 1 时,第一操作数小于第二操作数。 练一练 师生互动 1 请各小组讨论,在实际编程中,如何根据不同的程序需求选择合适的控制转移类指令,以及如何正确处理子程序调用与返回的过程。 课题小结 1. 逻辑运算类指令 逻辑运算类指令、控制转移类指令 2. 控制转移类指令 无条件转移类指令 条件转移类指令 逻辑与指令 逻辑或指令 逻辑异或指令 累加器A清0和取反指令 移位指令 长转移指令 LJMP addr16 绝对转移指令 AJMP addr11 短转移指令 SJMP rel 间接转移指令 JMP @A+DPTR 谢谢观看 THANKS Lavf58.46.101 $

资源预览图

3.5-3.6  逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂-第1页
1
3.5-3.6  逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂-第2页
2
3.5-3.6  逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂-第3页
3
3.5-3.6  逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂-第4页
4
3.5-3.6  逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂-第5页
5
3.5-3.6  逻辑运算类指令、控制转移类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂-第6页
6

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。