UNIVERSIDAD NACIONAL DE INGENIERIA DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES1 LABORATORIOS DE MAQUINAS COMPUTADORA
Views 153 Downloads 7 File size 264KB
UNIVERSIDAD NACIONAL DE INGENIERIA DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES1 LABORATORIOS DE MAQUINAS COMPUTADORAS I SEGUNDO LABORATORIO
EL EMU8086 YEL MICROPROCESADOR 8086. Objetivos específicos Ubicar en la memoria los diferentes segmentos que conforman un archivo EXE. Identificar los registros del modelo de programación del 8086. 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” ¿Cuál línea de instrucción está resaltada en amarillo?
Mov AX, @ data
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES LABORATORIOS DE MAQUINAS COMPUTADORAS I 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 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 ;hacia el microprocesador 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
6) En la ventana “original source code” resalte (haga clic en) en el primero de los datos declarados BYTE1. 7) Relacione la información de la Tabla 1 y la ventana “emulator”. 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:
07200:0000 - 07207:0007
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES LABORATORIOS DE MAQUINAS COMPUTADORAS I 3
TIPO DE DATO
DIRECCION
DATO EN MEMORIA
SEGMENT:DESPLAZ
ABSOLUTA
0720:0000
07200
CODIGO BINARIO 7Ah
0720:0001 0720:0002 0720:0003 0720:0004 0720:0005 0720:0006 0720:0007
07201 07202 07203 07204 07205 07206 07207
63h 0CFh 41h 00h 00h 00h 00h
BYTE
Ta b l a 1 . S e g m e n t o d e d a tos. 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:
0721:0000 - 0721:0024
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 binario) 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 microprocesador.
línea
de instrucción verificando
que los datos son transferidos
al
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES LABORATORIOS DE MAQUINAS COMPUTADORAS I 4 SEGMENTO DE CÓDIGO Instrucciones en lenguaje máquina. Instrucciones en Instrucciones Códigos lenguaje desensambladas binarios ensamblador SEGM:DESP ABSOLUTA almacenados en memoria DIRECCIONES DE MEMORIA
0721:0000 0721:0001 0721:0002
0721:0003 0721:0004
0721:0005 0721:0006 0721:0007 0721:0008 0721:0009 0721:000A 0721:000B 0721:000C
0721:000D 0721:000E 0721:000F 0721:0010 0721:0011 0721:0012 0721:0013 0721:0014
07210 07211 07212
B8 20 07
MOV AX,00720h
mov AX,@data
07213 07214
8E D8
MOV DS,AX
mov DS,AX
07215 07216 07217 07218 07219 0721A 0721B 0721C
0721D 0721E 0721F 07220
0721:0015 0721:0016 0721:0017 0721:0018 0721:0019 0721:001A 0721:001B 0721:001C
07221 07222 07223 07224 07225 07226 07227 07228 07229 0722A 0722B 0722C
0721:001D 0721:001E 0721:001F 0721:0020 0721:0021 0721:0022 0721:0023 0721:0024
0722D 0722E 0722F 07230 07231 07232 07233 07234
0721:0025 0721:0026 0721:0027
0721:0028 0721:0029
07235 07236 07237
07238 07239
8A 26 00 00 8A 1E 01 00
MOV AH, [00000h]
8A 2E 02 00
MOV CH, [00002h]
mov CH, BYTE3
MOV DL, [00003h]
mov DL, BYTE4
8A 16 03 00 88 26 04 00 88 1E 05 00
88 2E 06 00 88 16 07 00
Mov AH, BYTE1
MOV BL,[00001h] mov BL, BYTE2
MOV [00004h],AH
mov BYTE5, AH
MOV [00004h], BL
mov BYTE6, BL
MOV [00006h],CH
mov BYTE7, CH
mov BYTE8, DL MOV [00007h],DL
B8 00 4C
MOV AX,4C00h
CD 21
INT 021h
mov ax, 4c00h
int 21h
Ta b l a 2 . S e g m e n t o d e c ó d i g o .
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES LABORATORIOS DE MAQUINAS COMPUTADORAS I 5
P I L A O S TA C K PRIMER DATO ULTIMO DATO
DIRECCIO S E G M E N T: D E S PNL A B S O L U TA AZ 071F:000A 071ff
0710:0000
07100
Ta b l a 3 . S e g m e n t o d e P I L A .
CS:
IP:
0721 0000
0000 0000
AX:
BX:
SS:
SP: DS: BP: ES: 0710 0100 0700 013A CX: 0000 0700 Ta b l a 4 . C o n t e n i d o d e l o s r e g i s t r o s a l
DX: 0000 BX: 0000 SI: 0000 DI: 0000 inicio del código.
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. CS: F400 4C00 AX:
IP: SS: SP: DS: DX: 0041 0204 0710 BP: ES: BX: 0720 0063 CF3A 00FA 0720 SI: 0000 BX: CX: 0000 DI: 0000 0700 Ta b l a 5 . C o n t e n i d o d e l o s r e g i s t r o s d u r a n t e l a e j e c u c i ó n d e l p r o grama. 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 1. 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.
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES LABORATORIOS DE MAQUINAS COMPUTADORAS I 6
F i g u r a 1 . Ve n t a n a d e m e m o r i a “ R a n d o m A c c e s s M e m o r y ” 27) Digite el segundo programa 28) Emule el programa, pero no lo ejecute.
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
DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES LABORATORIOS DE MAQUINAS COMPUTADORAS I 7 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 2. La dirección de este puerto es 110 (decimal) y es de 8 bits.
Figura 2. 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. El dato que escribimos es 888 que se almacena en DX como 0378h. 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.
8 36) Digite “R” y presione ENTER. 37) Compare los datos que observa con los que tomó en la Tabla 4. N O TA : P a r a e j e c u t a r e l p r o g r a m a p a s o a p a s o d i g i t e “ 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.
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? R: Porque el dato declarado esta dado en decimal y la maquina lo convierte a hexadecimal. 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? R: Porque ese numero representa la dirección de memoria donde se encuentra guardado el dato de @DATA.
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 estos códigos y la línea de instrucción desensamblada “MOV AX, 00720”. R:
4. Al comparar la tercera línea de instrucción “MOV AH, BYTE1” con la respectiva línea desensamblada, se sustituye la palabra BYTE1 por un dato entre corchetes ¿Qué significa este dato? R:
5. En la Tabla 2 la primera línea de la columna “SEGMENTO:DESPLAZAMIENTO” contiene 0721:0000 ¿Cómo se relaciona esta información con el contenido de CS:IP en la Tabla 4? R: El registro CS se llama registro de segmento de código y se utiliza, en combinación con el puntero de instrucción IP registro para que apunte a la instrucción que se esta ejecutando (CD:IP). 6. En la Tabla 1 la primera línea de la columna “SEGMENTO:DESPLAZAMIENTO” contiene 0720:0000 ¿Cómo se relaciona esta información con el contenido de DS:DX en la Tabla 4? R: Tenemos que DS es un registro de segmento y fuera del set tenemos un registro de propósito general DX. 7. ¿Cómo se relaciona la información en la Tabla 3 con el contenido de SS:SP en la Tabla 4. 8. En el segundo programa ¿por qué necesitó cargar el dato 110 en el registro DX para enviar datos al puerto? R: Para verificar que todos los datos son transferidos al microprocesador. 9. Cuando modificó el segundo programa ¿por qué fue necesario cambiar el dato en DX de 110 a 0378h? 10. Dibuje un mapa de memoria del micro 8086 tanto en forma absoluta como en SEGMENTO:DESPLAZAMIENTO. Inicie el mapa en la dirección 00000h (0000:0000h) hasta la 0FFFFFh (FFFF:FFFFh) y en el mapa ubique cada uno de los segmentos del primer programa.
Investigación Complementaria 1) Esta actividad debe desarrollarse posteriormente a la ejecución de la guía de laboratorio y tiene por objetivo complementar y ampliar la temática desarrollada teniendo en mente las actividades futuras. 2) Investigue: ¿Qué son los modos de direccionamiento? ¿Cuántos y cuáles modos de direccionamiento tiene el microprocesador 8086? ¿Qué modos de direccionamiento poseen las instrucciones MOV y OUT?
Bibliografía •
Brey, B. B.
Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programación e interfaces, UDB 001.6404 B847 1997
3 edición Prentice Hall, México DF, 1997 Biblioteca