汇编攻城记-算术运算ADD/SUB/RSB/ADC/SBC/RSC

算术运算-ADD/SUB/RSB/ADC/SBC/RSC

加法、减法和反向减法,均可带进位或不带进位。

语法

op{S}{cond} {Rd}, Rn, Operand2
op{cond} {Rd}, Rn, #imm12         ; Thumb-2 only
其中: 
op 是下列项之一: 
    ADD 加法。 
    ADC 带进位加法。 
    SUB 减法。 
    RSB 反向减法。 
    SBC 带进位减法。 
    RSC 带进位反向减法(仅 ARM)。 
S 是一个可选的后缀。如果指定了 S,则将会更新运算结果的条件代 码标记。
cond 是一个可选的条件代码。 
Rd 是目标寄存器。 
Rn 是存放第一个操作数的寄存器。 
Operand2 是一个灵活的第二操作数。有关此选项的详细信息。
imm12 可为 0-4095 范围内的任一值。只可用于 ADD 和 SUB 指令,且只可用 于 Thumb-2 代码中

示例

ADD Rd, Rn, Rm     ; Rd = Rn+Rm 
ADD Rd, Rm         ; Rd += Rm 
ADD Rd, #imm       ; Rd += imm ;常规加法imm 的范围是 im8(16 位指令)或 im12(32位指令)

ADC Rd, Rn, Rm     ; Rd = Rn+Rm+C 
ADC Rd, Rm         ; Rd += Rm+C 
ADC Rd, #imm       ; Rd += imm+C ;带进位的加法imm 的范围是 im8(16 位指令)或 im12(32位指令)
ADDW Rd, #imm12    ; Rd += imm12 带 12 位立即数的常规加法

SUB Rd, Rn         ; Rd -= Rn 
SUB Rd, Rn, #imm3  ; Rd = Rn-imm3 
SUB Rd, #imm8      ; Rd -= imm8 
SUB Rd, Rn, Rm     ; Rd = Rm-Rm 常规减法
SBC Rd, Rm         ; Rd -= Rm+C 
SBC.W Rd, Rn, #imm12 ; Rd = Rn-imm12-C 
SBC.W Rd, Rn, Rm     ; Rd = Rn-Rm-C 带借位的减法
RSB.W Rd, Rn, #imm12 ; Rd = imm12-Rn 
RSB.W Rd, Rn, Rm     ; Rd = Rm-Rn 反向减法

MUL Rd, Rm             ; Rd *= Rm 
MUL.W Rd, Rn, Rm       ; Rd = Rn*Rm 常规乘法
MLA Rd, Rm, Rn, Ra     ; Rd = Ra+Rm*Rn 
MLS Rd, Rm, Rn, Ra     ; Rd = Ra-Rm*Rn 乘加与乘减(译者添加)

UDIV Rd, Rn, Rm         ; Rd = Rn/Rm (无符号除法)
SDIV Rd, Rn, Rm         ; Rd = Rn/Rm (带符号除法)硬件支持的除法

SMULL RL, RH, Rm, Rn     ;[RH:RL]= Rm*Rn 
SMLAL RL, RH, Rm, Rn     ;[RH:RL]+= Rm*Rn 带符号的 64 位乘法
UMULL RL, RH, Rm, Rn     ;[RH:RL]= Rm*Rn 
SMLAL RL, RH, Rm, Rn     ;[RH:RL]+= Rm*Rn 无符号的 64 位乘法

你可能感兴趣的:(汇编攻城记,汇编)