Está en la página 1de 18

Lenguaje Ensamblador

I I I . MODUL AR I ZAC I Ó N

Ing. Saúl Román Barraza.


Objetivo
2

CONOCERÁ LAS DIFERENTES


FORMAS DE PROGRAMACIÓN
MODULAR QUE PERMITE ÉSTE
LENGUAJE.

Ing. Saúl Román Barraza.


Contenido.
3

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.1 Macros.
4

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.

Ing. Saúl Román Barraza.


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.


Condiciones para crear macros.
6

Son creadas antes de definir cualquier segmento.

Se asigna un nombre válido, siguiendo las


condiciones para crear identificadores.

Ing. Saúl Román Barraza.


Componentes de una macro.
7

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

Ing. Saúl Román Barraza.


Sintaxis.
8

nombremacro MACRO [argumento1, argumento2, …..]




ENDM

Ing. Saúl Román Barraza.


Ejemplo.
9

Macro para colocar el cursor en alguna posición determinada de la


pantalla.

Posicion MACRO Fila, Columna


PUSH AX
PUSH BX
PUSH DX
MOV AH, 02H
MOV DH, Fila
MOV DL, Columna
MOV BH, 0
INT 10H
POP DX
POP BX
POP AX
ENDM

Ing. Saúl Román Barraza.


3.2 Procedimientos.
10

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.

Ing. Saúl Román Barraza.


Componentes de un procedimiento.
11

Declaración del procedimiento


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

Ing. Saúl Román Barraza.


Sintaxis.
12

nombreprocedimiento PROC NEAR o FAR


……
…….
…….
RET
nombrerpocedimiento ENDP

NEAR. Procedimientos internos.


FAR. Procedimientos externos.

Ing. Saúl Román Barraza.


Ejemplo.
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
Ing. Saúl Román Barraza.
Diferencias entre macros y procedimientos.
14

 Las macros ofrecen una mayor flexibilidad en la Programación


comparadas con los procedimientos.

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

 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.
Ing. Saúl Román Barraza.
Macros y procedimientos.
15

 La manera más fácil de modularizar un programa es


dividirlo en dos o más partes. Para este tipo de
declaraciones globales existen dos directivas:

PUBLICnombre,,,
EXTRN nombre:tipo,,,

Ing. Saúl Román Barraza.


Ejemplo.
16

MODULO PRINCIPAL: MAIN.ASM SUBMODULO: TASK.ASM


NAME main NAME task
PUBLIC exit PUBLIC print
EXTRN print:near EXTRN exit:near
stack SEGMENT word stack 'STACK'
DW 64 DUP(?) data SEGMENT word public 'DATA'
stack ENDS entrada DB "Entrando a un
data SEGMENT word public 'DATA' submodulo....",13,10,"$“
data ENDS salida DB ".......saliendo.",01,07,13,10,"$"
code SEGMENT byte public 'CODE' data ENDS
ASSUME cs:code, ds:data code SEGMENT byte public 'CODE'
start: ASSUME cs:code, ds:data
mov ax,data print:
mov ds,ax mov ah,09h
jmp print mov dx, OFFSET entrada
exit: int 21h
mov ah,4ch mov ah,09h
int 21h mov dx, OFFSET salida
code ENDS int 21h
END start jmp exit
code ENDS
END

Ing. Saúl Román Barraza.


Practicas.
17

 Practica 13
 Practica 14
 Practica 15

Ing. Saúl Román Barraza.


Ing. Saúl Román Barraza. 18

También podría gustarte