Programacion hibrida

3.- Modularización.

3.1 Macros.
Por cada instrucción simbólica que se codifica, el ensamblador genera una instrucción de lenguaje máquina. Por cada enunciado codificado en un lenguaje de alto nivel, el compilador genera muchas instrucciones de lenguaje máquina. Por lo que se puede pensar en un lenguaje de alto nivel como macro-enunciado.

Las macros son útiles para los siguientespropó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 mas legible.

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

Definición de una macro.
Si se desea incluir macros en un programa, primero es necesario definirla. Una definición de macro aparece antes que cualquier definición de segmento. A continuación se presenta un ejemplo de macro:

INITZ MACRO ;Define Macro
MOV AX,@data ;
MOV DS, AXMOV ES, AX
ENDM ;Fin de la macro

El nombre de esta macro es INITZ, aunque es aceptable cualquier otro nombre válido que sea único. La directiva MACRO en la primer línea le indica al ensamblador que las instrucciones que la siguen, hasta ENDM (fin de la macro), son parte de la definición de la macro. La directiva ENDM termina la definición de la macro. Las instrucciones entre MACRO y ENDMcomprenden el cuerpo de la definición de la macro.

Los nombres a que hace referecnia en la definición de la macro, @data, AX, DS y ES, deben estar definidos en alguna parte del programa o deber ser dados a conocer de alguna otra forma al ensamblador. En forma subsecuente se puede usar la macroinstrucción INITZ en el segmento de código en donde quiera inicializar los registros. Cuando elensamblador encuentra la macroinstrucción INITZ, busca en una tabla de instrucciones simbólicas y, a falta de una entrada, busca macroinstrucciones. Ya que el programa contiene una definición de la macro INITZ, el ensamblador sustituye el cuerpo de la definición generando las instrucciones: la expansión de la macro. Un programa usaría la macroinstrucción INITZ sólo una vez, aunque otras macros estándiseñadas para ser utilizadas cualquier número de veces y cada vez el ensamblador genera la misma expansión de la macro.

Es difícil y molesto definir una macro para usarse sólo una vez, pero podría catalogar esa macro en una biblioteca para usarla con todos los programas.

Uso de parámetros en macros.
Para tener flexibilidad, puede definir nombres en ella como argumentos mudos (ficticios). Ladefinición de la macro siguiente, llamada PROMPT, proporciona el uso de la función 09h del DOS para presentar cualquier mensaje. Cuando se usa la macroinstrucción, el programador tiene que proporcionar el nombre del mensaje, el cual hace referencia a un área de datos determinada por un signo de dólar.

PROMPT MACRO MENSAJE ;Argumento mudo
MOV AH, 09H
LEA DX, MENSAJE
INT 21HENDM ;Fin de la macro

Un argumento mudo en una definición de macro indica al ensamblador que haga coincidir su nombre con cualquier aparición del mismo nombre en el cuerpo de la macro. Por ejemplo, el argumento mudo MENSAJE también aparece en la instrucción LEA.

Cuando utiliza la macroinstrucción PROMPT, usted proporciona un parámetro como el nombre real del mensaje que serápresentado. Por ejemplo:

PROMPT MENSAJE2

En este caso, MENSAJE2 tiene que estar apropiadamente definido en el segmento de daos. El parámetro en la macroinstrucción corresponde al argumento mudo en la definición original de la macro:

Definición de macro: PROMPT MACRO MENSAJE
Macroinstrucción: PROMPT MENSAJE2

El ensamblador ya ha hecho corresponder el argumento en la definición original…