Matematicke operacie - teoria

Ahojte,
na nasobenie a delenie som doteraz pouzival vlastne procedury ktore pracovali na principe opakovaneho pripocitavania alebo odcitavania cisla v cykle. Avsak teraz ked uz potrebujem pracovat s vacsimi cislami, by som rad porozumel principu na akom pracuju zakladne matematicke operacie vyvinute trochu vacsimi programatormi ako som ja.
Videl som v zdrojakoch ze riesi sa to rotaciami, ale neviem sa z toho vysomarit.
Rozumiem tomu niekto a mohol by to tu trochu objasnit, pripadne potesi aj link na stranku kde je princip vysvetleny.
Nemam zaujem o odkazy na hotove programy, mna zaujima ta teoria okolo toho ako to pracuje. Ako vzorovy prikladam funkcny programik na nasobenie cisla PRODLO obsahom registra W kde vysledok je ulozeny do PRODHI:PRODLO. Chapem co ktora instrukcia urobi, rozumiem tomu ako to tam skace, je mi jasne ze RRF vydeli obsah registru dvoma a STATUS,C sa naplna spodnym bitom toho co sa rotovalo, ale ako celok mi to nie je jasne, ze ako je mozne ze to dojde k spravnemu vysledku. Vlastne delenim cisel dvojkou dokaze vynasobit dane cisla. Moze tu niekto pls popisat trochu teorie ohladom nasobenia, pripadne delenia? Vdaka.
10x8:

	org	00h
	goto	INIT
INIT
    movlw D'10'
    MOVWF PRODLO
    MOVLW D'8'

	CLRF PRODHI
	CLRF COUNT
	BSF COUNT,3
	RRF PRODLO,F
LOOP:
	SKPNC
	ADDWF PRODHI,F

	RRF PRODHI,F
	RRF PRODLO,F

	DECFSZ COUNT
	GOTO LOOP
	END

Základem je tohle: AxB=Ax(B0+B1+B2+B3+B4+…+Bn)=AxB0+AxB1+AxB2…+AxBn kde B0 az Bn jsou 1,2,4,8,16,…2^n Operace nasobeni 2 je posun (rotace) vlevo.

Princip je rovnaky, ako ked nasobis rucne na papieri. Ak si to teda este zo skoly pamatas.
Akurat zjednodusenie je v tom, ze násobis bud nulou, alebo jednickou vsetky bity druheho cisla. Kazdy rad je posunuty o jeden bit. Smer zavisi, ci si zacal nasobit od MSB, alebo od LSB.