He estado mirando en el datasheet, y no es tan dificil, como para implementarlo en assembler puro.
Estos ejemplos los he cogido del data:
Codigo:
EXAMPLE 7-1: 8 x 8 UNSIGNED MULTIPLY ROUTINE
MOVF ARG1, W ;
MULWF ARG2 ; ARG1 * ARG2 ->
; PRODH:PRODL
Muy simple, el producto lo recoges de los registros PRODH y PRODL.
Codigo:
EXAMPLE 7-2: 8 x 8 SIGNED MULTIPLY ROUTINE
MOVF ARG1, W
MULWF ARG2 ; ARG1 * ARG2 ->
; PRODH:PRODL
BTFSC ARG2, SB ; Test Sign Bit
SUBWF PRODH ; PRODH = PRODH
; - ARG1
BTFSC ARG1, SB ; Test Sign Bit
SUBWF PRODH ; PRODH = PRODH
; - ARG2
Los 16x16 son mas aparatosos, mira en el datasheet si eso.
salu2