The STM32 Cortex-M4 instruction set PM0214
98/262 PM0214 Rev 9
3.5.14 SASX and SSAX
Signed Add and Subtract with Exchange and Signed Subtract and Add with Exchange.
Syntax
op{cond} {Rd}, Rm, Rn
Where:
• op is any of the following:
SASX: Signed add and subtract with exchange.
SSAX: Signed subtract and add with exchange.
• ‘cond’ is an optional condition code (see Conditional execution on page 65).
• ‘Rd’ is the destination register.
• ‘Rn’ ,‘Rm’ are the registers holding the first and second operands.
Operation
The SASX instruction:
1. Adds the signed top halfword of the first operand with to the signed bottom halfword of
the second operand.
2. Writes the signed result of the addition to the top halfword of the destination register.
3. Subtracts the signed bottom halfword of the second operand from the top signed
highword of the first operand.
4. Writes the signed result of the subtraction to the bottom halfword of the destination
register.
The SSAX instruction:
1. Subtracts the signed bottom halfword of the second operand from the top signed
highword of the first operand.
2. Writes the signed result of the addition to the bottom halfword of the destination
register.
3. Adds the signed top halfword of the first operand to the signed bottom halfword of the
second operand.
4. Writes the signed result of the subtraction to the top halfword of the destination register.
Restrictions
Do not use SP and do not use PC.
Condition flags
These instructions do not affect the condition code flags.
Examples
SASX R0, R4, R5 ; Adds top halfword of R4 to bottom halfword of R5 and
; writes to top halfword of R0
; Subtracts bottom halfword of R5 from top halfword of R4
; and writes to bottom halfword of R0
SSAX R7, R3, R2 ; Subtracts top halfword of R2 from bottom halfword of R3
; and writes to bottom halfword of R7