.def mc8u =r16   ;множитель
.def mp8u =r17   ; множимое L
.def m8uL =r17   ; результат L
.def m8uH =r18   ; результат H
.def mcnt8u =r19; счётчик сдвигов


mpy8u_c:
clr m8uH      ; очистить старший байт результата
ldi mcnt8u, 8   ; взвести счетчик сдвигов
lsr mp8u      ; показать младший бит множимого в C

m8u_1:
brcc m8u_2      ;если бит множимого =0 пропустить сложение множителя с результатом
add m8uH, mc8u   ;если бит множимого =1 сложить множитель с результатом

m8u_2:
ror m8uH      ;
ror m8uL      ; показать младший бит множимого в C
dec mcnt8u      ;
brne m8u_1      ; уменьшить счетчик сдвигов на 1 и если цикл не окончен вернуться
; !!!!!!!!!! важно, команды DEC INC не меняют значение флага C