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

[0] Índice de Mensajes

Ir a la versión completa