aqui esta tu solucion amigo jonathan. como tienes un numero que sobre pasa los 8bits, necesitas pasar esas dos o tres palabras de 8 bits a numeros individuales, unidad, decena, centena, unidad de mil, centena de mil, etc etc o que es lo mismo, debes pasarlo a bcd.
esta preciosa rutina que dare lo hace a la perfeccion. tiene 3 registros que son DATOL, DATOM Y DATOH, aqui vas a poner el numero binario que deseas convertir, DATOL, es el menos signifcativo, DATOM es el siguiente y DATOH es el mas significativo, osea que puedes convertir hasta 24bits, pero si son dos palabras nada mas, entonces pones la primera tuya en DATOL, la segunda en DATOM, y DATOh le pones 00h. Tienes 6 registros llamados DATO1,DATO2,DATO3,DATO4,DATO5,DATO6 que son los resultados, doned DATO1 ES EL MENOS SIGNIFICATIVO Y DATO 6 EL MAS. ejemplo.
pones 00h en DATOH, pones 00H EN DATOM, y pones FFh en DATOL, en total tendras el valor 255 en decimal, al hacer la rutina te quedara el 5 en DATO1, el 5 en DATO2, y el 2 en DATO3, todo los demas DATO4 A DATO6 seran 00h.
la rutina comienza en B2, asi que primero asegurate de limpear poniendo 00h a todo los registros DATO, luego pones tus valores en DATOL,My H, y haces un call B2, y tendras tu resultado
;*****************************************************************************************
; BINARIO BCD
;*****************************************************************************************
B2 MOVF DATOL,0
BTFSS STATUS,Z
GOTO INCRE
GOTO CHQ
INCRE DECF DATOL
INCF DATO1
MOVF DATO1,0
XORLW 0AH
BTFSS STATUS,Z
GOTO B2
CLRF DATO1
INCF DATO2
MOVF DATO2,0
XORLW 0AH
BTFSS STATUS,Z
GOTO B2
CLRF DATO2
INCF DATO3
MOVF DATO3,0
XORLW 0AH
BTFSS STATUS,Z
GOTO B2
CLRF DATO3
INCF DATO4
MOVF DATO4,0
XORLW 0AH
BTFSS STATUS,Z
GOTO B2
CLRF DATO4
INCF DATO5
MOVF DATO5,0
XORLW 0AH
BTFSS STATUS,Z
GOTO B2
CLRF DATO5
INCF DATO6
GOTO B2
CHQ MOVF DATOM,0
BTFSS STATUS,Z
GOTO INCRE2
GOTO CHQ2
INCRE2 DECF DATOM
GOTO INCRE
CHQ2 MOVF DATOH,0
BTFSS STATUS,Z
GOTO INCRE3
RETURN
INCRE3 DECF DATOH
MOVLW 0FFH
MOVWF DATOM
GOTO INCRE