Atmel AVR assembly language multiplying by 2
Refer to the AVR Instruction Set document.

For the least significant byte you want a LSL – Logical Shift Left. Shift a 0 in as least significant bit and remember the highest bit in the Carry flag.

Then for the subsequent higher bytes, you want a ROL – Rotate Left trough Carry. You shift the remembered bit from carry into the right (least significant) bit and the bit that is shifted out at the high side is pushed into carry.

You chose to use R18 as LSB and R21 as MSB, nothing wrong with that.



Read the above image from top right (LSB is being processed first) to bottom left.