Mnemonic | Insruction | Function |
ADD /ADDS | Addition | A + B |
ADCS | Addiction with carry | A + B + c |
ADR | Address to register | PC + A |
SUB / SUBS | Subtraction | A - B |
SBCS | Subtraction with carry (borrow) | A - B - NOT(c) |
RSBS | Reverse Subtract (negative) | -1 * A |
MULS | Multiplication | A * B |
- Update of Flags
- Result and two operands
- Only low registers
ADDS <Rd>, <Rn>, <Rm> ; Rd = Rn + Rm
- No update of flags
- High and low registers
- Rdn contains result and operand
ADD <Rdn>, <Rm> ; Rdn = Rdn + Rm
- Update of flags
- Two different low registers and immediate value 0-7
ADDS <Rd>,<Rn>, #<imm3> ; Rd = Rn + <imm3>
- Update of flags
- Low register with intermediate value 0-255d
- Rdn stores result and operation
ADDS <Rdn>, <#imm8> ; Rdn = Rdn + <imm8>
−a=0−a
RSBS <Rd>, <Rn>, #0
Rd = 0 - Rn
SUBS <Rd>, <Rn>, <Rm> ; Rd = Rn - Rm
; = Rn + NOT(Rm) + 1
ADCS <Rdn>, <Rm> ; Rdn = Rdn + Rm + C
SBCS <Rdb>, <Rm> ; Rdn = Rdn - Rm - NOT(C)
; = Rdn + NOT(Rm) + C
MULS <Rdm>, <Rn>, <Rdm> ; Rdm = Rn + Rdm