
 94
SAM4CP [DATASHEET]
43051E–ATPL–08/14
Restrictions
Rd
 must not be SP and must not be PC.
Condition Flags
This instruction does not change the flags.
Examples
ADR     R1, TextMessage   ; Write address value of a location labelled as
                          ; TextMessage to R1
12.6.4.2 LDR and STR, Immediate Offset
Load and Store with immediate offset, pre-indexed immediate offset, or post-indexed immediate offset.
Syntax
op
{
type
}{
cond
} 
Rt
, [
Rn
 {, #
offset
}]        ; immediate offset
op
{
type
}{
cond
} 
Rt
, [
Rn
, #
offset
]!          ; pre-indexed
op
{
type
}{
cond
} 
Rt
, [
Rn
], #
offset
           ; post-indexed
op
D{
cond
} 
Rt
, 
Rt2
, [
Rn
 {, #
offset
}]        ; immediate offset, two words
op
D{
cond
} 
Rt
, 
Rt2
, [
Rn
, #
offset
]!          ; pre-indexed, two words
op
D{
cond
} 
Rt
, 
Rt2
, [
Rn
], #
offset
           ; post-indexed, two words
where:
op
is one of:
LDR
Load Register.
STR
Store Register.
type
is one of:
B
unsigned byte, zero extend to 32 bits on loads.
SB
signed byte, sign extend to 32 bits (LDR only).
H
unsigned halfword, zero extend to 32 bits on loads.
SH
signed halfword, sign extend to 32 bits (LDR only).
-
omit, for word.
cond
is an optional condition code, see 
“Conditional Execution”
.
Rt
is the register to load or store.
Rn
is the register on which the memory address is based.
offset
is an offset from 
Rn
. If 
offset
 is omitted, the address is the contents of 
Rn
.
Rt2
is the additional register to load or store for two-word operations.
Operation
LDR instructions load one or two registers with a value from memory.
STR instructions store one or two register values to memory.
Load and store instructions with immediate offset can use the following addressing modes:
Offset Addressing 
The offset value is added to or subtracted from the address obtained from the register 
Rn
. The result is used as the
address for the memory access. The register 
Rn
 is unaltered. The assembly language syntax for this mode is:
[
Rn
, #
offset
]
Pre-indexed Addressing
The offset value is added to or subtracted from the address obtained from the register 
Rn
. The result is used as the
address for the memory access and written back into the register 
Rn
. The assembly language syntax for this mode is:
[
Rn
, #
offset
]!