Programacion modular

Solo disponible en BuenasTareas
  • Páginas : 5 (1213 palabras )
  • Descarga(s) : 4
  • Publicado : 8 de noviembre de 2009
Leer documento completo
Vista previa del texto
Programación modular

La programación modular es la técnica que consiste en hacer independientes una serie de módulos de programa, de tal forma que el programa resultante esté formado por un módulo principal y varios secundarios que se enlazan con el anterior.

Los módulos pueden ser codificados en el mismo fichero fuente que el programa principal, o pueden estar en ficheros fuenteindependientes. En este caso cada uno de los módulos se compila o ensambla (según el caso) de forma independiente, obteniéndose el módulo objeto correspondiente. Con el linkador se enlazan todos juntos para formar un sólo fichero ejecutable.
El contenido de los módulos secundarios suele ser estar organizado en procedimientos y funciones. De esta forma un mismo procedimiento puede ser utilizado en cualquierotro programa, formándose así una librería de funciones y procedimientos.

No sólo se pueden utilizar los procedimientos de un módulo, sino que también se puede hacer referencia a las variables declaradas en cada uno de éllos. No obstante ésto no es recomendable, utilizándose como vía de comunicación con los procedimientos, el paso de parámetros por la pila.

Una de las mayores ventajas de laprogramación modular, en este caso en ensamblador, es la de poder hacer llamadas a rutinas escritas en ensamblador desde un lenguaje de alto nivel. De esta forma se consigue acceder a recursos del sistema que no eran accesibles desde Pascal o C. Aún en el caso de que sí lo fueran, seguramente se ejecutarán de una forma mucho más rápida y eficiente que la opción que nos proporciona el lenguaje de altonivel.

LLAMADAS A PROCEDIMIENTOS

En Ensamblador, procedimientos y funciones no se distinguen en cuanto a la declaración, si en cuanto a que la forma de codificación será diferente.
Una función devuelve siempre un valor, que de una forma estándar irá almacenado en el registro acumulador.
Los procedimientos y funciones se construyen de la siguiente forma:

nombre PROC [NEAR] [FAR]
cuerpodel procedimiento
nombre ENDP

Los procedimientos siempre estarán en el segmento de código y la última instrucción del mismo será la de retorno RET para la familia del 8086.
Si el procedimiento va a ser llamado desde otro segmento de código, se deberá declarar de tipo FAR, pudiéndose especificar NEAR o no en caso contrario.
En la fase de ensamblado, automáticamente se sustituye la instrucciónRET por RETF si el procedimiento es lejano.
La llamada a un procedimiento se hace de a través de la instrucción CALL:

call nombre _ proc

PASO DE PARÁMETROS POR LA PILA

Aunque la comunicación con un procedimiento se puede hacer a través de variables globales, la opción más indicada es la de paso de parámetros, bien a través de registros o por la pila. Sin duda es la única forma de trabajarcuando los procedimientos se encuentran en módulos independientes.
Respecto a la primera opción, el utilizar los registros suele quedar reducido a las llamadas a interrupciones BIOS o DOS, puesto que éstas suelen forzar a su uso.
Sí es mucho más eficaz el paso de parámetros a través de la pila. Este es el procedimiento estándar que utilizan los procedimientos y funciones en lenguajes de altonivel.
Tiene las dos variantes ya conocidas: valor y referencia.

Paso de parámetros por valor.

En el caso de los parámetros por valor, lo que se introduce en la pila es simplemente el valor del parámetro. En el ejemplo siguiente se introduce el registro AX en la pila, cuyo contenido corresponde con el valor del parámetro. También se muestra la forma standard de recoger ése parámetro.

mov ax,valor ; valor del parámetro
push ax ; se introduce el parámetro en la pila
call nom_proc ; se llama al procedimiento
nom_proc proc far
push AX ; se salvan los
push BX ; registros que se modifican
push BP ; incluido BP
mov BP,SP ; BP apunta al TOP de la pila
mov AX,[BP+0ah] ; recogida del parámetro
___
___
pop BP ; se recuperan los
pop BX ; registros
pop AX ; salvados
ret 2 ; retorno ignorando...
tracking img