Modularizacion
Click here to load reader
-
Upload
saulrb329497 -
Category
Documents
-
view
947 -
download
4
Transcript of Modularizacion
III. MODULARIZACIÓN
Lenguaje Ensamblador
1
Ing. Saúl Román Barraza.
CONOCERÁ LAS DIFERENTESFORMAS DE PROGRAMACIÓNMODULAR QUE PERMITE ÉSTELENGUAJE.
Objetivo2
Ing. Saúl Román Barraza.
3.1 MACROS.
3.1.1 INTERNAS.
3.1.2 EXTERNAS.
3.2 PROCEDIMIENTOS.
3.2.1 INTERNOS.
3.2.2 EXTERNOS.
Ing. Saúl Román Barraza.
3
Contenido.
Ing. Saúl Román Barraza.
4
3.1 Macros.
Para cada instrucción que es codificada, el ensamblador genera unainstrucción de lenguaje máquina.Ensamblador tiene facilidades que se pueden usar para definir macros. Sedefine un nombre específico para la macro, junto con el conjunto deinstrucciones en lenguaje ensamblador que la macro va a generar. Después,siempre que se necesite codificar el conjunto de instrucciones, solo secodifica el nombre de la macro y el ensamblador genera de maneraautomática las instrucciones definidas.
Ing. Saúl Román Barraza.
5
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 mas 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.
Ing. Saúl Román Barraza.
6
Condiciones para crear macros.
Son creadas antes de definir cualquier segmento.
Se asigna un nombre válido, siguiendo lascondiciones para crear identificadores.
Componentes de una macro.
Ing. Saúl Román Barraza.
7
Declaración de la macro.
Código de la macro.
Directiva de terminación de la macro.
Sintaxis.
Ing. Saúl Román Barraza.
8
nombremacro MACRO [argumento1, argumento2, …..]……ENDM
Ejemplo.
Ing. Saúl Román Barraza.
9
Macro para colocar el cursor en alguna posición determinada de la pantalla.
Posicion MACRO Fila, ColumnaPUSH AXPUSH BXPUSH DXMOV AH, 02HMOV DH, FilaMOV DL, ColumnaMOV BH, 0INT 10HPOP DXPOP BXPOP AX
ENDM
Ing. Saúl Román Barraza.
10
3.2 Procedimientos.
Son un conjunto de instrucciones a los que podemos dirigir el flujo de nuestroprograma, y una vez terminada la ejecución de dichas instrucciones se devuelve elcontrol a la siguiente línea a procesar, del código que mando llamar alprocedimiento.
Componentes de un procedimiento.
Ing. Saúl Román Barraza.
11
Declaración del procedimiento
Código del procedimiento
Directiva de regreso
Terminación del procedimiento
Sintaxis.
Ing. Saúl Román Barraza.
12
nombreprocedimiento PROC NEAR o FAR………….…….RET
nombrerpocedimiento ENDP
NEAR. Procedimientos internos.FAR. Procedimientos externos.
Ejemplo.
Ing. Saúl Román Barraza.
13
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
Diferencias entre macros y procedimientos.
Ing. Saúl Román Barraza.
14
Las macros ofrecen una mayor flexibilidad en la Programacióncomparadas con los procedimientos.
La principal diferencia entre una macro y un procedimiento es que enla macro se hace posible el paso de parámetros y en el procedimiento.
Podemos decir entonces que un procedimiento es una extensión de undeterminado programa, mientras que la macro es un módulo confunciones específicas que puede ser utilizado por diferentes programas.
Otra diferencia entre una macro y un procedimiento es la forma dellamar a cada uno, para llamar a un procedimiento se requiere el uso deuna directiva, en cambio la llamada a las macros se realiza como si setratara de una instrucción del ensamblador.
Macros y procedimientos.
Ing. Saúl Román Barraza.
15
La manera más fácil de modularizar un programa esdividirlo en dos o más partes. Para este tipo dedeclaraciones globales existen dos directivas:
PUBLIC nombre,,,
EXTRN nombre:tipo,,,
Ejemplo.
Ing. Saúl Román Barraza.
16
MODULO PRINCIPAL: MAIN.ASM
NAME main
PUBLIC exit
EXTRN print:near
stack SEGMENT word stack 'STACK'
DW 64 DUP(?)
stack ENDS
data SEGMENT word public 'DATA'
data ENDS
code SEGMENT byte public 'CODE'
ASSUME cs:code, ds:data
start:
mov ax,data
mov ds,ax
jmp print
exit:
mov ah,4ch
int 21h
code ENDS
END start
SUBMODULO: TASK.ASM
NAME task
PUBLIC print
EXTRN exit:near
data SEGMENT word public 'DATA'
entrada DB "Entrando a un
submodulo....",13,10,"$“
salida DB ".......saliendo.",01,07,13,10,"$"
data ENDS
code SEGMENT byte public 'CODE'
ASSUME cs:code, ds:data
print:
mov ah,09h
mov dx, OFFSET entrada
int 21h
mov ah,09h
mov dx, OFFSET salida
int 21h
jmp exit
code ENDS
END
Practicas.
Ing. Saúl Román Barraza.
17
Practica 13
Practica 14
Practica 15
Ing. Saúl Román Barraza. 18