Está en la página 1de 21

Universidad de El Salvador.

Facultad de Ingeniería y Arquitectura.

Escuela de Ingeniería Eléctrica.

Sistemas Digitales Programables 1.

Catedrático: Ing. Ricardo Cortez.

Contenido: Asignación correspondiente al laboratorio número 2.

“Introducción al macro-ensamblador 80X86”

Instructor: Br. Cesar Escobar.

Presentado por:
Br. Wilbert Amilcar Aguilar Renderos AR13026

Br. Aarón Alfonso Berciano Hernández BH11017


Porcentaje Nota
1 – Introducción 5%
2 – Objetivos 5%
3 – Marco teórico 10 %
4 – Desarrollo de la practica 10 %
5 – Asignaciones
6.66%
6.66%
6.66%
6.66%
6.66%
6.66%
6 - Conclusiones 30 %
Nota final

Ciudad universitaria 4 de abril de 2018


INTRODUCCION
En el presente informe se da a conocer:
La creación de programas usando el programa MASM611 de Microsoft
Conocer las macros, la estructuración de un programa en MASM; haciendo usos de
programas y proceso de ensamble del programa.
Resaltando aspectos importantes tales como:
1. Los requisitos de software necesarios para programar en assambler son:
 Un procesador de palabras que genera códigos ASCII
 Un ensamblador
 Un enlazador (Link)
2. La estructura básica de un programa en ensamblador contiene:
 Directivas para la definición de segmentos
 Organización general de un programa
 Procesos
 Comentarios
3. Todos los macro en MASM están compuestos por:
 Un nombre
 Un inicio
 Un cuerpo
 Un final
Todo esto se explicar mediante códigos que servirán de ejemplo para que el lector
comprenda el contenido a desarrollar.

OBJETIVOS
General.

Desarrollar programas con lenguaje ensamblador utilizando el programa Microsoft


Macro Assembler para compilarlos y crear el ejecutable, haciendo uso de macros,
directivas y definiciones de segmento propias del programa ensamblador.

Específicos.
 Conocer las diversas instrucciones y directivas más utilizadas del macro-
ensamblador.
 Tener conocimiento de las distintas directivas de lenguaje ensamblador para el
8086.
 Aprender el proceso para ensamblar programas.
 Aprender el proceso de enlace para crear el programa ejecutable.
 Aplicar el formato de definición completa de segmentos en la elaboración de
programas en lenguaje ensamblador.
 Conocer y aplicar algunos métodos utilizados para la lectura desde el teclado y
la impresión en pantalla, por medio de las interrupciones del sistema DOS.
MARCO TEORICO
MACROENSAMBLADORES Y EL MICROSOFT MACRO ASSEMBLER
Un Macroensamblador es un programa traductor de lenguajes de nivel autocodificador.
Se diferencia de un ensamblador tradicional en que las instrucciones que traduce son
macroinstrucciones o simplemente macros. Una macro es un conjunto de instrucciones
(macroinstrucciones) que son definidas con un nombre, y que serán sustituidas por el
macro cada vez que el compilador encuentre el nombre en el código fuente. Las
instrucciones de macros se pueden guardar en el programa mismo o en un archivo
separado que el programa pueda identificar.
Una macroinstrucción es una instrucción compleja, formada por otras instrucciones más
sencillas. Esto permite la automatización de tareas repetitivas. El término no se aplica a
una serie de instrucciones escritas en la línea de comandos enlazadas unas con otras por
redirección de sus resultados o para su ejecución consecutiva.
Las macros suelen almacenarse en el ámbito del propio programa que las utiliza y se
ejecutan pulsando una combinación especial de teclas o un botón especialmente creado
y asignado para tal efecto. La diferencia entre una macroinstrucción y un programa es
que en las macroinstrucciones la ejecución es secuencial y no existe otro concepto del
flujo de programa que por tanto, no puede bifurcarse.
Para utilizar una macro solo es necesario llamarla por su nombre, como si fuera una
instrucción más del ensamblador, ya no son necesarias las directivas como en el caso de
los procedimientos.
El Microsoft Macro Assembler (MASM) es un programa macroensamblador que
contiene un lenguaje de macro con características tales como lazos, procesamiento
aritmético y de cadenas de texto. También permite tener un mayor control del hardware
ya que soporta el set de instrucciones para los procesadores 80386, 80486, y la familia
Pentium. Requiere, por lo menos 128KB de memoria y un sistema operativos MS-DOS
v2.0 o superior. El MASM v4.0 está compuesto por los siguientes programas:
 Microsoft Macro Assembler
 Microsoft 8086 Object Linker
 Microsoft Symbolic Debugger Utility
 Microsoft Symbol File Generator
 Microsoft Cross-Reference Utility
 Microsoft Library Manager
 Microsoft Program Maintenance Utility
 Microsoft EXE File Compression Utility
 Microsoft EXE File Header Utility
El MASM crea un programa ejecutable para los procesadores 8086, 8088, 80186,
80188, 80286, 8087 y 80287, así como también para los microprocesadores de la
familia Pentium; dependiendo de la versión del software.
DESARROLLO DE LA PRÁCTICA

APENDICE A

FIGURA1: USO DE DIRECTIVAS Y ESTRUCTURA EN ESAMBLADOR. (APENDICE a)

FIGURA 2: Ejecución de ensamblado del programa en MASM.


APENDICE B

FIGURA 3: CODIGO ANEXO B IMPRESIÓN DE CARACTERES(INICIO)

FIGURA 4: CODIGO ANEXO B IMPRESIÓN DE CARACTERES(FIN)


FIGURA 4: EJECUCION DEL CODIGO ANEXO B IMPRESIÓN DE CARACTERES

ASIGNACIONES.
EXPLIQUE EL PROCESO DE ENSAMBLE DE UN PROGRAMA DE MACRO
ASSEMBLER.
Al escribirse el código en un editor de textos, debe guardarse con la extensión .ASM en la
carpeta BIN del MASM. Luego ingresamos al sistema DOS. A partir de eso, debemos
ubicarnos en la carpeta BIN. Estando allí, se realiza la compilación del programa colocando
“un nombre del programa.ASM”.
Al presionar enter, se crea el archivo .OBJ y el archivo.EXE. Por último, solo se debe
colocar el nombre del programa con la extensión.EXE, presionar entre, y el programa
correrá.

INVESTIGUE Y EXPLIQUE LOS METODOS DE LECTURA DE TECLADO Y LA


IMPRESIÓN EN PANTALLA.
INT 21H
La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de
la interrupción software 21H. Es por esto que se le denomina DOS-API: DOS-
APPLICATION-PROGRAM-INTERFACE La INT 21H está compuesta por un grupo de
funciones. Cuando se accede a la INT 21H, hay que indicar el número de función que
queremos ejecutar. La llamada a la INT 21H se realizará como sigue:
Introducimos en (AH) el número de función a la que deseamos acceder.
En caso de que deseemos acceder a una sub-función dentro de una función, debemos
indicarlo introduciendo en (AL) el número de esa sub-función.
Llamar a la INT 21H.

INT 21H Función 01H: Entrada de Carácter con Eco (ó salida) LLAMADA:
AH = 01H
DEVUELVE:
AL = Código ASCII del Carácter leído y Echo a pantalla
(si AH =08H) es servicio sin Echo)
EFECTO: Se lee un carácter del dispositivo de entrada estándar, y se envía al dispositivo
estándar de salida. Si al llamar a la función no había ningún carácter disponible, se esperará
a que lo haya. Normalmente el dispositivo estándar de entrada es el teclado, y el dispositivo
estándar de salida es la pantalla.

INT 21H Función 02H: Salida de Carácter


LLAMADA:
AH = 02H
DL = Código ASCII a enviar al dispositivo de salida.
DEVUELVE: NADA.
EFECTO: Se envía el carácter depositado en el registro DL al dispositivo estándar de salida.
La salida puede ser re direccionada hacia un fichero, impresora, etc.

INT 21H Función 09H: Visualización de una cadena de caracteres


LLAMADA:
AH = 09H
DS:DX = Segmento: Desplazamiento de la cadena a visualizar (in DX - offset address of
string in data segment)
DS debe apuntar al segmento donde se encuentra la cadena.
DX debe contener el desplazamiento de la cadena dentro de ese segmento.
Ejemplo: Definition of the message in Data segment
MSG DB "This is a message$" or "This...","$"
Program in Code segment
Mov AH, 09H
Mov DX, Offset MSG
Int 21 H
DEVUELVE: NADA.
EFECTO: Se envía una cadena de caracteres al dispositivo estándar de salida. Si no se ha re
direccionado la salida, la cadena se enviará a la pantalla.
DISEÑAR UN PROGRAMA QUE SOLICITE EL INGRESO DE 4 NUMEROS
ENTRE 0 Y 20 (LOS NUMEROS MENORES A 10 DEBEN SER INGRESADOS
CON UN CERO ALA IZQUIERDA), LUEGO DEL INGRESO QUE SE MUETRE
UN MENU ESTILO TABLA SOLICITANDO LA OPERACIÓN QUE SE DESEA
REALIZAR, QUE NO DISTINGA ENTRE MINUSCULA Y MAYUSCULA PARA
SELECCIONAR LA OPCION DEL MENU Y QUE EN EL CASO DE INGRESAR
UNA OPCION NO VALIDA (SIEMPRE DURANTE EL MENU) MUESTRE UN
MENSAJE DE ERROR Y AGUARDE A QUE SE PRESIONE ENTER PARA
VOLVER AL MENU.

TABLA 1: MENU QUE SE DEBE MOSTRAR EN PANTALLA ASIGNACION 3


SOLUCION.

FIGURA 5: INICIO CODIGO ASIGNACION3 ENCABEZADO


FIGURA 6: CODIGO ASIGNACION3 CONTINUACION

FIGURA 7: CODIGO ASIGNACION3 CONTINUACION

FIGURA 8: CODIGO ASIGNACION3 CONTINUACION


FIGURA 9: CODIGO ASIGNACION3 CONTINUACION

FIGURA 10: CODIGO ASIGNACION3 FINAL

FIGURA 11: ENSAMBALADO DEL CODIGO ASIGNACION3


FIGURA12: SIMULACION DEL CODIGO ASIGNACION 3 INGRESO DE DATOS

FIGURA13: SIMULACION DEL CODIGO ASIGNACION 3 MENU DE OPERACIONES

FIGURA14: SIMULACION DEL CODIGO ASIGNACION 3 EJECUCION DE OPERACION


FIGURA15: SIMULACION DEL CODIGO ASIGNACION 3 EJECUCION DE OPERACION

DISEÑAR UN PROGRAMA EN EL CUAL SE INGRESEN DOS NUMEROS DE UN


BYTE CADA UNO, Y QUE SOLICITE LA OPERACIÓN MATEMATICA A
REALIZAR, LA CUAL SE SELECCIONARA DE ACUERDO ALA SIGUIENTE
TABLA:

TABLA 2: OPERACIONES QUE REALIZA EL CODIGO Y SE IMPRIME COMO MENU EN


EL CODIGO

SIN QUE SE HAGA DIFERENCIA ENTRE MAYUSCULA Y MINUSCULAS,ES


DECIR SI SE INGRESA “S” O “s” EL PROGRAMA SIEMPRE REALICE LA SUMA
Y ASI CON LAS DEMAS INSTRUCCIONES.
SOLUCION.

FIGURA 16: INICIO CODIGO ASIGNACION4 ENCABEZADO


FIGURA 17: CODIGO ASIGNACION4 CONTINUACION

FIGURA 18: CODIGO ASIGNACION4 CONTINUACION

FIGURA 19: CODIGO ASIGNACION4 CONTINUACION


FIGURA 20: CODIGO ASIGNACION4 CONTINUACION

FIGURA 21: CODIGO ASIGNACION4 CONTINUACION

FIGURA 22: CODIGO ASIGNACION4 FIN


FIGURA 23: ENSAMBLADO CODIGO ASIGNACION4 E INGRESO DE DATOS

FIGURA 24: CORRIDA CODIGO ASIGNACION4 MENU DE OPERACIONES

FIGURA 25: CORRIDA CODIGO ASIGNACION4 REALIZANDO UNA MULTIPLICACION


FIGURA 26: CORRIDA CODIGO ASIGNACION4 REALIZANDO UNA RESTA

DISEÑE UN PROGRAMA CON DOS TABLAS DE 10x5, ES DECIR, TABLA DE 10


POSICIONES DE 5 BYTES CADA UNA DE NOMBRES USER Y PASSWORD LA
PRIMERA POSICION DE LA TABLA USER DEBE CONTENER 5 CARACTERES
(USER1) Y LA PRIMERA POSICION DE LA TABLA PASSWORD CONTENER 5
CARACTERES (PASS1). EN PRINCIPIO EL PROGRAMA DEBE SOLICITAR UN
USUARIO Y CONTRASEÑA (QUE SERAN LOS GUARDADOS POR DEFECTO),
DE LOGRAR ESTO CORRECTAMENTE DEBE MOSTRARSE UNA MENU
ESTILO TABLA

TABLA 4: MENU ASIGNACION 5

LA DESCRIPCION DE LAS OPCIONES ES LA SIGUIENTE:

TABLA5: DESCRIPCION DE LAS OPCIONES DE EL MENU DE LA ASIGNACION 5

TODO INGRESO DE DATOS CORRECTAMENTE DEBERA SER ALMACENADO


EN USER Y PASWORD RESPECTIVAMENTE, NO DISTINGA ENTRE
MINUSCULA Y MAYUSCULA PARA SELECCIONAR LA OPCION DEL MENU
Y QUE EN EL CASO DE INGRESAR UNA OPCION NO VALIDA (SIEMPRE
DURANTE EL MENU) MUESTRE UN MENSAJE DE ERROR Y ESPERO HA QUE
SE PRESIONE ENTRE PARA VOLVER AL MENU.
SOLUCION.

FIGURA 27: INICIO CODIGO ASIGNACION5 ENCABEZADO

FIGURA 28: CODIGO ASIGNACION5 CONTINUACION


FIGURA 29: CODIGO ASIGNACION5 CONTINUACION

FIGURA 30: CODIGO ASIGNACION5 CONTINUACION

FIGURA 31: CODIGO ASIGNACION5 FIN


FIGURA 32: ENSAMBLADO DEL CODIGO ASIGNACION5

FIGURA 33: CORRIDA DEL CODIGO ASIGNACION5 INGRESANDO USUARIO


FIGURA 34: CORRIDA DEL CODIGO ASIGNACION5 MENU DE INGRESO

FIGURA 35: CORRIDA DEL CODIGO INGRESANDO USUARIO NO VALIDO


CONCLUSIONES.
En base al conocimiento adquirido con la investigación teórica, el desarrollo del laboratorio
y la solución de las asignaciones correspondientes, se ha llegado a las siguientes
conclusiones:
 Haciendo uso del MASM es posible crear códigos y enlazarlos con LINKER para
así observar su funcionamiento tal y como se hizo para los códigos realizados en El
desarrollo de la practica

 Los códigos en un lenguaje de bajo nivel tal como el ensamblador, son mucho más
largos que en los lenguajes de alto nivel debido a que las instrucciones se hacen
directamente al microprocesador y debe buscarse estrategias para no perder los
datos con los que se trabaja.

 Se aplicaron los conceptos que se han visto del lenguaje ensamblador, como lo son
el direccionamiento a memoria, offset, registros (de uso general, índice y de
segmento), bases y conversión numéricas, etc.

 Los procedimientos son una clase de equivalente a las funciones en los lenguajes de
alto nivel y son bloques de código que ejecutan una tarea específica una o varias
veces de esta manera nos ahorramos escribirlas varias veces en el mismo código
además se pueden reutilizar ese código en otros programas o incluso crear nuestras
propia librerías. Las macros son útiles para simplificar y reducir la cantidad de
codificación repetitiva, también reduce los errores causados por la codificación
repetitiva.

BIBLIOGRAFIA:

[1]https://issuu.com/jorgjls/docs/manual_b__sico_para_ensamblador_f

[2]http://www.rinconsolidario.org/eps/asm8086/CAP6.html

[3]http://galia.fc.uaslp.mx/~cantocar/ARQUI_COM_II/LIBRO%20IBM-PC/05.htm

[4]http://moisesrbb.tripod.com/unidad5.htm

[5]Microprocesadores INTEL, Barrey B. Brey, 8va edición

[6] Lenguaje Ensamblador para IBM PC y Compatibles, Peter Abel, tercera edición

[7] guiones de clase SDG115-2018, Ing. Ricardo Cortez

También podría gustarte