Creo que ahora sí tengo la respuesta, no he probado si funciona, pero MPLAB sí lo compila sin errores. Lo único que hice fue agregar paréntesis a cada variable.
----------------
; mult. 16x8 bits = 24 bits
LIST P=16f84a
include "p16f84a.inc"
AA EQU 0x10 ; multiplicado
BB EQU 0x13 ; multiplicador
CC EQU 0x14 ; resultado
bitCount EQU 0x17
ORG 0
goto inicio
ORG 5
;Establece terminales e/s
inicio
clrf (CC+0) ;clear result
clrf (CC+1) ;
clrf (CC+2) ;
movlw .8
movwf bitCount ;bit counter set @ number of bits in multiplier
mul_L1 ;main loop here
rlf (CC+2),f ;rotate result left (*2)
rlf (CC+1),f ;
rlf (CC+0),f ;
bcf (CC+2),0 ;clear LSB of result after rotation
btfss BB,7 ;test msb of multipier
goto dontAdd ;if bit is clear then dont add
movfw (AA+1) ;Add the 16 bits of AA to product
addwf (CC+2),f ;
skpnc ;
incf (CC+1),f ;
movfw AA ;
addwf (CC+1),f ;
skpnc ;
incf (CC+0),f ;
dontAdd
rlf BB,f ;rotate multiplier left
decfsz bitCount,f ;chk if finished all bits in multiplier
goto mul_L1
end
----------------------