3.2 macros

11
MACROS

description

tipos de macros de la modularizacion en el lenguaje ensamblador

Transcript of 3.2 macros

Page 1: 3.2 macros

MACROS

Page 2: 3.2 macros

Macros

• Una macro es un grupo de instrucciones repetitivas en un programa que se codifican solo una vez y pueden utilizarse cuantas veces sea necesario. La principal diferencia entre una macro y un procedimiento es que en la macro se hace posible el paso de parámetros y en el procedimiento no (esto es aplicable solo para el TASM, hay otros lenguajes de programación que si lo permiten). Al momento de ejecutarse la macro cada parámetro es sustituido por el nombre o valor especificado al momento de llamarla.

Page 3: 3.2 macros

• Una macro es un grupo de instrucciones que efectúan una tarea. Al ser llamada se inserta en el programa como nuevo código que contiene una secuencia de instrucciones. Se utilizan las directivas MACRO y ENDM para delimitar una macrosecuencia. • El primer enunciado de una macro es el que contiene el nombre y sus

parámetros relacionados con ella. Por ejemplo TRANSF MACRO A,B que define la macro TRANSF. El último enunciado de una macro es la instrucción ENDM que es una línea por sí sola. Es necesario definir la macro antes de utilizarla. Una macro puede llamar a otra.

Page 4: 3.2 macros

Variable local en una macro.• Es aquella que aparece dentro del cuerpo de la macro, pero no está

disponible fuera de ella. Para definir una variable local se utiliza la directiva LOCAL. Se puede utilizar para declarar etiquetas de saltos que requieren ser llamados varias veces y evita que marque error al expandir la macro.

Page 5: 3.2 macros

Parámetros Formales y Parámetros Actuales• Cuando se llama a una macro se le pueden pasar opcionalmente un

cierto número de parámetros de cierto tipo. A estos parámetros se le denominan parámetros actuales. En la definición de la macro, dichos parámetros aparecen asociados a ciertos nombres, cuya única función es permitir distinguir unos parámetros de otros e indicar el orden en que son entregados, estos son los parámetros formales. Al expandir la macro los parámetros formales son sustituidos por sus parámetros actuales.• Es una buena práctica utilizar PUSH y POP al inicio y al final de las

MACROS para mantener los valores de los registros, en caso de ser necesario.

Page 6: 3.2 macros

• Si se indican más parámetros de los que una macro necesita, se ignorarán los restantes. En caso de faltar se dará un mensaje de advertencia o error, dependiendo del ensamblador. Como buena práctica se debe evitar.

Page 7: 3.2 macros

Operadores

• Operador ;;Indica que lo que viene a continuación es un comentario que no debe aparecer al expansionar la macro. Cuando al ensamblar se genera un listado del programa, las macros suelen aparecer expandidas en los puntos en que se invocan; sin embargo sólo aparecerán los comentarios normales que comiencen por (;). Los comentarios relacionados con el funcionamiento interno de la macro deberían ir con (;;), los relativos al uso y sintaxis de la misma con (;). Esto es además conveniente porque durante el ensamblaje son mantenidos en memoria los comentarios de macros (no los del resto del programa) que comienzan por (;), y no conviene desperdiciar memoria.

Page 8: 3.2 macros

• Operador &Utilizado para concatenar texto o símbolos. Es necesario para lograr que el ensamblador sustituya un parámetro dentro de una cadena de caracteres o como parte de un símbolo:

Page 9: 3.2 macros

• Operador ! o <>Empleado para indicar que el carácter que viene a continuación debe ser interpretado literalmente y no como un símbolo. Por ello, !; es equivalente a <;>.• Operador %Convierte la expresión que le sigue -generalmente un símbolo- a un número; la expresión debe ser una constante (no relocalizable). Sólo se emplea en los argumentos de macros.

Page 10: 3.2 macros

Directivas PUBLIC y EXTRN(EXTERN)• La directiva PUBLIC se suele colocar en el campo de código de un

enunciado para definir que una etiqueta es pública, a fin de poder emplearla en otros módulos. Esta etiqueta puede ser una dirección para salto, una dirección de datos o todo un segmento. Cuando los segmentos se hacen públicos se combinan con otros segmentos públicos que contienen datos con el mismo nombre del segmento.• La directiva EXTRN aparece en los segmentos de datos y de código

para definir que las etiquetas son externas al segmento. Si se define que los datos son externos, su tamaño se debe expresar como BYTE, WORD o DWORD. Si una dirección para salto o para llamada son externas, se deben representar como Cercana(NEAR) o Lejana(FAR).

Page 11: 3.2 macros

Ejemplo