The Cortex-M4 Instruction Set
ARM DUI 0553A
Copyright © 2010 ARM. All rights reserved.
3-14
ID121610
Non-Confidential
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
.
Figure 3-1 ASR #3
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
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.
•
If
n
is 33 or more and the carry flag is updated, it is updated to 0.
Figure 3-2 LSR #3
LSL
Logical shift left by
n
bits moves the right-hand
32
-
n
bits of the register
Rm
, to the left by
n
places,
into the left-hand
32
-
n
bits of the result. And it sets the right-hand
n
bits of the result to 0. See
Carry
Flag
0
31
5 4 3 2 1
Carry
Flag
0
31
5 4 3 2 1
0
0
0