ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Ensamblador


Enviado por   •  29 de Agosto de 2011  •  11.610 Palabras (47 Páginas)  •  711 Visitas

Página 1 de 47

UNIDAD III.

MODULARIZACIÓN

3.1 MACROS.

3.1.1 Internas.

3.1.2 Externas

3.2 PROCEDIMIENTOS.

3.2.1 Internos.

3.2.2 Externos.

3.1 MACROS.

Introducción.

Para cada instrucción simbólica que se codifica, el ensamblador genera una instrucción de lenguaje máquina. Pero para cada enunciado codificado en un lenguaje de alto nivel como C o Pascal, el compilador genera muchas instrucciones de lenguaje máquina. A este respecto, puede pensar en un lenguaje de alto nivel como consistente de macro enunciados.

El ensamblador tiene facilidades que el programador puede utilizar para definir macros. Usted define un nombre específico para la macro, junto con el conjunto de instrucciones del lenguaje ensamblador que la macro va a generar. Después, siempre que necesite codificar el conjunto de instrucciones, sólo codifique el nombre de la macro y el ensamblador genera de manera automática las instrucciones que usted definió.

Las macros son útiles para los siguientes propósitos:

Simplificar y reducir la cantidad de codificación repetitiva.

Reducir errores causados por la codificación repetitiva.

Linealizar un programa en lenguaje ensamblador para hacerlo más legible.

Ejemplos de funciones que pueden ser implementadas por macros son operaciones de entrada/salida que cargan registros y realizan interrupciones, conversiones de información ASCII y binaria, aritmética de palabras múltiples, rutinas para el manejo de cadenas de caracteres y división por sustracción.

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 de macroensamblador, 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 veces como 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 e irracional 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.

3.1.1 Macros internas.

Como ya se menciono anteriormente, una macro se utiliza 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, se dice que es una macro interna si dicho conjunto de instrucciones (macro) es declarado dentro del programa que lo esta invocando.

3.1.2 Macros externas.

DEFINICIÓN Y BORRADO DE LAS MACROS.

La macro se define 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 la primera 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ólico MACRO [parámetros]

...

... ; instrucciones de la macro

ENDM

El nombre simbólico es el que permitirá en adelante hacer referencia a la macro, y se construye casi con las mismas reglas que los nombres de las variables y demás símbolos. La macro puede contener parámetros de manera opcional. A continuación vienen las instrucciones que engloba y, finalmente, la directiva ENDM señala el final de la macro. No se debe repetir el nombre simbólico junto a la directiva ENDM, ello provocaría un error un tanto curioso y extraño por parte del ensamblador (algo así como «Fin del fichero fuente inesperado, falta directiva END»), al menos con MASM 5.0 y TASM 2.0.

En realidad, y a diferencia de lo que sucede con los demás símbolos, el nombre de una macro puede coincidir con el de una instrucción máquina o una directiva del ensamblador: a partir de ese momento, la instrucción o directiva machacada pierde su significado original. El ensamblador dará además un aviso de advertencia si se emplea una instrucción o directiva como nombre de macro, aunque tolerará la operación. Normalmente se las asignará nombres normales, como a las variables. Sin embargo, si alguna vez se redefiniera una instrucción máquina o directiva, para restaurar el significado original del símbolo, la macro puede ser borrada -o simplemente porque ya no va a ser usada a partir de cierto punto del listado, y así ya no consumirá espacio en las tablas de macros que mantiene en memoria el ensamblador al ensamblar-. No es necesario borrar las macros antes de redefinirlas. Para borrarlas, la sintaxis es la siguiente:

PURGE nombre_simbólico [,nombre_simbólico,...]

Ejemplo de una macro sencilla.

Desde el 286 existe una instrucción muy cómoda que introduce en la pila 8 registros, y otra que los saca (PUSHA y POPA). Quien esté acostumbrado a emplearlas, puede crear unas macros que simulen estas instrucciones en los 8086:

SUPERPUSH MACRO

...

Descargar como (para miembros actualizados) txt (42 Kb)
Leer 46 páginas más »
Disponible sólo en Clubensayos.com