Thumb Instruction Reference
ARM DUI 0068B Copyright © 2000, 2001 ARM Limited. All rights reserved. 5-29
Condition flags
MOV Rd,#expr
and
MVN
instructions update the N and Z flags. They have no effect on the
C or V flags.
NEG
instructions update the N, Z, C, and V flags.
MOV Rd, Rm
behaves as follows:
• if either
Rd
or
Rm
is a high register (
r8
-
r15
), the flags are unaffected
• if both
Rd
and
Rm
are low registers (
r0
-
r7
), the N and Z flags are updated, and C
and V flags are cleared.
Note
You can use
LSL
, with a shift of zero, to move between low registers without
clearing the C and V flags (see ASR, LSL, LSR, and ROR on page 5-24).
Architectures
These instructions are available in all T variants of the ARM architecture.
Examples
MOV r3,#0
MOV r0,r12 ; does not update flags
MVN r7,r1
NEG r2,r2
Incorrect examples
MOV r2,#256 ; immediate value out of range
MOV r8,#3 ; cannot move immediate to high register
MVN r8,r2 ; high registers not allowed with MVN or NEG
NEG r0,#3 ; immediate value not allowed with MVN or NEG