单片机学习笔记4.汇编语言.3.3算术运算类指令详解

一、加法指令
1.不带进位加法(ADD )
ADD A,#data8
ADD A,addr8
ADD A,@Ri
ADD A,Rn
2.带进位加法(ADDC )
ADDC A,#data8 ;A<-A+#data8+CY
ADDC A,addr8 ;A<-A+(addr8)+CY
ADDC A,@Ri ;A<-A+(Ri)+CY
ADDC A,Rn ;A<-A+Rn+CY
3.增量指令(INC )
INC A ;A<A+1
INC addr8 ; (addr8)<-(addr8)+1
INC @Ri ;(Ri)<-(Ri)+1
INC Rn ; Rn<-Rn+1
INC DPTR ; DPTR<-DPTR+1
二、减法指令
1.带借位减法(SUBB )
SUBB A,#data8 ;A<-A-#data8-CY
SUBB A,addr8 ;A<-A-(addr8)-CY
SUBB A,@Ri ;A<-A-(Ri)-CY
SUBB A,Rn ;A<-A-Rn-CY
2.减量指令(DEC )
DEC A ;A<A-1
DEC addr8 ; (addr8)<-(addr8)-1
DEC @Ri ;(Ri)<-(Ri)-1
DEC Rn ; Rn<-Rn-1
三、乘法指令(MUL )
格式:MUL AB

- 功能:A × B,结果的高 8 位存于 B,低 8 位存于 A。
- 示例:
MUL AB→ 若 A=0x50,B=0x03,则结果为 0x00F0 → A=0xF0,B=0x00。 - 影响标志位:OV=1(当乘积超过 0xFF 时),CY=0。
四、除法指令(DIV AB)
格式: DIV AB

- 功能:A ÷ B,商存于 A,余数存于 B。
- 示例:
DIV AB→ 若 A=0x19(25),B=0x03 → A=0x08(商 8),B=0x01(余 1)。 - 注意:B 不能为 0,否则 OV=1。
五、十进制调整指令(DA )
格式:DA A
- 功能:对加法结果进行 BCD 码调整,使 A 的值符合十进制规则。
- 示例:
MOV A, #0x35 ; A=35(BCD码) ADD A, #0x37 ; A=6CH(非BCD码) DA A ; A=72(BCD码,自动修正进位)
六、实际应用示例
-
多字节加法(16 位):
MOV A, #LOW(0x1234) ; A=0x34 ADD A, #LOW(0x5678) ; A=0x34+0x78=0xAC(CY=0) MOV LOW_RESULT, A MOV A, #HIGH(0x1234) ; A=0x12 ADDC A, #HIGH(0x5678); A=0x12+0x56+CY=0x68 MOV HIGH_RESULT, A -
BCD 减法:
CLR C ; 清除借位 MOV A, #0x89 ; 89(BCD) SUBB A, #0x35 ; 54(BCD) DA A ; 自动修正(若有借位需调整)
总结
- 加法:ADD/ADDC 用于普通加法和多字节运算。
- 减法:SUBB 需配合 CY 标志处理借位。
- 乘除:MUL/DIV 直接操作累加器 A 和寄存器 B。
- 十进制调整:DA A 确保 BCD 码运算正确性。

浙公网安备 33010602011771号