|
|
1.- EDICION.
Los
archivos fuente de código ensamblador
deben estar en formato ASCII standard. Para esto puede usarse cualquier
editor que permita crear archivos sin formato, e.g. Edlin, Edit, Write, El editor del Turbo Pascal, Works, Word,
WordStar, etcétera. Las declaraciones
pueden ser introducidas en mayúsculas y/o minúsculas. Una buena práctica
de programación es poner todas las palabras
reservadas (directivas e instrucciones) en mayúsculas y todo lo del usuario
en minúsculas para fines de facilidad de lectura del código.
Las sentencias pueden comenzar en cualquier
columna, no pueden tener más de 128
caracteres, no se permiten lineas múltiples ni códigos de control, y cada línea
debe ser terminada con una combinación
de line-feed y carriage-return. Los comentarios se
declaran con ; y terminan al final
de la línea.
2.- ENSAMBLADO.
El
ensamblado se lleva a cabo invocando al MASM.
Este puede ser invocado, usando una línea de comando, de la siguiente manera:
MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
donde:
archivo.-
Corresponde al programa fuente. Por defecto se toma la extensión .ASM.
objeto.-
Es el nombre para el archivo objeto.
listado.-
Nombre del archivo de listado de ensamblado.
cross.-
Es un archivo de referencias cruzadas.
opciones.-
Pueden ser:
/A escribe los segmentos en orden
alfabético
/S escribe los segmentos en orden del
fuente
/Bnum fija
buffer de tamaño num
/C especifica un archivo de referencias
cruzadas
/L especifica un listado de ensamble
/D crea listado del paso 1
/Dsym
define un símbolo que puede usarse en el ensamble
/Ipath
fija path para buscar archivos a incluir
/ML mantiene sensitividad de letras
(mayús./minús) en nombres
/MX mantiene sensitividad en nombre
públicos y externos
/MU convierte nombres a mayúsculas
/N suprime tablas en listados
/P checa por código impuro
/R crea código para instrucciones de
punto flotante
/E crea código para emular instrucciones de punto flotante
/T suprime mensajes de ensamble
exitoso
/V despliega estadísticas
adicionales en pantalla
/X incluir condicionales falsos en
pantalla
/Z despliega líneas de error en
pantalla
si
el ; al final se omite es necesario
poner todas las comas que se indican. Si no se quiere poner algún valor basta
con dejar la coma.
La otra forma de invocar al ensamblador es
sólo tecleando MASM y respondiendo a
la información que se solicita. Para
omitir algún valor sólo basta teclear ENTER si dar ningún valor.
3.- LINK.
De la
misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser invocado de la
misma forma que el MASM. Los parámetros que este requiere son:
LINK objeto [,[ejecutable][,[mapa][,[librería]]]]][opciones][;]
donde:
objeto.-
Es el nombre para el archivo .OBJ
ejecutable.-
Nombre del archivo .EXE
mapa.-
Nombre del archivo mapa
librería.-
Nombre del archivo biblioteca de rutinas
opciones.-
Pueden ser:
/HELP
muestra lista de opciones
/PAUSE pausa en el
proceso
/EXEPACK
empaca archivo ejecutable
/MAP
crea mapa se símbolos públicos
/LINENUMBERS copia
número de líneas al mapa
/NOIGNORECASE mantiene
sensitividad en nombres
/NODEFAULTLIBRARYSEARCH no usa
bibliotecas por defecto
/STACK:size fija
el tamaño del stack a usar
/CPARMAXALLOC:número fija alojación máxima de espacio
/HIGH
fija la dirección de carga más alta
/DSALLOCATE aloja
grupo de datos
/NOGROUPASSOCIATION ignora
asociaciones para direcciones
/OVERLAYINTERRUPT:número asigna nuevo número a la INT 03Fh
/SEGMENTS:número procesa un número de segmentos
/DOSSEG
sigue la convención de orden de DOS
4.- EJECUCION.
Para la
ejecución del programa simplemente basta teclear su nombre en el prompt de
MS-DOS y teclear ENTER. Con esto el
programa será cargado en memoria y el
sistema procederá a ejecutarlo.
El proceso completo para poder crear un programa ejecutable con el Microsoft
Macro Assembler se muestra abajo.

y lo que se vería en pantalla sería lo
siguiente:
C:\DATA\PROGRAMS\ASM>masm main
Microsoft (R)
Macro Assembler Version 4.00
Copyright (C)
Microsoft Corp 1981, 1983, 1984, 1985.
All rights reserved.
Object filename
[main.OBJ]:
Source
listing [NUL.LST]:
Cross-reference
[NUL.CRF]:
50966 Bytes symbol space free
0 Warning Errors
0 Severe Errors
C:\DATA\PROGRAMS\ASM>masm
task
Microsoft (R)
Macro Assembler Version 4.00
Copyright (C)
Microsoft Corp 1981, 1983, 1984, 1985.
All rights reserved.
Object filename
[task.OBJ]:
Source
listing [NUL.LST]:
Cross-reference
[NUL.CRF]:
51034 Bytes symbol space free
0 Warning Errors
0 Severe Errors
C:\DATA\PROGRAMS\ASM>link
main+task
Microsoft (R)
8086 Object Linker Version 3.05
Copyright (C)
Microsoft Corp 1983, 1984, 1985. All
rights reserved.
Run File
[MAIN.EXE]:
List File
[NUL.MAP]:
Libraries
[.LIB]:
C:\DATA\PROGRAMS\ASM>main
Entrando a un submodulo....
.......saliendo del submodulo.
C:\DATA\PROGRAMS\ASM>
5.- DEPURACION.
Para
la depuración de un programa en ensamblador tenemos disponibles dos
herramientas. Por un lado tenemos el debuger
que nos proporciona MS-DOS (DEBUG.EXE)
y por otro lado tenemos el que nos proporciona Microsoft (SYMDEB.EXE). Este último
trabaja igual que el de MS-DOS pero nos proporciona muchas ventajas más. Una de
ellas es la facilidad de desplegar el código fuente correspondiente a la
instrucción que se esta ejecutando (si el programa ejecutable fue ensamblado o
compilado con un ensamblador o compilador compatible), nos permite ejecutar
comandos del S.O. y nos permite obtener información de las interrupciones de
manera simbólica.
6.- LA UTILERIA EXE2BIN Y LOS ARCHIVOS .EXE Y .COM .
Para MS-DOS sólo existen dos tipo de archivos ejecutables los .COM y .EXE. Ambos archivos difieren en algunas cosas. Primero, las ventajas de los .EXE son dobles, nos permiten tener archivos reubicables y el uso de hasta cuatro segmentos (STACK, DATA, EXTRA y CODE) de hasta 64KB cada uno. Un archivo .COM sólo puede tener un segmento de 64KB, en el que se tiene tanto código como pila, y datos. La desventaja de los .EXE es que agrega
n 512 bytes como cabecera con información para la reubicación del código. Un .COM no es reubicable, siempre inicia en la dirección 0100H.
Si nuestro programa no es muy grande 64KB son mas que suficientes. Por lo que
conviene crearlo como .COM, para esto se cuenta con la utilería EXE2BIN.EXE
que nos proporciona el sistema operativo. y que nos permite crear .COM a partir
de .EXE . Las restricciones para esto son las siguientes: el archivo a
convertir no debe estar empacado, no debe tener segmento de stack, debe tener
sólo segmento de código y su tamaño debe ser menor a 64KB.
7.- EL LENGUAJE DE MAQUINA.
Lo que que conoce como lenguaje o código de máquina es el conjunto de códigos numéricos (comúnmente expresados en hexadecimal) para cada una de las instrucciones que el microprocesador es capaz de reconoce y ejecutar. Aun cuando finalmente es con esta serie de números con los que el microprocesador trabaja, es muy difícil prrogramar a este nivel. El lenguaje ensamblador fue desarrollado para liberar al programador de la dificil tarea de tener que recordar todos los códigos y de las tediosas labo
res de cálculo de
localidades de memoria. Los códigos mnemó:nicos del ensamblador son una substitución de los códigos numéricos mejor que en una relación 1:1. Por ejemplo, resulta que mientras que tenemos de manera general un mnemónico para cargar un registro con un valor (MOV) internamente, para cada una de las modalidades de direccionamiento o registro afectado existe un código numérico.
La programación del computador en lenguaje de máquina, tanto la introducción de losprogramas, su ejecución y su depuración es posible usando alguna utilería provista por el sistema operativo y cabe mencionar que casi todos los sistemas operativos proveen al usuario con estas facilidades. DOS no es la exepción; éste provee al usuario de la utilería DEBUG. La siguiente sección da más información al respecto.
8.- CREACION Y DEPURACION DE PROGRAMAS CON LA UTILERIA DEBUG.
El la utilería de MS-DOS DEBUG es una herramienta muy poderosa que es desconocida por muchos. Este provee una interfaz desde la cual es seguro no sólo explorar el contenido de la memoria del computador y de los registros del microprocesador sino que además provee los medios para la introducción de programas y su depuración, tanto en ensamblador como en lenguaje de máquina. La utilización de esta herramienta se ejemplifica con el siguiente ejemplo.
1.- Desde el prompt del sistema invoque la utilería.
C:\> debug
2.- En el prompt de la utilería introducir el siguiente programa en código de máquina.
-e 100 BA 40 00 8E DA BB 72 00 C7 07 34 12 EA 00 00 FF FF
3.- Guardar el programa en un archivo.
-rcx
:11
-n reset.com
-w
-q
4.- El paso anterior creará un archivo en el directorio vigente con el nombre RESET.COM. La extensión .COM es importante, el nombre pudo ser cualquiera. Este programa llama a las rutinas de inicialización del sistema, al ejecutarlo veremos que el computador se reinicializa, o si estamos trabajando en una ventana de DOS bajo Windnows esta se cerrará
C:\> reset.com
Haga la prueba creando un programa más grande, esta vez introduciéndolo a través de dos líneas de programa. Para guardarlo indique la cantidad de 1C bytes al invocar el comando rcx del debug y sálvelo con extensión .COM.
-e 100 1E 31 C0 50 BA 0C 01 B4 09 CD 21 C3 48 6F 6C 61 20 6D 75 6E 64 6F
-e 116 21 21 21 0D 0A 24
| Ultima actualización: . |