Thumb Instruction Reference
ARM DUI 0068B Copyright © 2000, 2001 ARM Limited. All r ights reserved. 5-9
5.1.3 LDR and STR, pc or sp relative
Load Register and Store Register. Address in memory specified as an immediate offset
from a value in the pc or the sp.
Note
There is no pc-relative
STR
instruction.
Syntax
LDR Rd, [pc, #immed_8x4]
LDR Rd, label
LDR Rd, [sp, #immed_8x4]
STR Rd, [sp, #immed_8x4]
where:
Rd
is the register to be loaded or stored.
Rd
must be in the range r0 to r7.
immed_8x4
is the offset. It is an expression evaluating (at assembly time) to a multiple
of 4 in the range 0 to 1020.
label
is a program-relative expression. See Register-relative and
program-relative expressions on page3-23 for more information.
label
must be after the current instruction, and within 1KB of it.
Usage
STR
instructions store a word to memory.
LDR
instructions load a word from memory.
The address is found by adding the offset to the base address from pc or sp. Bit[1] of the
pc is ignored. This ensures that the address is word-aligned.
Address alignment for word and halfword transfers
The address must be a multiple of 4.
If your system has a system coprocessor (cp15), you can enable alignment checking.
Non-aligned transfers cause an alignment exception if alignment checking is enabled.