SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: davirro en Martes 7 de Octubre de 2008, 16:18
-
Hola a todos,
Quisiera poder imprimir en pantalla el valor literal de un registro.
Por ejemplo si tengo en el registro DX el valor 32h , uso el servicio 02h de la interrupcion 21h que imprime el valor en pantalla del registro DX, pero lo hace en su codigo ascii , osea "2" , cuando yo quiero ver el numero literal que es el 32.
Mi pregunta es si existe algun sistema facil o alguna instruccion que facilite esto, sino tendre que complicarme la vida separando los bits por nibbles y descodificar cada uno¿ algun consejo ?
un saludo
-
El registro DX es de 16 bits (2 bytes), ese servicio escribe un caracter (un byte) en pantalla:
http://www.ctyme.com/intr/rb-2554.htm (http://www.ctyme.com/intr/rb-2554.htm" onclick="window.open(this.href);return false;)
Por lo tanto si queres imprimirlo en hexadecimal tenes que conseguir el 3 y el 2 (mas '0' que es 48) para pasarle como parametro a ese servicio.
-
Gracias , creo que para eso podria ir corriendo de 4 en 4bits
Otra cosa que me corrompe ... estoy usando Fasm y cuando asigno un dato hexadecimal que enpieza por letra lo entiende como un texto y no como un número, lo soluciono poniendo un cero delante pero queda muy feo
asi va bien
mov AX,0Fh
asi me da error
mov AX,F0h
-
Si, podes usar un un shr 4 y un and 0Fh para eso. No te olvides de que si queres hexadecimal tenes que tener en cuenta las letras (hex + 'A' - 10) y no solo los numeros que se forman sumandole el valor ASCII de '0' (48).