un numeros de 16bits el valor maximo es 131072 binario decimal.
tienes que dividir el numero tal por 100000 y si el numero es mayor de 100000
el carri se activaria y entonces tienes una centena de 1000. si el carri no se activa entonces el numero es menor que 100000.
y asi sucesivamente.
asi es para multiplicar a 16 bits .es tedioso
no se si te de la idea de convertir de 16bits a numeros de ocho bits.
tienes que hacer la inversa.
suerte
el valor maximo de este ejemplo es 500000
para hacer sumas secesivas de ochos bits hasta 32 bits.
hay bitsL bitsH bits_alto
para convertir un numero de 16bits tendra que hacer lo contrario
dividir por 100000 despues por 1000 y sacaras las centenas de mil,. decenas de mil, unidad de mil y asi sucesivamente.
dividir son restas sucesivas.
te anexo algo que te puede servir.
suerte
INICIO
BSF STATUS,5
BCF STATUS,6
CLRF PORTB
MOVLW B'00000001'
MOVWF PORTA
BCF STATUS,5
CLRF RESULT_L
CLRF RESULT_H
CLRF RESULTALTO
CLRF YOYO
;CLRF CEN
;CLRF MIL
;CLRF DEC
;MOVLW 3
;MOVWF MIL_H
;MOVLW H'E8'
;MOVWF MIL_L
;MOVLW .100
;MOVWF CEN_L
MOVLW .0
MOVWF VALORH
MOVLW .50
MOVWF VALORL
MOVLW .232
MOVWF REFE_L
MOVLW .1
MOVWF REFE_H
COMI MOVF VALORH,W
ADDWF RESULT_H,1
BTFSS STATUS,0
GOTO MR
GOTO RE
MR MOVF VALORL,0
ADDWF RESULT_L,1
BTFSS STATUS,C
GOTO HE
GOTO MO
HE DECFSZ REFE_L,1
GOTO COMI
MOVF REFE_H,0
XORLW .0
BTFSS STATUS,2
GOTO KI
TER GOTO TER
KI INCF YOYO,1
MOVF REFE_H,0
SUBWF YOYO,0
XORLW .1
BTFSS STATUS,2
GOTO COMI
GOTO TER
RE INCF RESULTALTO,1
MOVF VALORL,0
ADDWF RESULT_L,1
BTFSS STATUS,0
GOTO HE
GOTO MO
MO MOVLW .1
ADDWF RESULT_H,1
BTFSS STATUS,0
GOTO HE
INCF RESULTALTO,1
GOTO COMI
END
disculpa el enredo