ADDC A, Rn ;(A) (A)+(Rn)+(C) ;以下类同。 ADDc A, direct ADDC A, @Ri ADDC A, #data 上述四条指令多用于多字节数相加。 INC A ;(A) (A)+1,以下类同。 ⅠNCRn inc direct INc @Ri INC DPTR
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
INC A (A) (A)+1 ;以下类同。 INC Rn inc direct INc @Ri INC DPTR 例1、设(RO)=7FH;(7EH)=40H 执行:INC@R0 INC RO INC@R0后, (R0)=7FH;(TEH)=00H;(7FH)=41H
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
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码数),执行: ADDA, #99H DA A 后,便实现了30-1=29的操作
例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 RO, #30H MOV RI, #32H MOV A, ORO ADD A, aRI DA A MOV aRO, A
例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