jueves, 18 de julio de 2013

Estructuras

En esta ocación les dejo un ejemplo claro del uso de estructuras en ensamblador.

Las estructuras en ensamblador como en otros lenguajes de programación son una forma para organizar datos y facilitar el manejo de ellos, por ejemplo las pilas y los vectores que ya hemos visto.

En nuestro ejemplo haremos algo similar a una lista, el cual se podrá llamar a un dato dentro de la lista, en este caso cada valor dentro de la lista se guarda en un bloque de memoria pero es difícil saber en donde comienza y donde termina un dato, todos los datos pueden ser de diferente tamaño, a diferencia de un vector que todos sus datos son iguales en cuanto al tipo y longitud.

 Las estructuras se declaran de la siguiente manera:

nombreEstructura STRUC
  declaración de variables
nombreEstructura ENDS

Se deberá declarar al inicio del código (antes de .model).

Ejemplo: El programa hace llamados directos a 3 variables, nombre, apellidos y pais.

estructura struc
  nom db 'nombre      '  ;Declaro mis variables y la longitud de las variables, por eso los espacios en
  app db  'apepat      '    ;blanco para tener más longitud.
  pais db  'pais        '
estructura ends

imprimir macro estr
  mov ax,@data
  mov ds,ax
  mov es,ax
  mov ah,09h
  mov dx,estructura.estr ;Este es un llamado directo de una estructura, imprimirá el dato que se pase  
  int 21h                          ;como parámetro y lo buscará dentro de la estructura, siempre y cuando sea endm                              ;una variable válida dentro de la estructura

.model small
.stack 64
.data
  public persona   ;Se declara un apuntador en mi caso la llamo persona.
persona estructura <"Eric $","Medina $","Mexico $">
;Se cargan los datos a la estructura, si un dato  ;es más grande que la longitud de la cadena (Variable ;declarada en la estructura) habrá error de compilación.

.code
inicio:
imprimir nom ;Hacemos el llamado a la macro.
imprimir app
imprimir pais

mov ax,4c00h ;Finaliza el programa
int 21h
end

Resultados:

No hay comentarios:

Publicar un comentario