rendered paste body;wejscie r2,r3,r4,r5 ;3 bajty-r2,r3,r4
;komorka r6 jest pomocniczna, do przechowywania pol-wynikow
; 12 34 56 | r4 r3 r2
;* 12 |* r5
mnozenie:
mov a,r2 ;[56h]
mov b,r5 ;[12h]
mul ab ;[b=06h, a=0ch]
mov r2,a ;w r2 jest juz najmlodszy bajt (0) wyniku ! [0ch]
mov r6,b ;mlodsza czesc bajtu 1 [06h]
mov a,r3 ;[34h]
mov b,r5 ;[12h]
mul ab ;[b=03h, a=a8h, r6=06h]
push acc ;przechowanie wyniku
anl a,#08h ;usuniecie starszej czesci bajtu [a=08h]
add a,r6 ;wynik mlodszej czesci bajtu 1 (08h+06h) [0eh]
mov r6,a ;zapisanie wyniku do rej. pomoc.
pop acc ;[b=03h, a=a8h, r6=0eh]
anl a,#80h ;usuniecie mlodszej czesci bajtu [a=a0h]
anl a,r6 ;polaczenie bajtu (1) [a=aeh]
mov r3,a ;w r3 jest juz bajt (1) wyniku ! [aeh]
mov r6,b ;mlodsza czesc bajtu 2 [03h]
mov a,r4 ;[12h]
mov b,r5 ;[12h]
mul ab ;[b=01h, a=44h, r6=03h]
push acc
anl a,#08h ;usuniecie starszej czesci bajtu [a=04h]
add a,r6 ;wynik mlodszej czesci bajtu 2 (04h+03h)
mov r6,a ;zapisanie wyniku w rej. pomocniczym
pop acc ;[b=01h, a=44h, r6=07h]
anl a,#80h ;usuniecie mlodszej czesci bajtu [a=40h]
orl a,r6 ;polaczenie bajtu (2) [a=47h]
mov r4,a ;w r4 jest juz bajt (2) wyniku ! [47h]
mov r6,b ;mlodsza czesc bajtu 3 [01h]
mov r5,b ;w r5 jest juz najstarszy bajt (3) wyniku ! [01h]
ret
END