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
0
31
5 4 3 2 1
Carry
Flag
0
31
5 4 3 2 1
0
0
0