I just begin to study ARM assembly language, and am not clear about how to use MOV to transfer an immediate number into a register.
From both the ARM reference manual
A single ARM instruction can only encode an immediate constant that can be represented as an 8-bit immediate value, shifted by any even power of two.
However, there is also a MVN
instruction, which is like MOV
but inverts all the bits. So, while MOV R2, #0xFFFFFFFF
cannot be encoded as a MOV
instruction, it can be encoded as MVN R2, #0
. The assembler may well perform this conversion for you.