Unsigned 32-bit multiply in AVR assembly
To do this correctly for multiplying a 4-byte value by two you have to ensure that the low bit of the low byte gets a '0' shifted into it. In the AVR instruction set this can be achieved with the following sequence of instructions assuming a value in r18:r19:r20:r21.

CLC
ROL R21
ROL R20
ROL R19
ROL R18


Note the need to shift first the low byte and then to propagate bits through carry for the rest of the shifts. The first CLC instruction takes care of assuring that the LSB of R21 ends up being '0'.