SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: davirro en Martes 7 de Octubre de 2008, 16:18

Título: Extraer el valor literal de un registro
Publicado 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
Título: Re: Extraer el valor literal de un registro
Publicado por: Eternal Idol en Martes 7 de Octubre de 2008, 17:45
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.
Título: Re: Extraer el valor literal de un registro
Publicado por: davirro en Martes 7 de Octubre de 2008, 18:04
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
Título: Re: Extraer el valor literal de un registro
Publicado por: Eternal Idol en Martes 7 de Octubre de 2008, 18:26
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).