Sei sulla pagina 1di 25

INSTITUTO TECNOLGICO DE ACAPULCO

Ingeniera en Sistemas Computacionales

MATERIA: LENGUAJES DE INTERFAZ


Maestro: Ing. Dagoberto Urza Osorio

Practica10: Reporte de la prctica del


desarrollo de los macros en lenguaje
ensamblador
Integrantes:
DAZ NAVARRETE TANIA

12320712

ESCOBAR ARREDONDO DIANA

12320719

JUSTO GARCA PAMELA LIZETTE

12320761

LOPEZ SIERRA JESSICA

12320770

Horario: 11:00-13:00
Aula: 604

NDICE
INTRODUCCIN..
MARCO TERICO
1

PLANTEAMIENTO DEL PROBLEMA..


SOLUCIN.
RESULTADOS..
CONCLUSIN..
BIBLIOGRAFA

INTRODUCCIN
MACROS DE APLICACIONES.
Las macros son grupos de instrucciones que tienen un seguimiento cronolgico usadas para economizar
tareas; una macro no es ms que un conjunto de instrucciones tales como borrar archivo, aadir
registro, etc., y que se almacenan en una ubicacin especial por ejemplo en Microsoft Access
observamos que hay una zona para crear macros, una macro en Access trabajando para una base de
datos podra ser un archivo que al llamarse desde otra instruccin: borrara los registros de un cliente o
accionista, luego borrara ciertos registros en otras tablas, extraer su informacin de un log, entre otras
cosas.
2

El programador escribir el nombre de la macro en cada uno de los lugares donde se requiera la
aplicacin de las instrucciones por ella representadas. La declaracin se realiza una sola vez, pero la
utilizacin o invocacin a la macro (macro llamada) puede hacerse cuantas veces sea necesario. La
utilizacin de macros posibilita la reduccin del tamao del cdigo fuente, aunque el cdigo objeto tiende
a ser mayor que cuando se utilizan funciones.
INTERRUPCIONES.
Una interrupcin es un estado en el cual el microprocesador detiene la ejecucin de un programa para
atender una peticin especial solicitada por el propio programa o por un dispositivo fsico conectado al
microprocesador externamente. Las interrupciones fueron creadas para facilitar al programador el acceso
a los diferentes dispositivos de la computadora (puertos de comunicaciones, terminales, impresoras,
etc.).
De no existir interrupciones, la CPU debera de ir preguntando, cada cierto tiempo, a los dispositivos para
ver si necesitan de su intervencin y como se puede suponer, eso significara lentitud, mucha lentitud.
EJECUCIN DE UNA INTERRUPCIN
Cuando durante la ejecucin de un programa se produce una interrupcin, el microprocesador realiza los
siguientes pasos:
1.- Detiene la ejecucin del programa
2.- Almacena los registros CS, IP y Banderas en la pila

MARCO TERICO

PLANTEAMIENTO DEL PROBLEMA


Aprender a practicar y a estructurar los macros de forma eficiente en lenguaje ensamblador. Esto se
llevara a cabo transformando los programas de las unidades anteriores que estn escritos con etiquetas
a macros.

SOLUCIN
Desplegar mensaje en pantalla
.Model small
3

include 'texto.txt'
.stack ; declaracin de la pila
.Data ; segmento de datos
Mensaje1 DB 'BIENVENIDOS AL INFIERNO', '$' ;mensaje a imprimir en pantalla
.code
;linea de codigo
Mov Ax, @Data ;inicio para los datos
Mov Ds, Ax
inicio:
inicio
end

Men (versin larga)


inicio macro
Mov Dx, Offset
Mov AH,09H
int 21H
Mov Dx, Offset
Mov AH,09H
int 21H
Mov Dx, Offset
Mov AH,09H
int 21H
Mov Dx, Offset
Mov AH,09H
int 21H
Mov Dx, Offset
Mov AH,09H
int 21H
Mov Dx, Offset
Mov AH,09H
int 21H
Mov Ax, 4C00H
int 21H
endm

Msg1
Msg2
Msg3
Msg4
Msg5
Msg6

.Model small
.stack
.Data
Msg1 DB 10,13,'MENU PRINCIPAL', '$'
Msg2 DB 10, 13,'1.- SUMA', '$'
Msg3 DB 10, 13,'2.- RESTA', '$'
Msg4 DB 10, 13,'3.- MULTIPLICACION', '$'
Msg5 DB 10, 13,'4.- DIVISION', '$'
Msg6 DB 10,13,'5.- SALIR', '$'
.code
Mov Ax, @Data
4

Mov Ds, Ax
inicio:
inicio
end

Men (versin corta)


inicio macro
Mov Dx, Offset Mensaje1
Mov AH,09H
int 21H
Mov Ax, 4C00H
int 21H
Mov AH,01h
int 21h
endm
.Model small
.stack
.Data
Mensaje1 DB 10,13,'MENU PRINCIPAL'
DB 10, 13,'1.- SUMA'
DB 10, 13,'2.- RESTA'
DB 10, 13,'3.- MULTIPLICACION'
DB 10, 13,'4.- DIVISION'
DB 10,13,'5.- SALIR', '$'
.code
Mov Ax, @Data
Mov Ds, Ax
inicio:
inicio
end

Men (nueva versin)


principal macro
mov dx,offset dago
mov ah,09h
int 21h
mov ah,01h
int 21h
cmp al,49
je un
cmp al,50
je do
cmp al,51
je tre
5

cmp al,52
je cuatr
cmp al,53
je sali
endm
uno macro
endm
dos macro
endm
tres macro
endm
cuatro macro
endm
salir macro
mov dx,offset bye
mov ah,09h
int 21h
mov ax,4C00h
int 21h
endm
.model small
.stack
.data
dago db 10,13, 'MENU PRINCIPAL'
db 10,13, '1.-SUMA'
db 10,13, '2.-RESTA'
db 10,13, '3.-MULTIPLICACION'
db 10,13, '4.-DIVISION'
db 10,13, '5.-SALIR','$'
bye db 10,13, 'HASTA LA VISTA BABY! $'
.code
mov ax,@data
mov ds,ax
incio:
uno:
uno
do:
dos:
tre:
tres
cuatro:
cuatro
sali:
salir
end

Operaciones bsicas (suma, resta, multiplicacin y divisin)


SUMA MACRO
MOV AH,00H
6

MOV AL,03H
INT 10H
MOV AL,BL
ADD AL,CL
MOV AH,0000H
IDIV DIEZ
MOV DECENAS,AL
MOV UNIDADES,AH
MOV DX,0000H
MOV AH,09H
LEA DX,MEN3
INT 21H
ADD DECENAS,30H
MOV DL,DECENAS
MOV AH,02H
INT 21H
ADD UNIDADES,30H
MOV DL,UNIDADES
MOV AH,02H
INT 21H
MOV AH,09H
LEA DX,MEN5
INT 21H
MOV AH,09H
LEA DX,MEN4
INT 21H
MOV AH,01H
INT 21H
CMP AL,31H
JE DIGIT
CMP AL,32H
JE MENU1
MOV AH,4CH
INT 21H
ENDM
RESTA MACRO
MOV AH,00H
MOV AL,03H
INT 10H
MOV AL,BL
SUB AL,CL
MOV AH,0000H
IDIV DIEZ
MOV DECENAS,AL
MOV UNIDADES,AH
MOV DX,0000H
MOV AH,09H
LEA DX,MEN3
INT 21H
ADD DECENAS,30H
MOV DL,DECENAS
7

MOV AH,02H
INT 21H
ADD UNIDADES,30H
MOV DL,UNIDADES
MOV AH,02H
INT 21H
MOV AH,09H
LEA DX,MEN5
INT 21H
MOV AH,09H
LEA DX,MEN4
INT 21H
MOV AH,01H
INT 21H
CMP AL,31H
JE DIGIT
CMP AL,32H
JE MENU1
MOV AH,4CH
INT 21H
ENDM
MULTIPLICACION MACRO
MOV AH,00H
MOV AL,03H
INT 10H
MOV AL,BL
MUL CL
MOV AH,0000H
IDIV DIEZ
MOV DECENAS,AL
MOV UNIDADES,AH
MOV DX,0000H
MOV AH,09H
LEA DX,MEN3
INT 21H
ADD DECENAS,30H
MOV DL,DECENAS
MOV AH,02H
INT 21H
ADD UNIDADES,30H
MOV DL,UNIDADES
MOV AH,02H
INT 21H
MOV AH,09H
LEA DX,MEN5
INT 21H
MOV AH,09H
LEA DX,MEN4
INT 21H
8

MOV AH,01H
INT 21H
CMP AL,31H
JE DIGIT
CMP AL,32H
JE MENU1
MOV AH,4CH
INT 21H
ENDM
DIVISION MACRO
MOV AH,00H
MOV AL,03H
INT 10H
MOV AL,BL
MOV BL,CL
DIV BL
MOV AH,0000H
IDIV DIEZ
MOV DECENAS,AL
MOV UNIDADES,AH
MOV DX,0000H
MOV AH,09H
LEA DX,MEN3
INT 21H
ADD DECENAS,30H
MOV DL,DECENAS
MOV AH,02H
INT 21H
ADD UNIDADES,30H
MOV DL,UNIDADES
MOV AH,02H
INT 21H
MOV AH,09H
LEA DX,MEN5
INT 21H
MOV AH,09H
LEA DX,MEN4
INT 21H
MOV AH,01H
INT 21H
CMP AL,31H
JE DIGIT
CMP AL,32H
JE MENU1
MOV AH,4CH
INT 21H
ENDM
SALIR MACRO
MOV AX,4C00H
INT 21H
ENDM
9

.MODEL TINY
.STACK
.DATA
MENU DB 'M E N U
P R I N C I P A L ',10,13
DB '1.-SUMA',10,13
DB '2.-RESTA',10,13
DB '3.-MULTIPLICAR',10,13
DB '4.-DIVIDIR',10,13
DB '5.-SALIR','$',10,13,10,13
OPCIONES DB 10,13, 'QUE OPERACION DESEA REALIZAR? $',10,13
MEN1 DB 'DIGITE PRIMER NUMERO: $'
MEN2 DB DIGITE SEGUNDO NUMERO: $'
MEN3 DB 10,13,'RESULTADO = $'
MEN4 DB 10,13, '2.- DESEA REALIZAR OTRA OPERACION:... $'
MEN5 DB 10,13, '1.- INTRODUCIR OTROS DIGITOS... $'
SALTA DB 0DH,0AH,24H
DECENAS DB ?
UNIDADES DB ?
DIEZ DB 0AH
.CODE
DIGIT:
MOV AH,00H
MOV AL,03H
INT 10H
MOV AH,09H
LEA DX,MEN1
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV BL,AL
MOV DX,OFFSET SALTA
MOV AH,09H
INT 21H
MOV AH,09H
LEA DX,MEN2
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV CL,AL
MENU1:
MOV AH,00H
MOV AL,03H
INT 10H
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU
MOV AH,09H
INT 21H
MOV DX,OFFSET OPCIONES
10

MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,49
JE UNO
CMP AL,50
JE DOS
CMP AL,51
JE TRES
CMP AL,52
JE CUATRO
CMP AL,53
JE SALIR
;JE MENU1
UNO:
SUMA
DOS:
RESTA
TRES:
MULTIPLICACION
CUATRO:
DIVISION
SALIR:
SALIR
END

Comparacin
Menor macro
lea Dx,menor2
mov Ah,09h
int 21h
JMP Empieza
endm
Igual macro
lea Dx,igual2
mov Ah,09h
int 21h
JMP Empieza
endm
Mayor macro
lea Dx,mayor2
mov Ah,09h
int 21h
11

JMP Empieza
endm
Salir macro
lea Dx,s
mov Ah,09h
int 21h
mov Ax,4c00h
int 21
endm
.model small
.Data
menor2 DB 10,13,10,13, 'menor A que B $',10,13,10,13
mayor2 DB 10,13,10,13, 'mayor A que B $',10,13,10,13
igual2 DB 10,13,10,13, 'igual A que B $',10,13,10,13
s DB 10,13,10,13, 'hasta la vista baby $' ,10,13,10,13
men1 DB 10,13,10,13, 'entre valor A $',10,13,10,13
men2 DB 10,13,10,13, 'entre valor B $',10,13,10,13
valor1 DB 10,13, ?
valor2 DB 10,13,?
.stack
.code
Empieza:
mov Ax,@Data
mov Ds,Ax
lea Dx,men1
mov Ah,09h
int 21h
mov Ah,1
int 21h
mov valor1,al
lea Dx,men2
mov Ah,09h
int 21h
mov Ah,1
int 21h
mov ah,valor1
cmp ah,al
JL Menor
JE Igual
JG Mayor
cmp al,48
jmp Salir
Menor:
menor
Igual:
igual
Mayor:
12

mayor
Salir:
salir
end

Comparaciones de cadenas
compara MACRO
lea si,cdn1 ;cargamos en si la cadena que contiene vec
lea di,cdn2 ;cargamos en di la cadena que contiene vec2
repe cmpsb ;compara las dos cadenas
Jne diferentes ;si no fueron igual
je iguales ;Si fueron iguales
ENDM
iguales MACRO
mov dx,offset cmp1
int 21h
mov ah,04ch
int 21h
ENDM
diferentes MACRO
mov dx,offset cmp2 ; Imprime que son diferentes y finaliza el programa.
int 21h
mov ah,04ch
int 21h
ENDM
.model small
.stack ;64
.data
men1 db 0ah,0dh, 'Cadena 1: ', '$'
men2 db 0ah,0dh, 'Cadena 2: ', '$'
cmp1 db 0ah,0dh, 'Son iguales ', '$'
cmp2 db 0ah,0dh, 'Son diferentes ', '$'
cdn1 db 15 dup(' '), '$' ;Vector 1
cdn2 db 15 dup(' '), '$' ;Vector 2
.code
inicio:
mov ax,@data
mov ds,ax
mov ah,09
mov dx,offset men1 ;Imprimimos el msj1
int 21h
lea si,cdn1 ;Cargamos en el registro si al primer vector
cadena1:
mov ah,01h ;Pedimos la cadena
int 21h
mov [si],al ;Se guarda en el registro indexado al vector
13

inc si
cmp al,0dh ;Se cicla hasta que se digite un Enter
ja cadena1
jb cadena1
mov ax,@data
mov ds,ax
mov ah,09
mov dx,offset men2 ;Imprime mensaje 2
int 21h
lea si,cdn2 ; Se carga en SI el vector2
cadena2:
;Mismo procedimiento que pedir1
mov ah,01h
int 21h
mov [si],al
inc si
cmp al,0dh
ja cadena2
jb cadena2
mov cx,15
;Determinamos la cantidad de datos a leer/comparar
mov AX,DS ;mueve el segmento datos a AX
mov ES,AX ;Mueve los datos al segmento extra
COMPARA:
COMPARA
IGUALES:
mov ax,@data
mov ds,ax
mov ah,09
IGUALES
DIFERENTES:
mov ax,@data
mov ds,ax
mov ah,09
DIFERENTES
END
End

Cadena (en hexadecimal)


Itera macro
;Etiqueta controladora de las iteraciones
mov al, cl
;Mueve el valor F al registro a la parte baja del registro
Ax
Xlat
;Traslada el caracter de la variable tabla a la parte baja
del registro Ax
mov dl, al
;Mueve el valor del ASCII de la parte baja de Ax a la parte
baja del registro Dx
mov ah, 2
;Mueve el valor 2 a la parte alta del registro Ax
int 21h
;Se utiliza la funcion 2 de la interrupcion 21. despliega un
caracter en pantalla
14

mov dl,10
;mueve el valor 10 a la parte Dl.
int 21h
;Interrupcion de consola que utiliza la funcion. De nuevo se usa
la funcion 2, que imprime caracter.
mov dl,9
int 21h
loop Itera
;Desplaza a la etiqueta Itera y decrementa en 1 al registro
contador (desde 15 a 0)
;EL registro Cx contine la cuenta de cuantas posiciones se
han desplegado
mov dl,30h
mov ah,2
int 21h
endm
mov ax,4c00h
;Regresa a MS-DOS por medio de la funcion
;4c de la interrupcion 21h.Terminar proceso
int 21h
.model small
;modelo de memoria
include 'emu8086.inc'
include 'exa.txt'
.stack
;pila
.data
;Segmento de datos
Mensaje DB 13,10,13,10
DB 'Desplegando los numeros hexadecimales del 15 al 1'
DB 13,10,13,10,'$'
;Cadena a desplegar
Tabla DB '0123456789ABCDEF' ;Tabla de traduccin
.code
;segmento de codigo
Empieza:
;Etiqueta empieza
mov ax, @Data ;Carga la direccion de @Data al registro Ax
mov ds, Ax
;Mueve la direccion Ax adecuada al segmento de datos.
lea dx,Mensaje
;Carga la direccion de mensaje a DX para imprimirla
Mov ah, 9
;Mueve el valor 9 a la parte Alta del registro Ah.
int 21h
;Utilizamos la funcion 9 de la interrupcion 21. Despliega el
mensaje!
mov cx,15
;mueve al registro contador la cantidad 15,son las 15
posiciones de la cadena
lea Bx,Tabla
;Permite acceso a la variable tabla del segmento de datos
itera:
itera
end Empieza

;Fin del programa

RESULTADOS
15

Desplegar mensaje en pantalla

Men (versin larga)

Men
(versin
corta)
Men
(nueva
versin)

16

Operaciones bsicas (suma, resta, multiplicacin y divisin)


Nos pide que ingresemos el primer y segundo digito

Y despus nos pregunta que operacin deseamos realizar

17

Empezamos con la opcion 1 suma

Pulsamos 2 para regresar al men y elegir la segunda opcin que es la resta

18

Pulsamos 2 para regresar al men y elegir la tercera opcin que es multiplicacin

Pulsamos 2 para regresar al men y elegir la cuarta opcin que es divisin

19

Pulsamos 2 para regresar al men y elegir la quinta opcin que es salir

Comparacin

20

21

Comparaciones de cadenas

22

Cadena (en hexadecimal)

23

CONCLUSIN
Como ya se ha mencionado antes las macros son grupos de instrucciones que tienen un seguimiento
cronolgico usadas para economizar tareas; una macro no es ms que un conjunto de instrucciones tales
como borrar archivo, aadir registro, etc., y que se almacenan en una ubicacin especial por
ejemplo en Microsoft Access observamos que hay una zona para crear macros, una macro en Access
trabajando para una base de datos podra ser un archivo que al llamarse desde otra instruccin: borrara
los registros de un cliente o accionista, luego borrara ciertos registros en otras tablas, extraer su
informacin de un log, entre otras cosas.
El programador escribir el nombre de la macro en cada uno de los lugares donde se requiera la
aplicacin de las instrucciones por ella representadas. La declaracin se realiza una sola vez, pero la
utilizacin o invocacin a la macro (macro llamada) puede hacerse cuantas veces sea necesario. La
utilizacin de macros posibilita la reduccin del tamao del cdigo fuente, aunque el cdigo objeto tiende
a ser mayor que cuando se utilizan funciones.
Ventajas de las MACROS:
1. Son rpidas porque se ejecutan en lnea de un programa.
2. Las macros pueden pasar y recibir parmetros.
3. La estructura de una macro es simple.
4. Hacen ms legible un programa.
Desventaja:
Hacen grande el cdigo fuente.

24

BIBLIOGRAFA
PETER Abel, Lenguaje Ensamblador y programacin para PC IBM y Compatibles, 3. Edicin,
Pearson Prentice Hall, 1966.
KIP R. Irvine, Lenguaje ensamblador para computadoras basadas en Intel,Pearson Prentice
Hall, 5 edicin, 2008.

25

Potrebbero piacerti anche