Este es mi aporte sobre una rutina para convertir binario de 8 bits en BCD, me gustaria que comenten y si alguien tiene ademas alguna propuesta diferente o desea contribuir a hacer mas eficiente este codigo, seria genial.
El dato a convertir en BCD se encuentra en el registro DATO. Los registros RACCx son los registros que almacenan las unidades, decenas y centenas (Registro Acumulador), COUNT el el registro de comparacion, es decir una vez que este registro se iguale a DATO, entonces se ha dado con el equivalente BCD.
bin2bcd: clrf COUNT
clrf RACCU
clrf RACCD
clrf RACCC
mLoop: movf COUNT,0
xorwf DATO,0
btfsc STATUS,Z
return
incf COUNT,1
incf RACCU,1
movlw 0x0A
xorwf RACCU,0
btfss STATUS,Z
goto mLoop
clrf RACCU
incf RACCD,1
movlw 0x0A
xorwf RACCD,0
btfss STATUS,Z
goto mLoop
clrf RACCD
incf RACCC,1
return
Espero sus comentarios. Saludos...!!!