Macroensambladores

Páginas: 16 (3846 palabras) Publicado: 4 de febrero de 2010
Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variarse complejidad, dependiendo de las posibilidades de definición y manipulación de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladoresresidentes. Ejemplos:
Macro Ensamblador IBM.-
Está integrado por un ensamblador y un macroensamblador. En gran medida su funcionamiento y forma de invocarlo es sumamente similar al de Microsoft. Su forma de uso consiste en generar un archivo fuente en código ASCII, se procede a generar un programa objeto que es ligado y se genera un programa .EXE. Opcionalmente puede recurirse a la utileríaEXE2BIN de MS-DOS para transformarlo a .COM. Es capaz de generar un listado con información del proceso de ensamble y referencias cruzadas.
Macro Ensamblador de Microsoft.-
Este es desarrollado por Speddware, Inc., y consiste de un ambiente integrado que incluye un editor y utilerías para el proceso de ensamble y depuración. Es capaz de realizar el ensamble línea a línea, conforme seintroducen los mnemónicos, y permite revisar listas de referencias cruzadas y contenido de los registros. Este ensamblador trabaja con tablas en memoria, por lo que la generación del código ejecutable no implica la invocación explícita del ligador por parte del programador. Adicionalmente permite la generación de listados de mensajes e información de cada etapa del proceso y la capacidad de creación dearchivos de código objeto.
Turbo Assembler.
MACROS.
Cuando un conjunto de instrucciones en ensamblador aparecen frecuentemente repetidas a lo largo
de un listado, es conveniente agruparlas bajo un nombre simbólico que las sustituirá en aquellos puntos donde
aparezcan. Esta es la misión de las macros; por el hecho de soportarlas el ensamblador eleva su categoría a
la demacroensamblador, al ser las macros una herramienta muy cotizada por los programadores.
No conviene confundir las macros con subrutinas: es estas últimas, el conjunto de instrucciones
aparece una sola vez en todo el programa y luego se invoca con CALL. Sin embargo, cada vez que se
referencia a una macro, el código que ésta representa se expande en el programa definitivo, duplicándose
tantas vecescomo se use la macro. Por ello, aquellas tareas que puedan ser realizadas con subrutinas siempre
será más conveniente realizarlas con las mismas, con objeto de economizar memoria. Es cierto que las macros
son algo más rápidas que las subrutinas (se ahorra un CALL y un RET) pero la diferencia es tan mínima que
en la práctica es despreciable en el 99,99% de los casos. Por ello, es absurdo eirracional realizar ciertas
tareas con macros que pueden ser desarrolladas mucho más eficientemente con subrutinas: es una pena que
en muchos manuales de ensamblador aún se hable de macros para realizar operaciones sobre cadenas de
caracteres, que generarían programas gigantescos con menos de un 1% de velocidad adicional.
5.4.1. - DEFINICIÓN Y BORRADO DE LAS MACROS.
La macro sedefine por medio de la directiva MACRO. Es necesario definir la macro antes de
utilizarla. Una macro puede llamar a otra. Con frecuencia, las macros se colocan juntas en un fichero
independiente y luego se mezclan en el programa principal con la directiva INCLUDE:
IF1
INCLUDE fichero.ext
ENDIF
La sentencia IF1 asegura que el ensamblador lea el fichero fuente de las macros sólo en laprimera
pasada, para acelerar el ensamblaje y evitar que aparezcan en el listado (generado en la segunda fase).
Conviene hacer hincapié en que la definición de la macro no consume memoria, por lo que en la práctica es
indiferente declarar cientos que ninguna macro:
nombre_simbólicoMACRO [parámetros]
...
ENDM
El nombre simbólico es el que permitirá en adelante hacer...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS