Publicado el 14 de Enero del 2021
1.011 visualizaciones desde el 14 de Enero del 2021
309,0 KB
11 paginas
Creado hace 13a (11/01/2012)
Microprocesadores. Guía 2
1
Facultad: Ingeniería.
Escuela: Electrónica.
Asignatura: Microprocesadores.
Lugar de ejecución: Microprocesadores (Edificio 3, 2da
planta).
EL EMU8086 Y EL MICROPROCESADOR 8086.
Objetivos específicos
Identificar los registros del modelo de programación del 8086.
• Ubicar en la memoria los diferentes segmentos que conforman un archivo EXE.
•
• Observar la relación que existe entre los lenguajes de ensamblador y máquina.
•
Emplear las instrucciones MOV y OUT.
Materiales y equipo
1 Computadora con el programa EMU8086.
1 Módulo IDL-800 Digital Lab o fuente de +5V con tarjeta con switches y leds.
1 Breadboard.
1 cable para puerto paralelo con identificación de pines.
1 Pinza y cortadora de alambre.
•
•
•
•
•
• Alambre de telefonía.
Procedimiento
1) Ejecute el emulador 8086.
2) Digite el primer programa y guarde el archivo asignándole como nombre su número de carnet.
3) Compile el archivo.
4) Use el botón “emulate” para cargar el archivo ejecutable, pero no lo ejecute.
5) Observe la ventana “original source code”
Anote la línea de instrucción que está resaltada en amarillo _____________________
2
Microprocesadores. Guía 2
PRIMER PROGRAMA
.model small
.stack
.data
BYTE1 DB 7Ah ;Declara byte (8 bits) en hexadecimal
BYTE2 DB 99 ;Declara byte en decimal
BYTE3 DB 11001111b ;Declara byte en binario
BYTE4 DB 'A' ;Declara byte en formato ASCII
BYTE5 DB ?
BYTE6 DB ?
BYTE7 DB ?
BYTE8 DB ?
.code
;hacia el microprocesador
mov AX,@data ;Mueve en AX la direccion donde
;esta el segmento de datos
mov DS,AX ;Mueve el contenido de AX a DS
mov AH, BYTE1 ;Mueve los datos desde la memoria
mov BL, BYTE2
mov CH, BYTE3
mov DL, BYTE4
mov BYTE5, AH ;Mueve los datos desde el micro hasta
mov BYTE6, BL ; la memoria
mov BYTE7, CH
mov BYTE8, DL
FIN:
mov ax, 4c00h ;fin del programa
int 21h
end
Microprocesadores. Guía 2
3
En la ventana “emulator” se presenta la información que se muestra en la Figura 1.
6) En la ventana “original source code” resalte (haga clic en) en el primero de los datos declarados
Figura 1. Ventana “emulator”
BYTE1.
7) Observe la ventana “emulator” y compare con la información de la Tabla 1.
8) Resalte cada uno de los datos declarados en el código fuente y complete la información de la
Tabla 1.
Determine la dirección de inicio y final del segmento de datos, tanto en formato absoluto como
en segmento:desplazamiento: __________________________________________________________
____________________________________________________________________________________
TIPO DE DATO
SEGMENTO DE DATOS
DIRECCION
SEGMENT:DESPLAZ
0720:0000
ABSOLUTA
07200
CÓDIGO DEL DATO
EN HEXADECIMAL
7Ah
BYTE
Tabla 1. Segmento de datos.
4
Microprocesadores. Guía 2
9)
Resalte la primera línea de instrucción del segmento de código.
10) Relacione la información de la Tabla 2 y la ventana “emulator.
11) Resalte cada una de las líneas de instrucción del segmento de código y complete la información
que hace falta en la Tabla 2.
Determine la dirección de inicio y final del segmento de código, tanto en formato absoluto como
en segmento:desplazamiento: __________________________________________________________
____________________________________________________________________________________
12) Para ubicar el segmento de PILA escribir en la dirección “SEGMENTO:DESPLAZAMIENTO” el
dato 0710:0100.
13) Suba unas cuantas direcciones y observará que contienen los datos (código hexadecimal) 54h.
Anote en la Tabla 3 la dirección del primero y del último dato que contenga 54h. Estos demarcan
el segmento de PILA o STACK.
14) Presione el botón “reload”.
15) Anote en la Tabla 4 el contenido de los registros del microprocesador.
16) Ejecute la primera línea de instrucción verificando que los datos son transferidos al
microprocesador.
Microprocesadores. Guía 2
5
DIRECCIONES DE
MEMORIA
SEGM:DESP ABSOLUTA
0721:0000
0721:0001
0721:0002
0721:0005
0721:0006
0721:0007
0721:0008
0721:0009
0721:000A
0721:000B
0721:000C
0721:0015
0721:0016
0721:0017
0721:0018
0721:0019
0721:001A
0721:001B
0721:001C
07210
07211
07212
07215
07216
07217
07218
07219
0721A
0721B
0721C
07221
07222
07223
07224
07225
07226
07227
07228
07229
0722A
0722B
0722C
0721:0025
0721:0026
0721:0027
07235
07236
07237
SEGMENTO DE CÓDIGO
Instrucciones en
lenguaje
máquina.
Códigos
Instrucciones
desensambladas
Instrucciones en
lenguaje
ensamblador
Hexadecimal
almacenados en
memoria
B8
20
07
8A
26
00
00
8A
1E
01
00
8A
16
03
00
88
26
04
00
88
1E
05
00
B8
00
4C
MOV AX,00720h mov AX,@data
MOV DS,AX
mov DS,AX
MOV BL,[00001h] mov BL, BYTE2
MOV [00004h],AH mov BYTE5, AH
mov BYTE6, BL
MOV [00006h],CH mov BYTE7, CH
MOV [00007h],DL
MOV AX,4C00h mov ax, 4c00h
INT 021h
Tabla 2. Segmento de código.
6
Microprocesadores. Guía 2
PILA O STACK
PRIMER DATO
ULTIMO DATO
DIRECCION
SEGMENT:DESPLAZ
ABSOLUTA
Tabla 3. Segmento de PILA.
IP:
DS:
Tabla 4. Contenido de los registros al inicio del código.
DX:
SI:
CX:
BP:
17) Ejecute la siguiente línea de instrucción corroborando la transferencia de datos.
18) Copie nuevamente el contenido de los registros en la Tabla 5.
AX:
SS:
AX:
SS:
BX:
SP:
BX:
SP:
CS:
DI:
CS:
DI:
CX:
BP:
DX:
SI:
IP:
DS:
Tabla 5. Contenido de los registros durante la ejecución del programa.
19) Abra la ventana “variables” y verifique que todas las variables declaradas son visibles.
20) Continúe ejecutando paso a paso hasta que los primeros cuatro datos hayan sido transferidos a
sus respectivos registros dentro del microprocesador.
21) Ejecute las siguientes cuatro instrucciones verificando los cambios en las variables declaradas.
22) Cierre la ventana “variables”
23) Recargue el programa.
24) En la ventana “emulator” presione el botón “aux” y ahí selecciones la opción “memory”. Debe
observar una imagen similar a la de la Figura 2.
25) En el espacio de la 1ª dirección escriba el valor 0720:0000 para observar el segmento de datos.
26) Ejecute nuevamente el programa paso a paso y verifique como los datos se van moviendo.
Figura 2. Ventana de memoria “Random Access Memory”
27) Digite el segundo programa
28) Emule el programa, pero no lo ejecute.
Microprocesadores. Guía 2
7
SEGUNDO PROGRAMA
.model small
.stack
.data
BYTE1 DB 0FFh
BYTE2 DB 0AAh
BYTE3 DB 18h
BYTE4 DB 96h
.code
mov AX,@data ;Mueve en AX la direccion donde esta el
mov DS,AX ;Mueve el contenido de AX a DS
mov DX, 110 ;Indica a que puerto se enviaran los datos
mov AL, BYTE1 ;carga en AL el dato BYTE1
out DX, AL ;envia el dato en AL al puerto 110
mov AL, BYTE2 ;carga en AL el dato BYTE2
out DX, AL ;envia el dato en AL al puerto 110
mov AL, BYTE3 ;carga en AL el dato BYTE3
out DX, AL ;envia el dato en AL al puerto 110
mov AL, BYTE4 ;carga en AL el dato BYTE4
out DX, AL ;envia el dato en AL al puerto 110
FIN:
mov ax, 4c00h ;fin del programa
int 21h
end
29) En la ventana “emulator” ubique “virtual devices” y seleccione la opción “simple.exe”. Debe
observar una ventana como la que se muestra en la Figura 3.
La dirección de este puerto es 110 (decimal) y es de 8 bits.
8
Microprocesadores. Guía 2
Figura 3. Dispositivo virtual “simple io test”.
30) Ejecute paso a paso el programa, verificando que todos los datos son enviados al puerto 110.
31) Únase con otra persona para realizar los siguientes pasos.
32) Edite el programa para que el dato que se almacena en DX sea 0378h en lugar de 110.
33) Utilizando el cable correcto conecte el puerto paralelo de la computadora a los LEDS ya sea del
módulo IDL-800 Digital Lab o de la tarjeta con switches y leds, de forma que el MSB (etiquetado
D7) se conecte con el primer LED a la izquierda y el cable GND con el GND del módulo o de la
tarjeta.
34) Encienda el módulo ¿Observa algún código binario? ¿Cuál? ________________
35) Compile el programa nuevamente, pero en la ventana “assembler status” presione el botón
“external” y seleccione la opción debug.exe. Debe observar en una ventana la consola de DOS y
el Prompt parpadeando.
36) Digite “R” y presione ENTER.
37) Compare los datos que observa con los que tomó en la Tabla 4.
NOTA: Para ejecutar el programa paso a paso digite “P”.
38) Ejecute las primeras dos instrucciones y compare el resultado con la Tabla 5.
39) Ejecute los siguientes pasos hasta enviar el primer dato.
¿Corresponde el dato que observa en los LEDS con el dato enviado? _________
40) Ejecute el resto de programa verificando que los datos son enviados correctamente.
41) Pida a su docente de laboratorio que verifique que el programa se ejecuta correctamente.
42) Cierre las ventanas, apague la PC y deje ordenado su puesto de trabajo.
Microprocesadores. Guía 2
9
Análisis de Resultados
1. Cuando completó la Tabla 1 el primer dato declarado era 7Ah y al revisar la memoria encontró
también 7Ah, pero el segundo dato declarado era 99 y en la memoria no encontró el mismo dato
¿Por qué ocurre eso?
2. En la Tabla 2 la primera instrucción en lenguaje ensamblador es “MOV AX, @DATA” pero en las
instrucciones desensambladas se representa como “MOV AX, 00720” ¿Por qué ocurre eso?
3. En la Tabla 2 los datos almacenados en memoria para la primera instrucción son los siguientes:
B8, 20 y 07. ¿cómo se relacionan
Comentarios de: Microprocesadores. Guia 2 - El EMU8086 y el microprocesador 8086 (0)
No hay comentarios