Upload
davidmr905
View
261
Download
8
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
Í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
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
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
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
David Montiel Ramirez 5
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
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
David Montiel Ramirez 8
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
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
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
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
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
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