2.6.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. Refer to Figure 2-14.

You can use the ASR #n operation to divide the value in the register Rm by 2n, 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 2-14. ASR#3