You are on page 1of 4

Unidad III.

- Modularización

3.1 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.

Podemos decir entonces que un procedimiento es una extensión de un determinado
programa, mientras que la macro es un módulo con funciones específicas que puede ser
utilizado por diferentes programas. Otra diferencia entre una macro y un procedimiento es
la forma de llamar a cada uno, para llamar a un procedimiento se requiere el uso de una
directiva, en cambio la llamada a las macros se realiza como si se tratara de una instrucción
del ensamblador.

3.1.1 Internas.

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 interna es
aquella que se declara y se llaman dentro del mismo programa.

Una macro consta de tres partes esenciales:

a) CABECERA: Contiene el nombre de la macro la pseudo-op MACRO y opcionalmente,
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.

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ón de 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.

Por ISC Ricardo Espinosa
3.1.2 Externas.

Una de las facilidades que ofrece el uso de las macros es la creación de bibliotecas, las
cuales son grupos de macros que pueden ser incluidas en un programa desde un archivo
diferente. La creación de estas bibliotecas es muy sencilla, únicamente tenemos que escribir
un archivo con todas las macros que se necesitarán y guardarlo como archivo de texto.

Para llamar a estas macros solo es necesario utilizar la instrucción Include
<Nombre_Del_Archivo>, en la parte de nuestro programa donde escribiríamos
normalmente las macros, esto es, al principio de nuestro programa (antes de la declaración
del modelo de memoria). Suponiendo que se guardó el archivo de las macros con el nombre
de MACROS.TXT la instrucción Include se utilizaría de la siguiente forma:

;Inicio del programa
Include MACROS.TXT
.MODEL SMALL
.DATA
;Aqui van los datos
.CODE
Inicio:
;Aqui se inserta el código del programa
.STACK
;Se define la pila
End Inicio

3.2 Procedimientos.

Un procedimiento es un conjunto de instrucciones que tienen la finalidad de ejecutar una
tarea especifica dentro de un programa. Los procedimientos son muy similares a las
macros.
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 y cuando 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. 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.

Por ISC Ricardo Espinosa
Las partes que componen a un procedimiento son:

• Declaración del procedimiento

• código del procedimiento

• Directiva de regreso

• Terminación del procedimiento

Las principales ventajas en el uso de procedimientos son: permiten una codificación más
limpia y compacta, es decir el código fuente es más pequeño; también permiten el ahorro de
memoria, esto es porque un mismo procedimiento puede ser llamado varias veces en el
mismo programa y sólo requiere memoria una vez.

Los procedimientos tienen la desventaja de que reducen la velocidad de ejecución de los
programas, esto se debe a la forma en que los procedimientos se ejecutan. A continuación
se presentan los pasos necesarios para ejecutar un procedimiento:

1.- Se encuentra la llamada Call
2.- El microprocesador almacena en la Pila el contenido del IP
3.- Se coloca en el IP el valor del desplazamiento correspondiente al Procedimiento
4.- El microprocesador ejecuta las instrucciones del procedimiento
5.- El procedimiento termina cuando se encuentra la instrucción Ret
6.- Se saca de la pila el valor original del IP y se continua el flujo del programa

3.2.1 Internos.

Los procedimientos internos son aquellos que se declaran y se llaman dentro del mismo
programa, también son llamados procedimientos locales. El listado anterior muestra la
forma de utilizar procedimientos internos.

3.2.2 Externos.

Los procedimientos externos, a diferencia de los internos, se declaran en módulos o
programas separados al programa donde el procedimiento es llamado, en otras palabras, la
llamada al procedimiento se encuentra en un programa y el procedimiento en otro.
Para poder utilizar procedimientos externos, es necesario que sean declarados como
públicos en el programa donde se encuentran y que sean llamados como externos en el
programa donde serán usados. Cuenta con tres directivas de ensamble: .PUBLIC para
declarar los procedimientos como públicos, .EXTERN para indicar que el procedimiento
que se va a usar está fuera del programa y .INCLUDE para enlazar el programa que

Por ISC Ricardo Espinosa
contiene los procedimientos con el programa que los llama. Con estas capacidades, es fácil
crear bibliotecas de procedimientos y macros que puedan ser utilizados constantemente por
los demás programas, ahorrando con ello tiempo de programación al reutilizar código
fuente.

Por ejemplo Este programa muestra la forma de utilizar procedimientos y datos externos en
los programas por medio de las directivas de inclusión include y public.

.MODEL TINY
.INCLUDE proc2.ASM ;Incluir el archivo proc2.asm
;el cual contiene la variable de cadena
;Cad1 y los procedimientos externos
;usados en este programa.
.DATA
Cad2 db 'Esta es una cadena de prueba 2...',13,10,'$'
.CODE
INICIO: ;Punto de entrada al programa
Mov Dl,20 ;X=20
Mov Dh,10 ;Y=10
Call GotoXY ;GotoXY 20,10
Lea DX,Cad2 ;DX->Cad2 en Proc3.asm
Call Imprime_Cad ;Imprime Cad2
Lea DX,Cad1 ;DX->Cad1 en Proc2.asm
Call Imprime_Cad ;Imprime Cad1
Mov AX,04C00h ;Fin del programa
Int 21h ;
END INICIO
END

Por ISC Ricardo Espinosa