Cortex-M3 Processor (Reference Material)
UG0331 User Guide Revision 15.0 52
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
.
•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
.
Figure 18 • ASR#3
3.6.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 the following figure.
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
.
•If
n
is 32 or more, then all the bits in the result are cleared to 0.
•If
n
is 33 or more and the carry flag is updated, it is updated to 0.
Figure 19 • LSR
Carry
Flag
031 5 4 3 2 1
00
0