
DR
AFT
DR
AFT
DRAFT
DR
D
RAFT
DRAFT
DRA
FT DRAF
D
RAFT DRAFT DRAFT DRAFT DRAFT D
DRAFT
D
RAFT DRA
FT DRAFT DRAFT DRAFT DRA
UM10360_0
© NXP B.V. 2009. All rights reserved.
User manual
Rev. 00.06 — 5 June 2009
622 of 808
NXP Semiconductors
UM10360
Chapter 34: Appendix: Cortex-M3 User Guide
The permitted shift lengths depend on the shift type and the instruction, see the individual
instruction description or
. If the shift length is 0, no shift occurs. Register
shift operations update the carry flag except when the specified shift length is 0. The
following sub-sections describe the various shift operations and how they affect the carry
flag. In these descriptions,
Rm
is the register containing the value to be shifted, and
n
is
the shift length.
2.3.4.1
ASR
Arithmetic shift right by
n
bits moves the left-hand
32
-
n
bits of the register
Rm
, to the right
by
n
places, into the right-hand
32
-
n
bits of the result. And it copies the original bit[31] of
the register into the left-hand
n
bits of the result. See
You can use the ASR #
n
operation to divide the value in the register
Rm
by 2
n
, with the
result being rounded towards negative-infinity.
When the instruction is
ASRS
or when ASR #
n
is used in
Operand2
with the instructions
MOVS
,
MVNS
,
ANDS
,
ORRS
,
ORNS
,
EORS
,
BICS
,
TEQ
or
TST
, the carry flag is updated to the last bit
shifted out, bit[
n
-1], of the register
Rm
.
Note
•
If
n
is 32 or more, then all the bits in the result are set to the value of bit[31] of
Rm
.
•
If
n
is 32 or more and the carry flag is updated, it is updated to the value of bit[31] of
Rm
.
2.3.4.2
LSR
Logical shift right by
n
bits moves the left-hand
32
-
n
bits of the register
Rm
, to the right by
n
places, into the right-hand
32
-
n
bits of the result. And it sets the left-hand
n
bits of the
result to 0. See
.
You can use the LSR #
n
operation to divide the value in the register
Rm
by 2
n
, if the value
is regarded as an unsigned integer.
When the instruction is
LSRS
or when LSR #
n
is used in
Operand2
with the instructions
MOVS
,
MVNS
,
ANDS
,
ORRS
,
ORNS
,
EORS
,
BICS
,
TEQ
or
TST
, the carry flag is updated to the last bit
shifted out, bit[
n
-1], of the register
Rm
.
Note
•
If
n
is 32 or more, then all the bits in the result are cleared to 0.
Fig 138. ASR #3
&DUU\
)ODJ