Anda di halaman 1dari 9

UNIVERSIDAD NACIONAL DE INGENIERIA DPTO

DE SISTEMAS DIGITALES Y TELECOMUNICACIONES


LABORATORIOS DE MAQUINAS COMPUTADORAS I
PRIMER LABORATORIO

INTRODUCCIN AL EMU8086.
Objetivos especficos

Identificar los principales elementos que conforman el ambiente Integrado de Programacin (IDE) del
programa EMU8086.
Identificar los elementos que conforman un cdigo fuente tpico, escrito con la sintaxis del lenguaje
ensamblador de la familia 8086.
Crear cdigos fuentes usando la sintaxis del lenguaje ensamblador.

Materiales y equipo

1 Computadora con el programa EMU8086 y el archivo IO_BAS.INC

Procedimiento
1) Ejecute el programa emulador de microprocesadores EMU8086.
2) En la ventana de bienvenida seleccione la opcin new.
3) En la ventana donde elige el tipo de plantilla selecciones la opcin empty workspace y luego de clic en
OK.
4) Una vez est abierto el IDE y usando la opcin open verifique que en la sub-carpeta inc
(C:\emu8086\inc) existe el archivo IO_BAS.inc, en la opcin tipo seleccione all files (*.*). Si el archivo
no est comunqueselo al docente de laboratorio.
5) Escriba en el IDE el cdigo fuente en lenguaje ensamblador que se muestra a continuacin. Por favor no
digite los comentarios.
PROGRAMA EN LENGUAJE ENSAMBLADOR

include IO_BAS.INC ;Indica al compilador que incluya la librera respectiva.


;El archivo IO_bas.INC debe estar almacenado en
;la carpeta inc del emulador
.model small
;Indica al compilador el modelo de memoria que se usara
;en este caso se usa un modelo pequeno
;=====================================================
;ZONA PARA DECLARAR LAS VARIABLE Y CONSTANTES DEL PROGRAMA
;
;SE LE CONOCE COMO SEGMENTO DE DATOS
;
;Inicia con la directiva simplificada .data
;=====================================================
.data
frase db 'HOLA MUNDO',0Ah,0Dh,'$'
;Declara cadena que se va a imprimir
pak
db 'Presione cualquier tecla para terminar el programa$'
;===========================================================
;ZONA PARA ESCRIBIR LAS INSTRUCCIONES, MACRO-INSTRUCCIONES
;Y PROCDIMIENTOS QUE SE EJECUTARAN.
;
;SE LE CONOCE COMO SEGMENTO DE CODIGO
;
;Inicia con la directiva simplificada .code
;==========================================================
.code INICIO:
mov ax, @DATA ;Bloque de instrucciones que
ubica la zona de
;memoria donde estan
almacenados los datos
;con los que el programa va
a trabajar.
;Se utiliza la instruccion MOV (mover) para
;trasladar al registro AX la direccion de memoria
;donde inicia este bloque
mov ds, ax ;Transfiere (en realidad copia) el contenido del
;registro AX al registro DS
Imprimir_Cadena frase
;Macro-Instruccion que imprime la cadena llamada frase
Imprimir_Cadena pak

;Macro-Instruccion que imprime la cadena llamada fin

Presione_Tecla_Fin
;Macro-Instruccion que espera a que se
;presione cualquier tecla para seguir adelante
FIN:
mov ax, 4C00h ;Bloque de instrucciones que terminan el programa
int 21h
;==========================================================
;ZONA DE MEMORIA DONDE SE ALMACENAN DATOS INTERMEDIOS QUE SE CREAN
;DURANTE LA EJECUCION DEL PROGRAMA.
;
;SE LE CONOCE COMO SEGMENTO DE PILA
;
; Inicia con la directiva simplificada .stack
;==========================================================
.stack
end INICIO

6) Guarde el archivo en la carpeta MySource asignndole por nombre su nmero de carnet.


Cuntos bytes contiene el archivo fuente que ha digitado?
1kb (debido a que borr los comentarios del archivo)
7) Compile el archivo ASM, dando clic en el botn llamado compile. Si se encuentra con algn mensaje
de error corrjalo, si tiene dificultades consulte con su docente de laboratorio. Si no tiene errores se le
pedir que asigne un nombre al archivo EXE, por defecto el programa le asigna el mismo nombre que
el cdigo fuente, pero puede colocarse otro. Para este caso mantenga el nombre por defecto.

8) Cierre la ventana assembler status (Estado del proceso de compilacin).


Cuntos bytes contiene el archivo ejecutable que se ha creado?
1kb

9) Emule el archivo EXE, dando clic en el botn llamado emulate. Notar que se abren dos ventanas,
una que muestra el cdigo fuente original (Original Source Code) y la otra es la del emulador (emulator)
que se muestra en la Figura 1.1.

Figura 1.1 Ventana emulator 10)

10) Observe la ventana original source code Qu lnea aparece


ceecresaltada? y por qu lo est
Mov ax, DATA, debido a que es la primera instruccin del programa, que vendra siendo localizar la zona
de donde se encuentran guardados los datos

11) Ejecute el programa presionando el botn run de la ventana emulator.


Siga las instrucciones del programa hasta que observe una ventana con un mensaje que indica la
finalizacin del programa.

12) Muestre a su docente de laboratorio el resultado de la ejecucin del programa, si no es la esperada


realice las correcciones pertinentes.

13) Si el resultado es satisfactorio Cul es la ltima instruccin resaltada?


Int 21h

14) Describa con sus propias palabras, pero usando un buen lenguaje tcnico que es lo que hizo el
programa:
La funcin que realiz el programa fue: Obtener la direccin en la cual se encuentran almacenados los datos
correspondientes, apartir de ah hace una copia de la informacin contenida en el registro AX mandndola a
la ubicacin del resgistro DS

15) Recargue el programa usando el botn reload. En la ventana emulator observe cual es el contenido
del registro AX y antelo a continuacin:
AX= 00 00

16) Presione el botn single step, para ejecutar paso a paso el programa. Note que han sucedido varias
cosas, la instruccin resaltada ahora es mov DS, AX y el contenido de AX ha cambiado. Anote el
contenido de los registros AX y DS
AX: 07 10

DS: 07 00

17) Presione nuevamente single step, para ejecutar la siguiente lnea de instruccin. Cul es el nuevo
valor de DS? xssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxxsxssxx
DS: 07 10

18) Ahora presione el botn step back Qu cambios observa?


DS paso de un valor 07 10 a 07 00 es IP su nuevo valor es 00 03

19) Presione nuevamente single step. Cul lnea est resaltada?


Imprimir Cadena frase
Qu diferencia hay entre esta lnea y las dos anteriores?
La diferencia est en que esta se imprime la frsae que ya se encuentra en el registro DS, en cambio en
los anteriores lo que hace es ubicar la direccin en donde se registra la frase y crea una copia en DS

20) Presione cuatro veces single step. Qu ocurri?


Se abri la ventana del emulador
Qu texto se imprimi en la pantalla?
HOLA MUNDO

21) Presione cinco veces single step.


Qu ocurri?
Se imprimi el texto faltante

22) Presione cuatro veces single step.


Qu ocurri?
El programa ley todas las instrcciones, quedando en espera que presionara alguna tecla

23) Realice la accin que el programa le pide.

24) Avance un paso ms.


Se cerr el programa al ejecutar Presione_Tecla_Fin?
No
Cul lnea est resaltada?:
Presione_Tecla_Fin

25) Avance un paso ms.


Qu registro cambi y cul es su nuevo valor?
Los registros que cambiaron y sus nuevos valores son:
CS: 0714
IP: 0017
SP: 0100
26) Avance un paso ms.
Se ejecut esta instruccin como la anterior?
No, ahora AX e IP cambiaron sus valores

27) Avance hasta terminar el programa.

28) En la ventana emulator ubique en la parte baja el botn vars que le permite visualizar las variables
sxadeclaradas, presione este botn.
29) Debe observar algo similar a lo mostrado en la Figura 1.2.
En esta ventana se le indica que se han declarado dos variables, que cada una se est mostrando en
grupos de bytes (48h y 50h), que solo se est visualizando 1 byte de cada variable y que los datos se
muestran en formato hexadecimal.

Figura 1.2. Ventana de variables.

29) Cambie el formato de visualizacin de las dos variables de hexadecimal a ASCII.


Qu relacin hay entre las variables declaradas en el cdigo fuente y lo que observa en la ventana de
variables?
La relacin est en que en la ventana de las variables muestra al momento de pasar a ASCII el primer
carcter de la frase declarada en el cdigo fuente

30)

Para el caso de la variable frase cambie el nmero de bytes visualizados de 1 a 13 y en pak

de 1 a 51.

31)

En esta ventana podr monitorear en tiempo real los cambios en las variables declaradas y ser

de gran ayuda para comprender muchos de los programas que se desarrollen en el laboratorio.

32)

Para terminar modifique el cdigo fuente para que aparezca en la pantallas los siguientes textos:

Mi nombre es: .
Que tenga un buen da

33)

Cuando este lista la modificacin muestre el resultado al docente de laboratorio. Con esto

ltimo se da por finalizado el procedimiento.

Anlisis de Resultados
1. Qu problema se hubiera presentado si no se tuviera copia del archivo IO_BAS.INC?
Hubiera dado error desde el momento de querer guardar y por tanto no se podra compilar, debido a
que se manda a llamar la librera IO_BASIC.INC, y por tanto esta se vuelve imprescindible para continuar
la ejecucin del programa.
2. Existen diferencias entre los formatos de las variables declaradas y los textos que se imprimen en
pantalla? De ser as cules son las diferencias? y a qu se deben?
Si existe diferencia, y es que en una de las frases son agregados 0Ah y 0Dh, en la pantalla del emulador
al plasmar la primer frase no permite realizar alguna accin, en cambio la mostrar en pantalla la segunda
cadena, el programa permie la realizacin de una funcin

3.
Cuando se ejecut el programa paso a paso no todas las lneas del cdigo se ejecutaron de la
misma manera. Agrupe las lneas de instruccin en base a la forma en que se ejecutan.
mov ax, @DATA
mov ds, ax
Imprimir_Cadena frase
Imprimir_Cadena pak
Presione_Tecla_Fin
mov ax, 4C00h
int 21h

4. Qu diferencia hay entre una instruccin, una Macro-instruccin y una Interrupcin?


Una instruccin es un comando que se manda al CPU para ser ejecutado, una Macro-instruccin es una
instruccin ms compleja conformada por otras instrucciones ms simples y una interrupcin se da cuando
el microprocesador debe de parar la ejecucin del programa para atender una peticin solicitada.

Investigacin Complementaria
1) En la variable llamada frase qu funcin cumplen los datos 0Ah y 0Dh?
Son valores cuya utilizacin en conjunto permite que se coloque el cursor al inicio de la siguiente lnea
en la pantalla del emulador;

2) Cul es la relacin de estos datos y el cdigo ASCII?


0Ah equivale a un \n en ASCII, el cual manda el cursor a la siguiente fila, 0Dh es equivalente a
carriage return \r en ASCII el cual mueve el cursor al inicio de fila.

3) En un compilador de C++ escriba y luego compile el cdigo de C del tutorial, luego compare el tamao
de los archivos fuentes y ejecutables con los obtenidos en esta prctica. Por qu hay diferencias?

Bibliografa

Tutorial del Emu8086 (se lo proveer su docente terico).

8086 assembler tutorials que est incluido en el programa Emu8086.

Laboratorio I Arquitectura de Mquinas

Moiss Enrique Zeledn & Geordano Steven Moreno.


2013-62008
/
2013-61595
Abril 2015.
Universidad Nacional de Ingeniera
Facultad de Electrotecnia y Computacin.
Arquitectura de Mquinas