| |||
Home > Writing ARM Assembly Language > Load 32-bit values to a register using MOV32 |
In ARMv6T2 and later, both ARM and Thumb instruction sets include:
a MOV
instruction that
can load any value in the range 0x00000000
to 0x0000FFFF
into
a register
a MOVT
instruction that can load any
value in the range 0x0000
to 0xFFFF
into
the most significant half of a register, without altering the contents
of the least significant half.
You can use these two instructions to construct any 32-bit
immediate value in a register. Alternatively, you can use the MOV32
pseudo-instruction.
The assembler generates the MOV
, MOVT
instruction
pair for you.
You can also use the MOV32
instruction to load
addresses into registers by using a label or any PC-relative expression
in place of an immediate value. The assembler puts a relocation
directive into the object file for the linker to resolve the address
at link-time.
Assembler Reference: