Está en la página 1de 14

Deficin:

Son un conjunto de instrucciones repetitivas.


MACROS
Las macros se tienen que definir antes de utilizarlas (o copiarlas una
biblioteca de macros).
No debe de crearse una macro para usarse slo una vez, esa macro
puede utilizarse en una biblioteca para todos los programas.

CMO SABER, SI CREAR UNA
MACRO O NO?
Algunas desventajas de ensamblador:
Una de las principales desventajas de la programacin en lenguaje ensamblador es la repeticin constante de ciertos
bloques de instrucciones.
Ejemplo el siguiente conjunto de instrucciones nos permite imprimir una variable de tipo cadena en la pantalla:

Lea DX,Cadena ; Direccionar la cadena
Mov AH,09h ; Usar la funcin 09h para imprimir cadenas
Int 21h ; llamada a la interrupcin 21h

Si necesitamos que el programa muestre mensajes constantemente, se debe de repetir o duplicar este conjunto de
instrucciones por cada mensaje que se desea enviar a pantalla.

El programa crece considerablemente, y mientras ms grande sea el programa, ms difcil ser encontrar la algn
error cuando ste ocurra. La solucin es utiizar MACROS, la cual se declara slo una vez, y posterior slo es necesario
indicar su nombre en el cuerpo del programa y ensamblador se encargara de reemplazar la macroinstruccin por la
instrucciones de la macro (expansin de la macro).






FORMATO DE MACRO:
.MACRO Nombre [(parametro1, parametro2, etc)]
instrucciones
ENDM
Nota: lo que se encuentra entre parntesis cuadrados es opcional.

EJEMPLO:



Recordemos: Una macro es declarada una sola vez y puede ser llamada
cuantas veces sea necesario dentro del cuerpo del programa.
Cada vez que el ensamblador encuentra una macroinstruccin, verifica
si sta fue declarada; si esta verificacin es exitosa, el ensamblador
toma las instrucciones del cuerpo de la macro y las reemplaza en el
lugar donde la macro fue llamada.



Ejemplo.
Esta macro realiza una pausa en el programa hasta que una tecla se
presione. Es el equivalente del readkey en Pascal.

.MACRO tecla
mov ah,10h
int 16h
ENDM


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.
Cuando se hace referencia a una macro, el cdigo que sta representa se
expande en el programa definitivo, duplicndose tantas veces como se use
la macro.

Las subrutinas es conveniente realizarlas con objeto de economizar
memoria. Es cierto que las macros son algo ms rpidas que las subrutinas
(se ahorra un CALL y un RET) pero la diferencia
La diferencia entre una macro y una subrutina es tan mnima.
Como se declara una macro?
MACROS:
Declaracin:
<nombre de la macro> MACRO
<instrucciones de la macro>
ENDM
Llamada:
<nombre de la macro>
Ventajas y Desventajas

Ventajas:
Menor posibilidad de cometer errores por repeticin.
Mayor flexibilidad en la programacin al permitir el uso de parmetros.
Cdigo fuente ms compacto.
Al ser ms pequeo el cdigo fuente, tambin es ms fcil de leer por otros.
Desventajas:
El cdigo ejecutable se vuelve ms grande con cada llamada a la macro.
Las macros deben ser bien planeadas para evitar la redundancia de cdigo.



Procedimiento
Conjunto de instrucciones que tienen la finalidad de ejecutar una tarea especifica
dentro de un programa. Los procedimientos son muy similares a las macros. El
procedimiento se declara una sola vez en el cdigo fuente y cuando el programa se
ensambla y ejecuta, el procedimiento se coloca en memoria para que pueda ser
utilizado por el programa.

ventajas:
Permiten una codificacin ms limpia y compacta, es decir el cdigo fuente es
ms pequeo.
Ahorro de memoria, esto es porque un mismo procedimiento puede ser llamado
varias veces en el mismo programa y slo requiere memoria una vez.


Formato:

PROC nombre
instruccin
instruccin
....
RET */indica terminacin de instrucciones
ENDP NOMBRE */ fin del procedimiento


Procedimiento, el cual limpia pantalla.


PROC Imprime_Cad
Mov Ah,09h
Int 21h
Ret
ENDP Imprime_Cad
END


Llamada a los procedimientos.

Son llamados por los programas por medio de la instruccin CALL,
seguida del nombre del procedimiento.

Ejemplo:
Call GotoXY

También podría gustarte