Multiply 8 bits by 8 bits in software based on code from http://elm-chan.org/
;-----------------------------------------------------------------------------: ; 8bit x 8bit signed multiply ; ; Register variables: ; Call: var10 = 8bit multiplicand ; var11 = <don't care> ; var20 = 8bit multiplier ; lc = <don't care> (high register must be allocated) ; ; Result:var1[1:0] = 16bit result of var10 * var20 ; var20 = <not changed> ; lc = 0 ; ; Size = 24 words ; Clock = 80 cycles (+ret) ; Stack = 0 byte mul08s: clr lc tst var10 brpl PC+3 inc lc neg var10 tst var20 brpl PC+3 inc lc neg var20 bst lc,0 sub var11,var11 ;initialize variables ldi lc,9 ; lc = 9; brcc PC+2 ;---- calcurating loop add var11,var20 ; ror var11 ; ror var10 ; dec lc ;if (--lc > 0) brne PC-5 ; continue loop; brtc PC+5 com var10 com var11 adc var10,lc adc var11,lc ret