Vistas de página en total

martes, 7 de mayo de 2013

PRIMER PROGRAMA EJECUTABLE

  Como se ve, con una pocas instruciones, hemos creado un código, muy sencillo de leer y muy estructurado, en ensamblador. Tenemos que tener en cuenta que este cCon el vistas hasta ahora, parece imposible componer algo ejecutable de forma fácil. Pero, para adelantar lo que queremos conseguir, vamos a poner el código de un programa ".exe"

  En este caso el programa, no realizaría ninguna función. Simplemente ejecutaría y saldría al sistema de nuevo.

  En este código se puede ver el uso de cada una de las macro definidas en la cabecera main.
  El código se divide en tres partes:
       include - Directiva para incluir  la cabecera main, para que la lea las macros que definen nuestras nuevas directivas de compilación
       _data  Directiva propia. Definición del segmento de datos, para luego delcarar las varialbes
      _modelo - Directiva propia. Indica el modelo de programa que deseamos exe o com
       _stack - Directiva propia. Define la pila en 300 bytes
       _code  - Directiva propia. Define la zona de programa. Dentro declaramos el procedimiento. En este caso _vacio
       _end- Directiva propia. Fin de codigo. En este caso hay que indicar el nombre de larutina principal, ya que se trata del programa ejecutable.
      main - Función de inicialización cuyo código veremos posteriormente.
      exit - Macro de salida al sistema incluida en main.mac, en la que se indica el código de salida


   En este caso no incluimos la cabecera argum.mac, y por lo tanto no será incluido el código de la librería _lin_comand y no leeremos la linea de comando. 
   En este caso el programa no hace nada en particular. Eso lo dejaremos para cuando aumentemos las librerías. Ahora solo interesa ver la estructura base del código.
    Como vemos he puesto la data al final, para que pueda funcionar mi directiva _data con la de _modelo, y me permita cambiar el programa de exe a com. Si no ponemos la directiva _modelo el programa será exe


El código se puede compilar en el ensamblador en cualquier compilador anterior a MASM, pero como se ve la estructura es equivalente a TASM  2.0 y por supuesto puede compilarse en TASM2.0.
   

PRUEBA 1.ASM

; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/>.

include main.mac
title prueba1 
_modelo exe  ; define formato exe. DS y CS separados.   (equivale a .model compact en TASM)
_stack 300                           ; (equivale a .stack  en TASM)

_code                                   ; (equivale a .code en TASM)
_vacio proc far  
        main
        exit 0
_vacio endp
_data                                    ; (equivale a .data en TASM)
  help db "Ejemplo",10,13
_end vacio

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.