SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: tirengarfio en Sábado 1 de Diciembre de 2007, 20:55

Título: Inicializar Una Variable E Imprimirla
Publicado 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?

Código: Text
  1.            DOSSEG
  2.            .MODEL SMALL
  3.            .STACK 100h
  4.            .DATA
  5. dato1  DB 35h
  6.            .CODE
  7.  
  8.  
  9. INICIO:
  10.         mov ax,@data
  11.         mov ds,ax
  12.         mov dato1, 23
  13.  
  14. FIN:
  15.      mov ah,4ch
  16.      int 21h
  17.      END inicio
  18.  


Ahora me gustaria poder sacar por pantalla el contenido de dato1. Tanto el hexadecimal como en binario. ¿Como se hace?
Título: Re: Inicializar Una Variable E Imprimirla
Publicado por: Eternal Idol en Sábado 1 de Diciembre de 2007, 21:03
Cita de: "tirengarfio"
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.

Cita de: "tirengarfio"
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.
Título: Re: Inicializar Una Variable E Imprimirla
Publicado por: tirengarfio en Sábado 1 de Diciembre de 2007, 21:34
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.

Con esta linea,

Código: Text
  1. dato1  DB 35h
  2.  

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
  1. mov dato1, 23
  2.  


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?
Título: Re: Inicializar Una Variable E Imprimirla
Publicado por: Eternal Idol en Sábado 1 de Diciembre de 2007, 21:41
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?

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?

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.