95. ROL – Rotate Left trough Carry
95.1. 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.
Operation:
←
C
¨
b7 - - - - - - - - - - - - - - - - - - b0
←
C
Syntax: Operands: Program Counter:
(i) ROL Rd 0 ≤ d ≤ 31 PC ← PC + 1
16-bit Opcode: (see ADC Rd,Rd)
0001 11dd dddd dddd
95.2. Status Register (SREG) and Boolean Formula
I T H S V N Z C
– – ⇔ ⇔ ⇔ ⇔ ⇔ ⇔
H Rd3
S N ⊕ V, for signed tests.
V N ⊕ C, for N and C after the shift.
N R7
Set if MSB of the result is set; cleared otherwise.
Z R7 • R6 • R5 • R4 • R3 • R2 • R1 • R0
Set if the result is $00; cleared otherwise.
C Rd7
Set if, before the shift, the MSB of Rd was set; cleared otherwise.
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)
Atmel AVR Instruction Set Manual [OTHER]
Atmel-0856L-AVR-Instruction-Set-Manual_Other-11/2016
143