SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: tirengarfio en Sábado 1 de Diciembre de 2007, 20:55
-
Saludos,
este codigo de aqui abajo creo que inicializa la variable dato1 a 23, ¿es correcto?
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
dato1 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?
-
este codigo de aqui abajo creo que inicializa la variable dato1 a 23, ¿es correcto?
Le asigna el valor 23 (mov dato1, 23), al declararla la inicializas a 53 (35 en hex) no se con que objeto.
Ahora me gustaria poder sacar por pantalla el contenido de dato1. Tanto el hexadecimal como en binario. ¿Como se hace?
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.
-
Gracias Eternal.
Has escrito:
Le asigna el valor 23 (mov dato1, 23), al declararla la inicializas a 53 (35 en hex) no se con que objeto.
Con esta linea,
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?
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?
-
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?
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.
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?
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.