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
_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.
_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
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.