第八讲 算术运算类指令 教学方法: 讲授法 授课时数: 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 ,以下类同。 DEC Rn DEC @Ri DEC direct 例5、设(R0)=7FH,在内RAM中,(7EH)=00H,(7FH)=40H 执行:DEC @R0 DEC R0 DEC @R0 结果为 : (R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。 三、乘法和除法指令 乘法: MUL AB ;(A)×(B),积的低8位在A中,积的高8位在B中; C总为0。 除法: DIV AB ;(A)÷(B),商在A中,余数在B中。 若(B)= 0 ,则结果不定,(OV)= 1,(C)= 0。 例6、试将A中的二进制数转换为3位BCD码,其中,百位数存放于31H单 元,十位数和个位数压缩后存于30H单元中。 解;MOV B,#100 DIV AB MOV 31H,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV 30H,A 小结:算术运算类指令都有哪些类型? 版书设计 一、加法指令 1、…. 2、……. 3、 4、… 二、减法指令 1、…….. 2、……..  三、乘法指令 1、主电源(VCC 、VSS) 2、外接晶振  四、除法指令 1、……. 2、……. 3、…….. …. 小结: 1、…….. 2、……. 3、 作业: