Programmer’s Model
2-20
Copyright © 2005-2008 ARM Limited. All rights reserved.
ARM DDI 0337G
Non-Confidential
Unrestricted Access
Memory signed halfword [15:0] from base register address
immediate 8-bit offset, preindexed
LDRSH.W <Rxf>, [<Rn>, #<+/–<offset_8>]
!
Memory signed halfword [15:0] from register address shifted
left by 0, 1, 2, or 3 places
LDRSH.W <Rxf>, [<Rn>, <Rm>{, LSL #<shift>}]
Memory signed halfword from PC address immediate 12-bit
offset
LDRSH.W <Rxf>, [PC, #+/–<offset_12>]
Logical shift left register value by number in register
LSL{S}.W <Rd>, <Rn>, <Rm>
Logical shift right register value by number in register
LSR{S}.W <Rd>, <Rn>, <Rm>
Multiply two signed or unsigned register values and add the
low 32 bits to a register value
MLA.W <Rd>, <Rn>, <Rm>, <Racc>
Multiply two signed or unsigned register values and subtract
the low 32 bits from a register value
MLS.W <Rd>, <Rn>, <Rm>, <Racc>
Move immediate 12-bit value to register
MOV{S}.W <Rd>, #<modify_constant(immed_12)>
Move shifted register value to register
MOV{S}.W <Rd>, <Rm>{, <shift>}
Move immediate 16-bit value to top halfword [31:16] of
register
MOVT.W <Rd>, #<immed_16>
Move immediate 16-bit value to bottom halfword [15:0] of
register and clear top halfword [31:16]
MOVW.W <Rd>, #<immed_16>
Move to register from status
MRS<c> <Rd>, <psr>
Move to status register
MSR<c> <psr>_<fields>,<Rn>
Multiply two signed or unsigned register values
MUL.W <Rd>, <Rn>, <Rm>
No operation
NOP.W
Logical OR NOT register value with immediate 12-bit value
ORN{S}.W <Rd>, <Rn>, #<modify_constant(immed_12)>
Logical OR NOT register value with shifted register value
ORN[S}.W <Rd>, <Rn>, <Rm>{, <shift>}
Logical OR register value with immediate 12-bit value
ORR{S}.W <Rd>, <Rn>, #<modify_constant(immed_12)>
Logical OR register value with shifted register value
ORR{S}.W <Rd>, <Rn>, <Rm>{, <shift>}
Reverse bit order
RBIT.W <Rd>, <Rm>
Reverse bytes in word
REV.W <Rd>, <Rm>
Table 2-5 32-bit Cortex-M3 instruction summary (continued)
Operation
Assembler