Operations:

Syntax:

Operation:

Operands:

Program Counter:

Opcode

Comment

Stack

ROL Rd

C:Rd = ROL(Rd:C)

0 <= d <= 31

PC = PC + 1

000111dddddddddd

Description

Shifts all bits in Rd one place to the left. The C flag is shifted into bit 0 of Rd. Bit 7 is shifted into the C flag. This operation, combined with LSL, effectively multiplies multi-byte signed and unsigned values by two.

Status Register (SREG) and Boolean Formula

I

T

H

Rd3

S

N XOR V, for signed tests.

V

N XOR C, for N and C after the shift.

N

R7

Set if MSB of the result is set; cleared otherwise.

Z

~R7 AND ~R6 AND ~R5 AND ~R4 AND ~R3 AND ~R2 AND ~R1 AND ~R0

Set if the result is 0x00; cleared otherwise.

C

Rd7

Set if, before the shift, the MSB of Rd was set; cleared otherwise.

R (Result)

R (Result) equals Rd after the operation.

Example:

      lsl   r18     ; Multiply r19:r18 by two
      rol   r19     ; r19:r18 is a signed or unsigned two-byte integer
      brcs  oneenc  ; Branch if carry set
      ...
oneenc: 
      nop           ; Branch destination (do nothing)

Words

1 (2 bytes)

Table Cycles

Name

Cycles

AVRe

1

AVRxm

1

AVRxt

1

AVRrc

1