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
]!