4.3.4. MOV and MVN

Move and Move Not.


MOV{cond}{S} Rd, Operand2
MVN{cond}{S} Rd, Operand2



is an optional condition code (see Conditional execution).


is an optional suffix. If S isspecified, the condition code flags are updated on the result of the operation (see Conditional execution).


is the ARM register for the result.


is a flexible second operand. See Flexible second operand for details of the options.


The MOV instruction copies the value of Operand2 into Rd.

The MVN instruction takes the value of Operand2, performs a bitwise logical NOT operation on the value, and places the result into Rd.

In certain circumstances, the assembler can substitute MVN for MOV, or MOV for MVN. Be aware of this when reading disassembly listings. See Instruction substitution for details.

Condition flags

If S is specified, these instructions:

  • update the N and Z flags according to the result

  • can update the C flag during the calculation of Operand2 (see Flexible second operand)

  • do not affect the V flag.

Use of r15

If you use r15 as Rn, the value used is the address of the instruction plus 8.

If you use r15 as Rd:

  • Execution branches to the address corresponding to the result.

  • If you use the S suffix, the SPSR of the current mode is copied to the CPSR. You can use this to return from exceptions (see the Handling Processor Exceptions chapter in ADS Developer Guide).


Do not use the S suffix when using r15 as Rd in User mode or System mode. The effect of such an instruction is unpredictable, but the assembler cannot warn you at assembly time.

You cannot use r15 for Rd or any operand in any data processing instruction that has a register-controlled shift (see Flexible second operand).


These instructions are available in all versions of the ARM architecture.


    MOV     r5,r2
    MVNNE   r11,#0xF000000B
    MOVS    r0,r0,ASR r3

Incorrect examples

    MVN     r15,r3,ASR r0   ; r15 not allowed with register
                            ; controlled shift
Copyright © 2000, 2001 ARM Limited. All rights reserved.ARM DUI 0068B