20
ÍNDICE 3. Modularización………………………………...……………………………………..3 3.1 Procedimientos…………………….………………………………………….…….4 3.1.1.- Procedimientos internos……..………………………………………...……..7 3.1.2.- Procedimientos externos………………………………..…………………….8 3.2 Macros…………………………………………..…………………………………….9 3.2.1.- Macros externas……………………………………………………..………...12 3.2.2.- Macros internas…………………………………………………………..……13 Bibliografía………………………………………………………………..…………….14

Modularización.docx

Embed Size (px)

DESCRIPTION

Modularización es particionar un sistema de acuerdo a ciertas restricciones y principios de diseño, así como una estrategia de desarrollo, gobernando las partes resultantes.

Citation preview

Page 1: Modularización.docx

ÍNDICE

3. Modularización………………………………...……………………………………..3

3.1 Procedimientos…………………….………………………………………….…….4

3.1.1.- Procedimientos internos……..………………………………………...……..7

3.1.2.- Procedimientos externos………………………………..…………………….8

3.2 Macros…………………………………………..…………………………………….9

3.2.1.- Macros externas……………………………………………………..………...12

3.2.2.- Macros internas…………………………………………………………..……13

Bibliografía………………………………………………………………..…………….14

Page 2: Modularización.docx

3.- MODULARIZACIÓN

Modularización es particionar un sistema de acuerdo a ciertas restricciones y principios de diseño, así como una estrategia de desarrollo, gobernando las partes resultantes.

Modularización básicamente es crear varias rutinas (funciones o procedimientos) y así segmentar el código y hacerlo mas entendible para el programador ya sea para actualizaciones o depuraciones.

Un modulo es un segmento, rutina, subrutina, sub algoritmo o procedimiento, que puede definirse dentro de un algoritmo con el fin de ejecutar una tarea especifica y puede ser llamado o invocado desde el algoritmo principal cuando sea necesario.

Este enfoque de segmentación o Modularización es útil en dos casos: Cuando existe un grupo de instrucciones o una tarea específica que deba ejecutarse en más de una ocasión.

Cuando un problema es complejo o extenso, la solución se “divide” o “segmenta” en módulos que ejecutan “partes” o tareas especificas. Dicha solución se organiza de forma similar a como lo hacen las empresas cuando se estructuran con base en las funciones para realizar sus actividades; en otras palabras, el trabajo se divide en partes que sean fácilmente manejables y que, lógicamente, puedan ser separadas; así, cada una de estas partes se dedica a ejecutar una determinada tarea, lo que redundara en una mayor concentración, entendimiento y capacidad de solución a la hora de diseñar la lógica de cada una de estas.

Dichas partes son módulos o segmentos del algoritmo, algunos de ellos son los módulos directivos o de control, que son los que se encargaran de distribuir el trabajo de los demás módulos. De esta manera se puede diseñar un organigrama que indique la estructura general de un algoritmo.

La programación modular es uno de los métodos de diseño mas flexibles y poderosos para el mejoramiento de la productividad de un programa. Usando la programación modular el problema se divide en módulos, donde cada una de los cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos. Cada uno de estos módulos se analiza, se codifica y se prueba de preferencia por separado.

David Montiel Ramirez 2

Page 3: Modularización.docx

3.1 PROCEDIMIENTOS

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

Procedimiento o subrutina. Estas son un grupo de instrucciones que, desempeñan una tarea. Es una sección de un programa que se puede volver a utilizar y que se almacena en memoria, pero se emplea tantas veces como se necesite, a la vez ahorra espacio en la memoria. La desventaja de usar procedimientos es que la computadora requiere tiempo para ligarse con los procedimientos y regresar desde él.

Un procedimiento es un conjunto de instrucciones que tienen la finalidad de ejecutar una tarea específica 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.

Las partes que componen a un procedimiento son:

• Declaración del procedimiento

• Código del procedimiento

• Directiva de regreso

• Terminación del procedimiento

David Montiel Ramirez 3

Page 4: Modularización.docx

Sintaxis:

nombreprocedimiento PROC NEAR o FAR

……

…….

…….

RET

nombrerpocedimiento ENDP

NEAR. Procedimientos internos.

FAR. Procedimientos externos.

Ejemplo:

Rutina que sume dos bytes, almacenados en AH y AL cada uno y guardar la suma

en el registro BX.

SUMA PROC NEAR

MOV BX, 0

MOV BL, AH

MOV AH, 00

ADD BX, AX

RET

SUMA ENDP

Desventajas y ventajas

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 uede 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:

David Montiel Ramirez 4

Page 5: Modularización.docx

David Montiel Ramirez 5

Page 6: Modularización.docx

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 continúa el flujo del programa

Las partes que componen a un procedimiento son:

● Declaración del procedimiento

● Código del procedimiento

● Directiva de regreso

● Terminación del procedimiento

3.1.1 PROCEDIMIENTOS 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.

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.

Permiten el ahorro de memoria, este puede ser llamado varias veces en el mismo programa y sólo requiere memoria una vez.

Las partes que componen a un procedimiento son:

Declaración del procedimiento Código del procedimiento Directiva de regreso Terminación del proceso

David Montiel Ramirez 6

Page 7: Modularización.docx

3.1.2 PROCEDIMIENTOS 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

Este tipo de procedimientos permiten crear bibliotecas de funciones de ensamblador, permitiendo a su vez asemejarse más a la programación de alto nivel.

Cuando se solicita la ejecución de un programa, el cargador de programas el DOS utiliza este nombre de procedimiento como el punto de entrada para la primera instrucción a ejecutar. La directiva ENDP indica el fin de un procedimiento y contiene el mismo nombre que el enunciado PROC para permitir que el ensamblador relacione a los dos.

Los procedimientos deben estar por completo dentro de un segmento, ENDP define el final de un procedimiento antes que ENDS defina el final de un segmento.

Los beneficios de un programa con procedimientos son los siguientes:

1. Reduce la cantidad de código, ya que un procedimiento común puede ser llamado desde cualquier lugar en el segmento de código.

2. Fortalece la mejor organización del programa.

3. Facilita la depuración del programa, ya que los errores pueden ser aislados con mayor claridad.

4. Ayuda en el mantenimiento progresivo de programas, ya que los procedimientos son identificados de forma rápida para su modificación.

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

David Montiel Ramirez 7

Page 8: Modularización.docx

David Montiel Ramirez 8

Page 9: Modularización.docx

Por ejemplo: Este programa muestra la forma de utilizar procedimientos y datos xternos 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

David Montiel Ramirez 9

Page 10: Modularización.docx

3.2 MACROSEs un grupo de instrucciones que efectúan una tarea. Se utilizan las directivas macro y ENDM para delimitar una macro secuencia. Una macro secuencia TRANSF macro. Las Variable local en una macro son aquella que aparece dentro del cuerpo de la macro, pero no está disponible fuera de ella , para definir una variable local se utiliza una directiva llamada LOCAL esta se utiliza para declarar etiquetas de saltos en un código estos se tienen que llamar para que no marquen errores.

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.

Para cada instrucción que es codificada, el ensamblador genera una instrucción de lenguaje máquina. Ensamblador tiene facilidades que se pueden usar para definir macros.

Se define un nombre específico para la macro, junto con el conjunto de instrucciones en lenguaje ensamblador que la macro va a generar. Después, siempre que se necesite codificar el conjunto de instrucciones, solo se codifica el nombre de la macro y el ensamblador genera de manera automática las instrucciones definidas.

Los operadores más comunes que se utilizan son los siguientes:

Operador % convierte la expresión que le sigue un símbolo a un número.

Operador; Indica que lo que viene a continuación es un comentario que no debe aparecer al expansionar la macro.

David Montiel Ramirez 10

Page 11: Modularización.docx

Operador! o <> Empleado para indicar que el carácter que viene a continuación debe ser interpretado literalmente y no como un símbolo.

Operador & Utilizado para concatenar texto o símbolos. Se le llama macro interna a aquella que se declara y se llama dentro del mismo programa.

Las macros son útiles para los siguientes propósitos:

Simplificar y reducir la cantidad de código. Reducir errores causados por código repetitivo. Linealizar los programas para hacerlos más legibles.

Ejemplos de funciones que pueden ser implementadas con macros:

Operaciones de entrada/salida. Rutinas para el manejo de cadenas de caracteres. Rutinas para el manejo de pantalla. Condiciones para crear macros: Son creadas antes de definir cualquier segmento. Se asigna un nombre válido, siguiendo las condiciones para crear

identificadores.

Componentes de una macro:

Declaración de la macro. Código de la macro. Directiva de terminación de la macro.

Sintaxis:

nombremacro MACRO [argumento1, argumento2, …..]

ENDM

Ejemplo:

Posicion MACRO Fila, Columna

PUSH AX

PUSH BX

PUSH DX

MOV AH, 02H

David Montiel Ramirez 11

Page 12: Modularización.docx

MOV DH, Fila

MOV DL, Columna

MOV BH, 0

INT 10H

POP DX

POP BX

POP AX

ENDM

3.2.1 MACROS 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:

Ejemplo:

;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

David Montiel Ramirez 12

Page 13: Modularización.docx

3.2.2 MACROS 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.

David Montiel Ramirez 13

Page 14: Modularización.docx

Bibliografía

Lenguaje ensamblador unidad 3 Modularización. Instituto Tecnológico superior de Jesús Carranza. Veracruz. Salomón Mejía Corona.pdf

Lenguaje ensamblador. Modularización. Ing. Saúl Román Barraza.pdf.

http://rjovep.sistemasitl.com/Ray/Len_Ensa/Notas/UIV.pdf

David Montiel Ramirez 14