When you multi two number (< 256) you need two location to store result one for lower 256 and one for higher than 256
ex:
you have SECOND_NUM to store lower, and over256 to store higher
100*100=10000 =hex 2710 then
SECOND_NUM=0x10 (16 dec)
over256=0x27 (39 dec)
Code:
clrf over256
MULTI:
MOVF RESULT,W
ADDWF SECOND_NUM,F
btfsc STATUS,C ;is > 256 (carry bit set)
incf over256 ; so add 1
DECFSZ FIRST_NUM
GOTO MULTI
RETURN