Está en la página 1de 12

Departamento de Elctrica y Electrnica

MICROPROCESADORES
LABORATORIO N1

TEMA
Introduccin al EMU8086

Estudiantes:
Emilia Atapuma
Sergio Carranza

Universidad de las Fuerzas Armadas

Tema:
Introduccin al EMU8086.
Objetivos:
Identificar los principales elementos que conforman el ambiente de
programacin del software EMU8086.
Identificar los registros del modelo de programacin del 8086.
Observar la relacin que existe entre los lenguajes de ensamblador y mquina.
Reconocer de forma intuitiva los modos de direccionamiento bsicos del micro
8086.
Imprimir un carcter en la pantalla de usuario, modificando sus parmetros.
Utilizar el emulador en la creacin y ejecucin un archivo tipo COM.
Materiales:
Gua de Laboratorio.
Computadora PC con el programa EMU8086.
Procedimiento:
Programa nmero 1

Analizar el siguiente cdigo fuente (llamado PRIMER PROGRAMA),


ayudndose de los comentarios y del diagrama de flujo que lo acompaa.
Intente predecir cada cambio que tendrn los datos hexadecimales en los
registros del microprocesador.

Universidad de las Fuerzas Armadas

Intentando predecir los cambios existentes podemos decir:


AH, 7Ah
En este caso se el valor ingresado es un valor hexadecimal, entonces se guardara el
valor 7A en el registro.
BL, 99
En este caso se el valor ingresado es un valor decimal, entonces se guardara el valor 63
en el registro.
CL, 11001111b
En este caso se el valor ingresado es un valor binario, entonces se guardara el valor CF
en el registro.
AX, 100
En este caso se el valor ingresado es un valor decimal, entonces se guardara el valor 64
en el registro.
BX, 'A'
En este caso se el valor ingresado es un carcter, entonces se guardara el valor 41 en el
registro.
CX, 0ABCDh
En este caso se el valor ingresado es un carcter, entonces se guardara el valor 0ABCD
en el registro.
DX, 6540
En este caso se el valor ingresado es un valor decimal, entonces se guardara el valor
198C en el registro.
Presionando compile podremos generar un archivo .com

Universidad de las Fuerzas Armadas

Qu nombre la asigna el sistema al archivo .COM?


noname.com

Emulando el programa tenemos las siguientes ventanas que nos van a ir indicando
el contenido de los registros, la memoria y el programa desensamblado.

Copie los datos almacenados en los registros antes de ejecutar el programa:

AX: 0000
CS: 0700
BP: 0000
DI: 0000

BX: 0000
DS: 0700
IP: 0100
SI: 0000

CX: 0013
ES: 0700
SP: FFFE

DX: 0000
SS: 0700

Tabla 1

Ejecute el programa totalmente (RUN) y anote los datos resultantes.


Verifique si concuerdan con los datos que usted esperaba.

AX: 0064

BX: 0041

CX: ABCD
3

DX: 198C

Universidad de las Fuerzas Armadas

CS: F400
BP: 0000
DI: 0000

DS: 0700
IP: 0154
SI: 0000

ES: 0700
SP: FFFA

SS: 0700

Tabla 2

Anlisis

Al analizar los resultados de la Tabla 2 podemos concluir que los datos ingresados son
correctos en el registro AX cargamos un valor en decimal pero automticamente el
programa lo convierte en hexadecimal en este caso el valor de 64, en el registro BX
cargamos un carcter el programa lo convierte a hexadecimal con el valor de 41, en el
registro CX se guarda el valor de ABCD y en el registro DX cargamos un valor decimal
el programa lo convierte y lo guarda con el valor 198C en hexadecimal, en el registro
CS comparamos los valores antes de correr el programa y despus de hacerlo, asumimos
que el valor del registro no cambiara pero ocurre una interrupcin por esto finalmente
cambia el valor de este registro.

Cargue nuevamente el programa, observe el contenido de los registros,


sobre todo el contenido de CS e IP. Analice sus observaciones comparndola
con la que aparece en la TABLA 3.
DIRECCIONES

LENGUAJE
ENSAMBLADOR
SEGM(CS) OFFSET (IP)
CAMPOS
LINEA
0700
0100
B4
7A
mov AH,74
0700
0102
B3
63
mov BL,99
0700
0104
B1
CF
mov CL,11001111b
0700
0106
B8
64
00
mov AX,100
0700
0109
BB
41
00
mov BX,A
0700
010C
B9
CD
AB
mov CX,0ABCDh
0700
010F
BA
8C
19
mov DX,6540
0700
0112
C3
ret
NOTA: A partir de este punto el programa ejecuta un procedimiento
predeterminado llamado Interrupcin
0700
F400

0000
0150

LENGUAJE DE MQUINA

CD
FF

20
FF

INT 20H
BIOS DI

Tabla 3

Ejecute solo la primera instruccin (Single step). Observe los cambios


(sobre todo en CS e IP) se carg el dato esperado en AH?
4

Universidad de las Fuerzas Armadas

Se carga correctamente el dato en AH que sera el 7A, mientras que en el registro CS se


mantiene con el valor 0700, el que cambia es el registro IP antes de presionar la single
step se mantena en un valor de 0100, finalmente cambia a un valor de 0102.

Interprete la informacin de la TABLA 3 respecto de sus resultados

Contine ejecutando paso a paso el programa hasta la instruccin RET, al


mismo tiempo llene los espacios vacos de la TABLA 1. Si tiene dudas en
esta actividad, por favor solicite la asistencia de su instructor.

Contine ejecutando las instrucciones hasta concluir el programa.

Anlisis:
Al analizar la Tabla 3, el registro CS se mantiene con el valor de 0700 desde el principio
en donde cargamos el valor AH, 7Ah pero al momento que nos encontramos con la
ltima instruccin que es RET, el valor del registro CS cambia esto se da ya que se
ejecuta un procedimiento predeterminado llamado Interrupcin, en el caso del registro
IP que se refiere al valor del offset tiene un cambio por cada instruccin cargada, es
importante que en las 3 primeras instrucciones tenemos datos que son de 8 bits al
cargarlos mientras que en las 4 ltimas instrucciones se cargan datos de 16 bits en dos
partes, INTEL creo la regla que en este caso primero se ingresan los menos
significativos y despus los ms significativos a esta regla la llamaron Little endian.
Preguntas:
5

Universidad de las Fuerzas Armadas

En el encabezado del programa por qu se incluye la lnea org 100h?

Iniciamos con esta instruccin ya que desde la direccin 100h es donde empezaremos a
enviar las instrucciones de nuestro programa.

Al introducir datos en los registros del microprocesador se usan diferentes


formatos
(bases de numeracin) cuntos y cules son?

En 5 tipos los cuales son:


* Binarios: sufijo "b" 1001b
* Decimales: sufijo "d" 9846d
* Hexadecimales: sufijo "h"; no puede empezar por letra 32Ah
* Octales: sufijo "o" o "q"
* Caracteres o strings: se deben escribir entre ' ' o " ".

Al momento de cargar los datos o valores, podemos cargar decimales,


caracteres,
binarios
La sintaxis de la instruccin MOV define tres campos: instruccin, dato1 y
dato2.
Al
moverse los datos cul es la fuente y cual el destino?

El destino puede ser un registro o un elemento de memoria y el operando fuente puede


ser un registro, un elemento de memoria o un valor inmediato.

Al observar la tabla1 se nota que a la misma instruccin MOV se le asignan


diferentes
cdigos hexadecimales a qu se debe esto?

Se debe a que cargamos a los diferentes registros valores hexadecimales, no son los
mismos valores, usamos la instruccin mov para mover los datos de los registros
correspondientes.

Cul es la funcin que cumple el registro IP dentro del PRIMER


PROGRAMA?
En la columna OFFSET de la tabla1, stos no se incrementan a una razn
constante por qu?

Este registro es el apuntador de instruccin el cual almacena el desplazamiento dentro


del segmento de cdigo. Este registro junto al registro CS apunta a la direccin de la
prxima instruccin, es por esto que no es constante cambia segn la instruccin que se
va ejecutar.

Programa nmero 2
6

Universidad de las Fuerzas Armadas

Analizar el siguiente cdigo fuente (llamado PRIMER PROGRAMA), ayudndose


de los comentarios y del diagrama de flujo que lo acompaa. Intente predecir cada
cambio que tendrn los datos hexadecimales en los registros del microprocesador.

Intentando predecir los cambios existentes podemos decir:


DX, 0112h
En este caso se el valor ingresado es un valor hexadecimal, entonces se guardara el
mismo valor en el registro.
AL, 'A'
En este caso se el valor ingresado es un carcter, entonces se guardara el valor 41 en el
registro.
AH, 61h
En este caso se el valor ingresado es un valor hexadecimal, entonces se guardara el
mismo valor en el registro.

Emule el programa y antes de ejecutarlo anote en la TABLA 2 el contenido


de las direcciones que tienen desplazamiento 0112h y 0113h, as como el
contenido de CX en la columna Inicio. Ms adelante se retomar este punto
para comparar los cambios en los datos.
7

Universidad de las Fuerzas Armadas

Corra paso a paso el programa hasta antes de ejecutar la quinta


instruccin, tratando de predecir las acciones que se realizarn,
auxilindose de los comentarios de cada instruccin, si tiene problemas
consulte con instructor.

Observe y anote en la TABLA 2 los resultados de su observacin

Ejecute la quinta instruccin, anote los resultados.

Ejecute paso a paso el resto de instrucciones, tomando nota de los


resultados.

SEG (DS)

OFFSET

0700
0112h
0700
0113h
REGISTRO CX

Inicio del
Program
a
90
90
0011

Antes de
5a

Despus
de 5a

Despus
de 6a

Despus
de 7a

90
90
0011

61
90
0011

61
41
0011

61
41
4161

Tabla 2

Cargue nuevamente el programa.


Ejecute paso a paso el programa, anotando en la TABLA 3 el valor de cada dato
que se le solicite, tomando como referencia el procedimiento con el que
complet la TABLA 1.
Cierre la ventana del emulador, pero no cierre la ventana del cdigo fuente.

DIRECCIONES
SEGM(CS)
0700

OFFSET
(IP)
0100

LENGUAJE DE MAQUINA
CAMPOS
B4

12
8

01

LENGUAJE
ENSAMBLADOR
LINEA
mov DX,0112h

Universidad de las Fuerzas Armadas

0700
0700
0700
0700
0700
0700

0103
0105
0107
0109
010B
010E

8B
B0
B4
88
88
C3

DA
41
61
27
47

01

mov BX,DX
mov AL,A
mov AH,61h
mov [BX],AH
mov [BX+1],AL
ret

Preguntas:

Al comparar las dos primeras instrucciones qu diferencias hay al


ejecutarlas, siendo que las dos son MOV?

En la primera instruccin carga el dato inmediato en DX, mientras que en la segunda


instruccin MOV se copia DX en BX, es decir, existe movimiento entre registros.

En las ltimas tres instrucciones se incluyeron corchetes (parntesis


cuadrados) en las instrucciones Qu diferencias observ en su ejecucin
respecto a las primeras dos instrucciones?

Cuando se incluyen los corchetes, es porque se va a indicar una direccin de


almacenamiento, al contario que cuando no se los coloca solo se almacena en los
diferentes registros.

Por qu al ejecutar la sptima instruccin los datos se almacenan en CX en


ese orden especfico?

Porque se est sealando que se va a copiar el dato de la direccin propuesta en CX, en


el orden que se estableci ya que es la ultima instruccin.

Conclusiones

Sergio Carranza
Mediante la realizacin del primer y segundo programa, podemos definir con
claridad lo que significa little endian y big endian, son conceptos importantes al
momento de realizar programas con el simulador EMU8086, por lo tanto little
endian significa que el byte de mayor peso se almacena en la direccin ms alta
mientras que el byte de menor peso en la ms baja. El concepto de big endian es
todo lo contrario el byte de mayor peso se almacena en la direccin ms baja
mientras que el byte de menor peso en la direccin ms alta.

Universidad de las Fuerzas Armadas

Es importante saber porque los programas empiezan con la lnea de cdigo ORG
100h, esta instruccin nos dice que vamos a empezar en la direccin 100h, el
simulador tiene facilidades al momento de saber la funcin de cada instruccin
mediante el set instruction, al cargar valores en los registros y al presionar single
step podemos entender y relacionar la simulacin con los valores que
desebamos cargarlos y as obtener el resultado esperado.
Emila Atapuma M.

Este software posee una interfaz para el usuario amistosa que permite a nosotros
como estudiantes familiarizarse con los fundamentos de la programacin en
lenguaje ensamblador de manera intuitiva brindando una serie de recursos para
ejecutar y depurar los programas que realizamos.
El software de emulacin EMU 8086 tambin posee algunas desventajas, una de
ellas es no soportar algunas interrupciones, que son convenientes para el sistema
operativo y otra es que no se pueden acceder a los puertos fsicos reales, ya que
estos los emula usando otros programas que estn incluidos en la carpeta del
EMU.

Recomendaciones

Es importante para un mayor entendimiento del programa presionar single step,


con esto lograremos ver los valores que cargamos uno por uno y analizar el
cambio de valores en los registros correspondientes.
Realizar una serie de ejercicios es la clave para el entendimiento de cmo
desarrollar los programas ya que no es lo mismo programar en papel que hacerlo
que un emulador que nos muestre los errores y las partes en donde estamos
fallando.

Glosario de trminos

1. Little Endian y Big Endian


Tiene el significado que el byte de menor peso se almacena en la direccin ms baja de
memoria y el byte de mayor peso en la ms alta.
En el formato "Big Endian" el byte de mayor peso se almacena en la direccin ms baja
de memoria y el byte de menor peso en la direccin ms alta.

10

Universidad de las Fuerzas Armadas

Bibliografa

http://www.algoritmia.net/articles.php?id=57
http://www.scribd.com/doc/10161583/Tutorial-EMU8086#scribd

11

También podría gustarte