3.4 算术运算类指令(课件)-《单片机技术与应用》(高教版第二版) 同步精品课堂
|
25页
|
111人阅读
|
1人下载
精品
内容正文:
单片机技术与应用
-第13课时-
高教版第二版
算术运算类指令
教学目标
了解算术运算类指令的数量、分类和主要功能
掌握各类算术运算指令的格式、操作功能、字节数和机器周期数
能够运用算术运算类指令进行编程,并分析程序执行结果
教学重难点
各类算术运算指令的功能和使用方法
算术运算结果对标志位的影响规律
理解进位、借位、溢出等标志位在不同运算中的变化
让我们一起开启单片机的学习之旅。
导入新课
在单片机编程中,算术运算是实现各种计算功能的基础。
视频中的计算器是如何实现算术运算的?
MCS - 51 系列单片机有哪些算术运算类指令呢?
它们各自的功能和特点是什么?
让我们一起开启单片机的学习之旅。
新知讲授
概述
1. 算术指令包括加、减、乘、除基本四则运算
2. 在逻辑运算单元(ALU)中能进行加、减、乘、除、加1,减1,BCD数转十进制调整等
特点
算术运算类指令共有 24 条,包括加法、带进位加法、带借位减法、加 1、减 1、乘除及十进制调整指令,主要完成加、减、乘、除等运算及相关调整操作。
运算结果影响进位标志 CY、半进位标志 AC、溢出标志 OV 等,奇偶标志 P 由累加器 A 的值确定。
算术运算类指令
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
加法指令 ADD
目的:将第二操作数(XXX)与第一操作数(A)的内容进行相加,得到的结果存放在累加器A中;
第二操作数:寄存器Rn、直接地址direct、间接地址@Ri、立即数#data。
算术运算类指令
指令助记符 操作功能 字节数 机器周期数
ADD A,#data A←(A)+data 2 1
ADD A,Rn A←(A)+(Rn) 1 1
ADD A,@Ri A←(A)+((Ri)) 1 1
ADD A,direct A←(A)+(direct) 2 1
ADDC A,@Ri A←(A)+((Ri))+CY 1 1
ADDC A,direct A←(A)+(direct)+CY 2 1
这组指令被加数总是累加器 A,相加结果保存在 A 中。
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
加法指令 - 标志位影响规则
上述的指令会影响标志位P、OV、AC、CY位;
当和的第3位有进位则将AC位(辅助进位标志)置1;
当和的第7位有进位则将CY位(进位标志)置1;
由和的奇偶个1确定P置1还是清零,奇数个1置1,偶数个1清零;
溢出标记位OV只有带符号数运算时才有用;
对于带符号数来说,溢出标记位OV取值为 其和的第6位和第7位进行异或逻辑运算的结果
OV = 1表示两个正数求和结果为负数的错误结果 或 两个负数求和结果为正数的错误结果;
算术运算类指令
例 3 - 10:(A)=85H,(20H)=0FFH,CY = 1,执行指令 ADDC A,20H。
执行结果:(A)=85H,CY = 1,AC = 1,OV = 0,P = 1。
新知讲授
加法指令 - 示例
例 3 - 8:(A)=53H,(R0)=0FCH,执行指令 ADD A,R0。
执行结果:(A)=4FH,CY = 1,AC = 0,OV = 0,P = 1。
例 3 - 9:(A)=85H,(R0)=20H,(20H)=0AFH,执行指令 ADD A,@R0。
执行结果:(A)=34H,CY = 1,AC = 1,OV = 1,P = 1。
算术运算类指令
例3 - 10:(A)=85H,(20H)=0FFH,CY = 1,执行指令 ADDC A,20H。
执行结果:(A)=85H,CY = 1,AC = 1,OV = 0,P = 1。
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
带借位减法指令 SUBB
目的:将第一操作数(A)的内容减第二操作数(XXX)和进位CY三个数,得到的结果存放在累加器A中;
第二操作数:寄存器Rn、直接地址direct、间接地址@Ri、立即数#data;
算术运算类指令
指令助记符 操作功能 字节数 机器周期数
SUBB A,#data A←(A)-(data)-CY 2 1
SUBB A,Rn A←(A)-(Rn)-CY 1 1
SUBB A,@Ri A←(A)-((Ri))-CY 1 1
SUBB A,direct A←(A)-(direct)-CY 2 1
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
带借位减法指令 - 标志位影响规则
如果位 7 有借位,则 CY = 1,否则 CY = 0。
如果位 3 有借位,则 AC = 1,否则 AC = 0。
如果 D6 需借位,而 D7 不需借位,或者 D7 需借位,而 D6 不需借位,则 OV = 1,否则 OV = 0。
相减结果放在 A 中,1 的个数为奇数,则 P = 1,否则 P = 0。
算术运算类指令
目的:将累加器A和寄存器B中两个8位无符号数乘数,所得16位积的低8位存放在A中,高8位存放在B中,乘积大于0FFH,则将OV置1,否则清零,CY总是被清零
新知讲授
带借位减法指令 - 示例
例 3 - 11:(A)=C9H,(R2)=54H,CY = 1,执行指令 SUBB A,R2。
执行结果:(A)=74H,CY = 0,AC = 0,OV = 1。
算术运算类指令
乘法指令
指令助记符 操作功能 字节数 机器周期数
MUL AB (A)×(B)→BA 1 4
目的:将累加器A和寄存器B中两个8位无符号数乘数,所得16位积的低8位存放在A中,高8位存放在B中,乘积大于0FFH,则将OV置1,否则清零,CY总是被清零
目的:将累加器A和寄存器B中两个8位无符号数乘数,所得16位积的低8位存放在A中,高8位存放在B中,乘积大于0FFH,则将OV置1,否则清零,CY总是被清零
新知讲授
乘、除法指令 - 功能及标志位影响
乘法指令:把累加器 A 和寄存器 B 中的两个 8 位无符号数相乘,乘积 16 位数的低 8 位存于 A,高 8 位存于 B。若乘积大于 FFH,则 OV 置 1,否则 OV 清 0,CY 总为 0。
除法指令:把累加器 A 中的 8 位无符号整数除以寄存器 B 中的 8 位无符号整数,商存于 A,余数存于 B,CY 和 OV 均被清 0。若除数 B 内容为 0,OV 置 1,CY 仍为 0。
算术运算类指令
除法指令
指令助记符 操作功能 字节数 机器周期数
DIV AB (A)/(B)→A (商),余数→B 1 4
目的:进行A除以B的运算,整数存放在A中,余数存放在B中,CY、OV均被清零,若(B) = 0则结果无法确定
例 3 - 10:(A)=85H,(20H)=0FFH,CY = 1,执行指令 ADDC A,20H。
执行结果:(A)=85H,CY = 1,AC = 1,OV = 0,P = 1。
新知讲授
乘法指令 - 示例
例 3 - 12:设 (A)=32H,(B)=60H,执行指令 MUL AB。
执行结果:(A)=0COH,(B)=12H,CY = 0,OV = 1,P = 0。
算术运算类指令
除法指令 - 示例
例 3 - 13:(A)=8FH,(B)=32H,执行指令 DIV AB。
执行结果:(A)=02H,(B)=2BH,CY = 0,OV = 0。
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
加 1减 1 指令 Increment
目的:将指定的单元内容加1
目的操作数:累加器A、寄存器Rn、直接地址direct、间接地址@Ri、16位寄存器DPTR
算术运算类指令
指令助记符 操作功能 字节数 机器周期数
INC A A←(A)+1 1 1
INC Rn Rn←(Rn)+1 1 1
INC @Ri (Ri)←((Ri))+1 1 1
INC direct direct←(direct)+1 2 2
INC DPTR DPTR←(DPTR)+1 1 1
DEC A A←(A)-1 1 1
DEC Rn Rn←(Rn)-1 1 1
DEC @Ri (Ri)←((Ri))-1 1 1
DEC direct direct←(direct)-1 2 2
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
加 1、减 1 指令 - 功能及特点
加 1 指令:把操作数指定单元内容加 1,除奇偶标志外,不影响 PSW 标志位。若原单元内容为 FFH,加 1 后溢出为 00H。可对 I/O 端口进行 “读 - 改 - 写” 操作。
减 1 指令:将操作数指定单元内容减 1,除奇偶标志外,不影响 PSW 标志位。若原单元内容为 00H,减 1 后下溢为 FFH。对 I/O 端口操作与加 1 指令类似。
算术运算类指令
例 3 - 10:(A)=85H,(20H)=0FFH,CY = 1,执行指令 ADDC A,20H。
执行结果:(A)=85H,CY = 1,AC = 1,OV = 0,P = 1。
新知讲授
加 1、减 1 指令 - 示例
例 3 - 14:执行下列指令后,求 (30H) 和 (R0) 的值。
算术运算类指令
MOV R0,#30H
MOV 30H,#54H
INC @R0
INC R0
执行结果:(30H)=55H,(R0)=31H。
参考程序:
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
十进制调整指令Decimal Adjust
目的:将累加器中的数进行十进制调整
算术运算类指令
助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
DA A 调整累加器内容为BCD码 √ × √ √ 1 1
这组指令被加数总是累加器 A,相加结果保存在 A 中。
新知讲授
十进制调整指令 - 标志位影响规则
累加器低 4 位大于 9 或辅助进位位 AC = 1,则进行低 4 位加 6 修正。
累加器高 4 位大于 9 或进位位 CY = 1,则进行高 4 位加 6 修正。
累加器高 4 位为 9,低 4 位大于 9,则高 4 位和低 4 位分别加 6 修正。
BCD码:二进码十进数,用4位二进制数来表示1位十进制数中的0~9这10个数码;
当CY > 1或A4567 > 9则令 A + 60H -> A,就完成转化BCD码;
如果都满足3、4条件则加66H来完成BCD转化;
DA常用于 ADD、ADDC指令后。
算术运算类指令
例 3 - 10:(A)=85H,(20H)=0FFH,CY = 1,执行指令 ADDC A,20H。
执行结果:(A)=85H,CY = 1,AC = 1,OV = 0,P = 1。
新知讲授
十进制调整指令 - 示例
例 3 - 15:对 BCD 码加法 65 + 58 → BDH 进行十进制调整。
算术运算类指令
MOV A,#65H
ADD A,#58H
DA A
执行结果:(A)=23BCD,(CY)=1,即 65 + 58 = 123。
参考程序:
随堂检测1
算术运算类指令共有多少条,包括哪些类型的指令?
答案:算术运算类指令共有 24 条,包括加法指令、带进位加法指令、带借位减法指令、加 1 指令、减 1 指令、乘除指令及十进制调整指令。
加法指令 ADD A,Rn 的操作功能是什么?
答案:将累加器 A 的内容与工作寄存器 Rn 的内容相加,结果存于累加器 A 中,即 A←(A)+(Rn)。
练一练
随堂检测2
带借位减法指令 SUBB A,direct 的操作功能是什么?
答案:从累加器 A 中减去 direct 单元的内容和借位位 CY 的值,差值存于累加器 A 中,即 A←(A)-(direct)-CY。
乘法指令 MUL AB 执行后,进位标志 CY 和溢出标志 OV 的情况如何?
答案:进位标志 CY 总为 0,若乘积大于 FFH,则溢出标志 OV 置 1,否则 OV 清 0。
练一练
随堂检测3
加 1 指令 INC A 和 ADD A,#01H 都将 A 中内容加 1,它们有什么区别?
答案:INC A 除奇偶标志外,不影响 PSW 中其他标志位;ADD A,#01H 会影响标志位 CY。
十进制调整指令 DA A 的作用是什么?
答案:用于对十进制数 BCD 码加法运算结果的内容修正,两个 BCD 码相加之后,必须经本指令的调整才能得到正确的结果。
练一练
师生互动
1
请各小组讨论,在实际编程中,如何根据不同的算术运算需求选择合适的算术运算类指令,以及如何正确处理运算结果对标志位的影响。
课题小结
1. 加法指令
算术运算类指令
2. 带借位减法指令
标志位影响规则
示例
3. 乘、除法指令
4.加 1、减 1 指令
5. 十进制调整指令
标志位影响规则
示例
标志位影响规则
示例
标志位影响规则
示例
标志位影响规则
示例
谢谢观看
THANKS
UTC 2025-09-09 05:57:59
Lavf58.76.100
$