modularizacion

Post on 27-Jun-2015

947 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related