Multiply by ShiftΒΆ
Multiplies numbers using bit shifting instead of MUL instruction.
1; Multiply by shift: compute 7 * 8 using shifts
2; Output: R16 = 56
3
4start:
5 ldi r17, 7 ; multiplicand
6 ldi r18, 8 ; multiplier
7 ldi r16, 0 ; result = 0
8
9loop:
10 ; if multiplier is zero, done
11 cpi r18, 0
12 breq done
13
14 ; if multiplier LSB is 1, add multiplicand
15 mov r19, r18
16 ldi r20, 1
17 and r19, r20
18 cpi r19, 1
19 brne no_add
20 add r16, r17
21
22no_add:
23 ; shift multiplicand left (*2)
24 ldi r20, 2
25 mul r17, r20
26
27 ; shift multiplier right (/2)
28 div r18, r20
29
30 jmp loop
31
32done:
33 jmp done
Demonstrates bit manipulation and efficient multiplication.