suba
Subtract address
Subtracts the first operand from an address register, sign extending a word to long and leaving sr unchanged.
Sizes .w .l, .w by default
XNZVC –––––
- Changes no flag
Forms
Operands
<ea>- An operand using one of the instruction’s supported addressing modes, such as
d0,(a0)+or4(a1). It may name a register, memory or an immediate value. More An- An address register,
a0toa7;spis another name fora7. More #imm- An immediate value written after
#: a number, character or label, such as#10,#$FFor#'a'. It must fit the operation’s size: byte-128to255, word-32768to65535, or long-2147483648to4294967295; signed and unsigned spellings are accepted. More
It does not change the SR. When using word size, the first operand is sign extended to long and the second is read and written as a long.
* --- Word is sign-extended before subtracting ---
move.l #$10000, a0
suba.w #$0002, a0
* --- Does NOT affect flags ---
move.l #0, d0
tst d0
suba.l #$FFFFF, a1 ; flags unchanged (Z still set)