Programación General > ASM (Ensamblador)
Inicializar Una Variable E Imprimirla
(1/1)
tirengarfio:
Saludos,
este codigo de aqui abajo creo que inicializa la variable dato1 a 23, ¿es correcto?
--- Código: Text --- DOSSEG .MODEL SMALL .STACK 100h .DATAdato1 DB 35h .CODE INICIO: mov ax,@data mov ds,ax mov dato1, 23 FIN: mov ah,4ch int 21h END inicio
Ahora me gustaria poder sacar por pantalla el contenido de dato1. Tanto el hexadecimal como en binario. ¿Como se hace?
Eternal Idol:
--- Cita de: "tirengarfio" ---este codigo de aqui abajo creo que inicializa la variable dato1 a 23, ¿es correcto?
--- Fin de la cita ---
Le asigna el valor 23 (mov dato1, 23), al declararla la inicializas a 53 (35 en hex) no se con que objeto.
--- Cita de: "tirengarfio" ---Ahora me gustaria poder sacar por pantalla el contenido de dato1. Tanto el hexadecimal como en binario. ¿Como se hace?
--- Fin de la cita ---
Tenes que buscar los servicios que quieras usar (ya sea de la BIOS o de MS-DOS) para imprimir en pantalla (hay servicios para imprmir un caracter o una cadena). Cuando aprendas a trabajar con ellos sabras que lo que usan como input son codigos ASCII en definitiva, entonces sabras que tu numero entero lo tenes que transformar en caracteres para poder mostrar en pantalla.
Hay varios hilos donde ya se habla de este tema en el foro, seguramente te seran de ayuda.
tirengarfio:
Gracias Eternal.
Has escrito:
--- Citar ---Le asigna el valor 23 (mov dato1, 23), al declararla la inicializas a 53 (35 en hex) no se con que objeto.
--- Fin de la cita ---
Con esta linea,
--- Código: Text ---dato1 DB 35h
pensaba que estaba creando la variable dato y asignandole una posicion en memoria. Algo asi como reservar memoria para un puntero en C, y que luego con
--- Código: Text ---mov dato1, 23
le daba el valor 23. Entonces, ¿no hace falta reservar memoria primeramente?
Segun me dices tambien, la inicializacion la he hecho a 53 en decimal, pero...¿la "h" (53h) que hay detras no indica que la inicializacion la estaria haciendo en hexadecimal?
Eternal Idol:
--- Cita de: "tirengarfio" ---pensaba que estaba creando la variable dato y asignandole una posicion en memoria. Algo asi como reservar memoria para un puntero en C, y que luego con
le daba el valor 23. Entonces, ¿no hace falta reservar memoria primeramente?
--- Fin de la cita ---
Ese codigo es equivalente a declarar una variable global de tipo unsigned char en C.
unsigned char dato1 = 0x35; que obviamente es lo mismo que unsigned char dato1 = 53;
Con eso tendras un campo reservado en la seccion de datos del programa.
--- Cita de: "tirengarfio" ---Segun me dices tambien, la inicializacion la he hecho a 53 en decimal, pero...¿la "h" (53h) que hay detras no indica que la inicializacion la estaria haciendo en hexadecimal?
--- Fin de la cita ---
No tenes 53h sino 35h que es 53, 53h es 83. Fijate bien eso ya que antes pusiste 10h, eso es 16 y en realidad querias 10 que es Ah.
Navegación
Ir a la versión completa