Manejo de parametros

Para hacer una macro flexible, puede definir nombres en ella como argumentos mudos (ficticios).La definición de la macro siguiente, llamada DESPLEGAR_MSG, proporciona el uso de la función 09H del DOS para desplegar 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 terminada por un signo de dólar.

DESPLEGAR_MSG    MACRO   MENSAJE          ; Argumento mudo
MOV   AH,   09H
LEA     DX,   MENSAJE
INT      21H
ENDM                                  ; 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 DESPLEGAR_MSG, usted proporciona un parámetro como el nombre real del mensaje que será desplegado, por ejemplo:

DESPLEGAR_MSG   MENSAJE2

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

Definición de macro:  DESPLEGAR_MSG    MACRO     MENSAJE     (Argumento)
Macroinstruccin:      DESPLEGAR_MSG    MENSAJE2                        (Parametro)

El ensamblador ya ha hecho corresponder el argumento en la definición original de la macro con la instrucción LEA en el cuerpo de la macro. Ahora sustituye el (los) parámetro(s) de la macroinstrucción MENSAJE2 por la presencia de MENSAJE en la instrucción LEA y la sustituye por cualquier otra aparición de MENSAJE.

Un argumento mudo puede contener cualquier nombre valido, incluyendo un nombre de registro tal como CX. Puede definir una macro con cualquier numero de argumentos mudos, separados por coma, hasta la columna 120 de una línea. El ensamblador sustituye los parámetros de la macro instrucción por los argumentos mudos en la definición de la macro, entrada por entrada, de izquierda a derecha.