Que tal Julio,
Ahora si, "limosnero y con garrote"
Por que no solamente quieres la solucion sino que sea "elegante". Pues yo te recomiendo que le vistas de etiqueta.
Bueno menos bromas y mas accion.
A mi parecer el programa que hiscte es bueno y el codigo es relativamente sencillo. Existe una manera de hacer la multiplicacion un tanto mas sencilla y esta se realiza rotando a la izquierda el valor contenido en una variable. Esto hace que el valor se multiplique en 2. Ejemplo, si queremos multiplicar digamos 3 X 2, hacemos esto:
MOVLW 03H
MOVWF NUM
RLF NUM,F
Ahora bien si lo rotamos a la izquierda una vez mas el valor de NUM, entonces estariamos multiplicando 3 X 4, si la rotas una vez mas, seria 3X8.
Pero la pregunta es, como le hago para multiplicar NUM por 10. Lo hacemos asi (suponiendo que NUM = 3 dec)
RLF NUM,W ;W = NUM *2, esto es W = 6
MOVWF NUM ;NUM = 6
MOVWF AUX ;AUX = 6
RLF NUM,F ;NUM = NUM*2, esto es NUM =12
RLF NUM,W ;W = NUM*2, esto es W =24
ADDWF AUX,W ; W = 24 + 6, esto es W = 30
y entonces para obtener el binario del ascii, simplemente realizamos la suma de NUM2 con W, esto es
ADDWF NUM2,F ;NUM2 = NUM2 + 30
Asi de simple puedes hacerlo, esta es una forma mucho mas elegante, simple y mas eficiente.
Saludos y espero haber respondido tu duda. Perdon por no hacerlos antes, pero es muy dificil ingresar al foro como colaborador, ya que esta un poco enfermo el foro.
Elreypic.