Mira a ver si asi te vale, aprovechando esta rutina de Suki:
;***************************
;*** Binario 8bits a BCD ***
;***************************
;<Binario>=><Centena, Decena,Unidad>
; REGISTROS
Binario
Centena
Decena
Unidad
;Rutina
Binario_BCD
movfw Binario
movwf Unidad
clrf Decena
clrf Centena
BCD_0
movlw d'10'
subwf Unidad,W
btfss STATUS,C
goto BCD_Fin
BCD_1
movwf Unidad
incf Decena,f
movlw d'10'
subwf Decena,W
btfss STATUS,C
goto BCD_0
BCD_2 clrf Decena
incf Centena,f
goto BCD_0
BCD_Fin
Le he implementado esto:
BCD_Fin
swappf Decena,W
addwf Unidad,f
Lo he probado con tres numeros y da bien el resultado, te quedan en "Unidad" las unidades y las decenas, hago un "swappf Decena,W", para pasar el nibble bajo al alto y al sumar ya quedan los dos valores en el mismo Byte, queda asi:
;***************************
;*** Binario 8bits a BCD ***
;***************************
;<Binario>=><Centena, Decena,Unidad>
; REGISTROS
Binario
Centena
Decena
Unidad
;Rutina
Binario_BCD
movfw Binario
movwf Unidad
clrf Decena
clrf Centena
BCD_0
movlw d'10'
subwf Unidad,W
btfss STATUS,C
goto BCD_Fin
BCD_1
movwf Unidad
incf Decena,f
movlw d'10'
subwf Decena,W
btfss STATUS,C
goto BCD_0
BCD_2 clrf Decena
incf Centena,f
goto BCD_0
BCD_Fin
[b]swappf Decena,W
addwf Unidad,f[/b][/code