一.加法指令(ADD):
用于执行 16 位或 32 位的加法运算。
- 指令格式及功能:
ADD Rd, Rm
:将寄存器Rd
和Rm
的值相加,结果存回Rd
,即Rd = Rd + Rm
。ADD Rd, Rn, Rm
:把寄存器Rn
和Rm
的值相加,结果存入Rd
,Rd = Rn + Rm
。ADD Rd, #imm
:imm
为 8 位或 16 位立即数,将Rd
的值与立即数相加,Rd = Rd + imm
。例如ADD R0, #0x12
,执行后R0 = R0 + 0x12
。ADD.W Rd, Rn, Rm
:显式指定为 32 位指令,Rd = Rn + Rm
。
- 标志位影响:16 位加法会自动更新 APSR(应用程序状态寄存器)中的标志位;使用
W
指定 32 位指令时,通过S
后缀控制对 APSR 的更新,如ADD.W R0, R1, R2
不更新标志位,ADDS.W R0, R1, R2
更新标志位。
二.带进位加法指令(ADC):
进行 16 位或 32 位带进位的加法运算。
- 指令格式及功能:
ADC Rd, Rn
:将Rd
、Rn
的值与进位标志C
相加,结果存回Rd
,即Rd = Rd + Rn + C
。ADC Rd, #imm
:imm
为 12 位立即数,Rd = Rd + imm + C
。ADC Rd, Rn, Rm
:Rd = Rn + Rm + C
。例如ADC.W R0, R1, R2
,执行R0 = R1 + R2 + C
。