4.4 Funciones

 

Un macro procedimiento es un bloque con nombre de instrucciones en lenguaje ensamblador. Una vez definido, puede invocarse (llamarse) todas las veces que se desee en un programa. Al invocar a un macro procedimiento, se inserta una copia de su código directamente en el programa, en la ubicación en la que se invocó. Se acostumbra utilizar el término llamar a un macro procedimiento, aunque técnicamente no hay una instrucción CALL implicada.

 

El término macro procedimiento se utiliza en el manual de Microsoft Assembler para identificar a los macros que no devuelven un valor. También hay macro funciones que devuelven un valor. Entre programadores, por lo general, se entiende que la palabra macro significa lo mismo que macro procedimiento. De aquí en adelante, utilizaremos la forma más corta.

 

 

Declaración Los macros (procedimientos) se definen de manera directa al principio de un programa de código fuente, o se colocan en un archivo separado y se copian en un programa mediante una directiva INCLUDE. Los macros se expanden durante el paso de preprocesamiento del ensamblador.

 

Definición de macros

Un macro se define usando las directivas MACRO y ENDM. La sintaxis es:

 

    nombremacro MACRO parámetro-1, parámetro-2...

            lista-instrucciones

    ENDM

 

Ejemplo: mColocarCar El siguiente macro llamada mColocarCar recibe un solo parámetro de entrada llamado car y lo muestra en la consola, mediante una llamada a WriteChar:

 

    mColocarCar MACRO car

          push eax

          mov al,car

          call WriteChar

          pop eax

    ENDM

 

Macrofunciones

Una macrofunción es similar a un macroprocedimiento, en cuanto a que asigna un nombre a una lista de instrucciones en lenguaje ensamblador. La diferencia es que siempre devuelve una constante (entero o cadena) a través de la directiva EXITM. En el siguiente ejemplo, la macro Esta Definido devuelve verdadero (-1) si se ha definido un símbolo dado; en caso contrario, devuelve falso (0):

 

    EstaDefinido MACRO símbolo

          IFDEF símbolo

                 EXITM <-1>            ; Verdadero

          ELSE

                 EXITM <0>             ; Falso

          ENDIF

    ENDM

 

La directiva EXITM (salir de macro) detiene el resto de la expansión de la macro.

 

 

Inicio