Estructura de un pregrama en ensamblador

Solo disponible en BuenasTareas
  • Páginas : 8 (1879 palabras )
  • Descarga(s) : 0
  • Publicado : 10 de noviembre de 2010
Leer documento completo
Vista previa del texto
ESTRUCTURA DE UN PROGRAMA EMSAMBLADOR
Llegó el momento de dar un gran paso y entrar ya en ensamblador. Debug nos ha servido para conocer, poco a poco, el funcionamiento de algunas instrucciones del lenguaje ensamblador, y nos ha permitido realizar algunos programas sencillos, de tipo COM. Pero ya es hora de entrar de lleno en ensamblador, y para ello utilizaremos el MacroAssembler deMicrosoft, el cual nos permitirá, con una estructura más sencilla y sólida, a generar programas de tipo EXE y COM. Un programa EXE (EXEcution) difiere de un programa COM (COMmand) en que puede ser más grande de 64 k (los COM, al usar el mismo segmento para CS, DS, ES y SS no pueden superar este límite).
Al trabajar con MacroAssembler, la cosa cambia por completo, ya que nuestro código fuente estaráalmacenado en un fichero ASCII, el cual habremos creado bajo un editor de textos. Esta característica nos permitirá gestionar el código fuente de una manera mucho más flexible.
Pero antes de comenzar a realizar nuestros primeros pinitos, es necesario conocer la estructura básica de un programa escrito en lenguaje ensamblador, con el fin de ceñirnos a ese guión. Básicamente, nuestros programaspodrían estar englobados en cuatro bloques fundamentales:
DECLARACIONES Y DEFINICIONES
Definición de constantes, importación de código o información al compilador.
SEGMENTO DE DATOS
Reserva de espacio para las variables que usa el programa.
SEGMENTO DE PILA
Todos los programas han de llevar pila, con el fin de depositar la información necesaria para las llamadas a funciones, o bienalmacenar datos temporalmente. En este bloque se define un tamaño para la pila.
SEGMENTO DE CODIGO
Definición de todos los procedimientos e instrucciones del programa.
UN SENCILLO EJEMPLO
Para comprender mejor la definición de la estructura de un programa, he aquí un programa muy sencillo que imprime en pantalla una famosa oda:
; PROGRAMA: EJEMPLO1.ASM
; FUNCION : ESCRITURA DE UNA POESIA ENPANTALLA
;----------------------------------------------------------------------
; DECLARACION DE CONSTANTES
CR      EQU 13                  ; Constante CR (Retorno de carro)
LF      EQU 10                  ; Constante LF (Salto de línea)
;----------------------------------------------------------------------
; DECLARACION DEL SEGMENTO DE DATOS
DATOS   SEGMENT                 ; Iniciodel segmento de datos
LINEA1  DB 'Con diez cañones por banda,',CR,LF,'$'
LINEA2  DB 'viento en popa y toda vela,',CR,LF,'$'
LINEA3  DB 'no corta el mar, si no vuela,',CR,LF,'$'
LINEA4  DB 'un velero bergantín.',CR,LF,'$'
DATOS   ENDS                    ; Fin del segmento de datos
;---------------------------------------------------------------------
; DECLARACION DEL SEGMENTO DEPILA
PILA    SEGMENT STACK           ; Inicio del segmento de pila
        DB 64 DUP('PILA')       ; Inicialización de la pila
PILA    ENDS                    ; Fin del segmento de pila
;---------------------------------------------------------------------
; DECLARACION DEL SEGMENTO DE CODIGO
CODIGO  SEGMENT                 ; Inicio del segmento de código
EJEMPLO PROCFAR                ; Inicio procedimiento EJEMPLO
        ; Asignar segmentos
        ASSUME CS:CODIGO,DS:DATOS,SS:PILA
        MOV AX,DATOS            ; AX=Dirección del segmento de datos
        MOV DS,AX               ; DS=AX. Indicar el segmento de datos
        LEA DX,LINEA1           ; DS:DX = dirección de LINEA1
        CALL ESCRIBE            ; Llamar al procedimiento ESCRIBE
        LEADX,LINEA2           ; DS:DX = dirección de LINEA2
        CALL ESCRIBE            ; Llamar al procedimiento ESCRIBE
        LEA DX,LINEA3           ; DS:DX = dirección de LINEA3
        CALL ESCRIBE            ; Llamar al procedimiento ESCRIBE
        LEA DX,LINEA4           ; DS:DX = dirección de LINEA4
        CALL ESCRIBE            ; Llamar al procedimiento ESCRIBE
        MOV...
tracking img