Hola Santiago
gracias por la respuesta y comentarte que esa era la idea. Pero no se como multiplicar. Es decir que deduje que debia hacer todo eso pero no hay la instruccion multiplicacion. Asi que hay que hacer sumas sucesivas. Pero ya lo consegui asi que escribo lo que hice para que quede constancia de que fue solucionado y funciono muy bien.
recibe_hora
movwf Hora
andlw 0x0f
movf Hora,w
movwf aux_hora
clrw
arriba
addlw 0x0A
decf aux_hora,1
btfss STATUS,Z
goto arriba
movwf Hora
goto vuelveh ;salir de subrutina
hora2
btfsc rx1,2 ;debo recibir minutos 1
goto minutos1 ;voy a recibir minutos
andlw 0x0f ;elimino los 4 bits mas significativos para obtener el digito
addwf Hora,1 ;lo sumo al digito antes almacenado
bueno algo asi, lo que pasa es que ahorita mismo no tengo el mplab para mostrarlo mas pulcro jaja. ademas que no se entiende bien ya que es una parte de codigo de un programa mas grande. que de paso es un reloj (que se muestra en un lcd 2x16) que se puede inicializar desde el hyperterminal.
No lo hice como funcion porque es algo bastante simple y porque estaba muy apurado. subiria la aplicacion pero es algo sencillo.
aunque quien sabe, a lo mejor a alguien le sirve.