文档介绍:第八讲算术运算类指令
教学方法: 讲授法
授课时数: 2学时
教学目的:
1、熟悉数据运算类指令的操作方式特点
2、理解二-十进制调整指令的含义
3、熟练掌握加法指令
教学重点:
加法、减法指令
教学难点:
二-十进制调整指令
教学环节:
组织教学: 考勤
复习提问:
direct、***@Ri、***@DPTR、Rn、#data、(x)、((x))的含义?
新授课: §3-3 算术运算类指令
包括:加、减、乘、除;加一、减一。
一、加法指令
ADD A,Rn ;(A) (A)+ (Rn)以下类同。
ADD A,direct
ADD A,***@Ri
ADD A,#data
无符号数相加时:若C = 1,说明有溢出(其值> 255)。
带符号数相加时:若OV = D7c⊕D6c = 1,说明有溢出。
ADDC A,Rn ;(A) (A)+(Rn)+(C),以下类同。
ADDC A,direct
ADDC A,***@Ri
ADDC A,#data
上述四条指令多用于多字节数相加。
INC A ;(A) (A)+1 ,以下类同。
INC Rn
INC direct
INC ***@Ri
INC DPTR
例1、设(R0)= 7FH; (7EH)= 40H
执行:INC ***@R0
INC R0
INC ***@R0 后,
(R0)= 7FH; (7EH)= 00H; (7FH)= 41H.
DA A ;二——十进制调整指令。
执行过程中,CPU能根据加法运算后,累加器中的值和PSW中的AC及C标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二——十进制调整。
选择修正值的规则:
(A3 ~ 0)> 9时或(AC)= 1时, (A3 ~ 0) (A3 ~ 0)+6
(A7 ~ 4)> 9 或(C) = 1时, (A7 ~ 4) (A7 ~ 4)+ 6
例2、设(A) = 56H 为56的压缩的BCD码数,(R3)= 67H,(CY)=1
执行 ADDC A,R3
DA A
结果为:124
注意:1)DA指令只能跟在加法指令后面使用;
2)调整前参与运算的两数是BCD码数;
3)DA指令不能与减法指令配对使用,但可以实现对A中压缩BCD
减一操作。
例3、设(A)=30H(压缩BCD码数),执行:
ADD A,#99H
DA A
后,便实现了30 - 1 = 29的操作。
例4、两个4位BCD码相加,一个存放在(31H)(30H);另一个存放在
(33H)(32H);和数拟回存在(31H)(30H)中,试编程实现之。
解:MOV R0,#30H
MOV R1,#32H
MOV A,***@R0
ADD A,***@R1
DA A
MOV ***@R0,A
INC R0
INC R1
MOV A,***@R0
ADDC A,***@R1
DA A
MOV ***@R0,A
二、减法指令
SUBB A,Rn ;(A) (A)-(Rn)-(C),以下类同。
SUBB A,direct
SUBB A,***@Ri
SUBB A,#data
注意:减法之前先清零C。
DEC A ;(A) (A)-1 ,以下类同