Macros
Una macro, es un conjunto de instrucciones que se pueden mandar a llamar desde cualquier parte del programa.
Para definir una macro, se utiliza la directiva MACRO. El formato de esta directiva es:
(nombre_de_macro) MACRO (lista_parámetros)
Una macro consta de tres partes esenciales:
a) CABECERA: Contiene el nombre de la macro, la pseudo-op MACRO yopcionalmente, variables ficticias que serán pasadas desde la macro.
b) CUERPO: Contiene el código real que será insertado en cualquier programa que llame al nombre de la macro.
c) FIN: Debe incluir la sentencia ENDM.
Ejemplo de una macro sencilla:
INICIO MACRO ; Define macro
MOV AX, DATA ; cuerpo de
MOV DS, AX; la definición
MOV ES, AX ; de la macro
ENDM ; Fin de la macro
El nombre de esta macro es INICIO, aunque es aceptable cualquier otro nombre válido que sea único. La directiva MACRO en la primer línea indica al ensamblador que las instrucciones que siguen, hasta ENDM (“fin de la macro”), son parte de la definiciónde la macro.
La directiva ENDM termina la definición de la macro. Las instrucciones entre MACRO y ENDM comprenden el cuerpo de la definición de la macro. Si su programa realiza frecuentemente funciones de entrada/salida, las macros ofrecen la facilidad de codificar una sola vez un conjunto de instrucciones y reutilizar el código cuantas veces desee dentro de su programa.
Una macro es unapseudo-op que permite el establecimiento de operaciones únicas en ensamblador o la inclusión de frecuentes llamadas de código ensamblador. Una macro también se puede definir como un grupo de instrucciones repetitivas en un programa que se codifica sólo una vez y puede utilizarse cuantas veces sea necesario. [1]
Internas.
Una macro interna es aquella que se declara y se llaman dentro del mismoprograma.
Una macro interna se declara de la siguiente manera:
Sintaxis:
MACRO [parámetros]
…
ENDM
Ejemplo:
Duplica AL MACRO
SHL AL, 1
ENDM
Código que la usa:
MOV AL, 2
Duplica AL ; Esta es la “llamada” al macro
El ensamblador sustituye cada vez que aparezca la macro. No es como los procedimientos, que se “llaman” pero no repiten el código Ejemplo:
MOV AL, 2Duplica AL ; CALL Duplica
Duplica AL ; CALL Duplica
Este código queda:
MOV AL, 2
SHL AL, 1 ; CALL Duplica
SHL AL, 1 ; CALL Duplica
Cuándo usarlas y cuándo no
1.- Cuando se quiere el código más rápido y no importa ser repetitivo (código grande)
2.-Cuando se van a generar diversas variantes de código similar
3.-No cuando se quiere código compacto, evitando repetir el mismo (eneste caso, usar procedimientos).
Declaración Y Llamada De Procedimientos
Un procedimiento es un conjunto de instrucciones a los que podemos dirigir el flujo de nuestro programa, y una vez terminada la ejecución de dichas instrucciones se devuelve el control a la siguiente línea a procesar del código que mando llamar al procedimiento. Un procedimiento se declara una sola vez en el código fuente ycuando el programa se ensambla y ejecuta, el procedimiento se coloca en memoria para que pueda ser utilizado por el programa. Los procedimientos nos ayudan a crear programas legibles y fáciles de modificar. Al momento de invocar a un procedimiento se guarda en la pila la dirección de la siguiente instrucción del programa para que, una vez transferido el flujo del programa y terminado elprocedimiento, se pueda regresar a la línea siguiente del programa original (el que llama— al procedimiento). Sintaxis de un procedimiento Existen dos tipos de procedimientos, los intrasegmentos, que se encuentran en el mismo segmento de instrucciones y los intersegmentos que pueden ser almacenados en diferentes segmentos de memoria. Cuando se utilizan los procedimientos intrasegmentos se almacena en la...
Regístrate para leer el documento completo.