Programación General > ASM (Ensamblador)
Extraer el valor literal de un registro
(1/1)
davirro:
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
Eternal Idol:
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
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.
davirro:
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
Eternal Idol:
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).
Navegación
Ir a la versión completa