Beruflich Dokumente
Kultur Dokumente
Materiales y equipo
1 Computadora con el programa EMU8086. 1 Mdulo IDL-800 Digital Lab o fuente de +5V con tarjeta con switches y leds. 1 Breadboard. 1 cable para puerto paralelo con identificacin de pines. 1 Pinza y cortadora de alambre. Alambre de telefona.
Procedimiento
1) Ejecute el emulador 8086. 2) Digite el primer programa y guarde el archivo asignndole como nombre su nmero de carnet. 3) Compile el archivo. 4) Use el botn emulate para cargar el archivo ejecutable, pero no lo ejecute. 5) Observe la ventana original source code Cul lnea de instruccin est resaltada en amarillo? Mov AX, @ data
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 int 21h end ;fin del programa
6) En la ventana original source code resalte (haga clic en) en el primero de los datos declarados BYTE1. 7) Relacione la informacin de la Tabla 1 y la ventana emulator. 8) Resalte cada uno de los datos declarados en el cdigo fuente y complete la informacin de la Tabla 1. Determine la direccin de inicio y final del segmento de datos, tanto en formato absoluto como en segmento:desplazamiento: 07200:0000 - 07207:0007
TIPO DE DATO
BYTE
9)
10) Relacione la informacin de la Tabla 2 y la ventana emulator. 11) Resalte cada una de las lneas de instruccin del segmento de cdigo y complete la informacin que hace falta en la Tabla 2. Determine la direccin de inicio y final del segmento de cdigo, tanto en formato absoluto como en segmento:desplazamiento: 0721:0000 - 0721:0024
12) Para ubicar el segmento de PILA escribir en la direccin SEGMENTO:DESPLAZAMIENTO el dato 0710:0100. 13) Suba unas cuantas direcciones y observar que contienen los datos (cdigo binario) 54h. Anote en la Tabla 3 la direccin del primero y del ltimo dato que contenga 54h. Estos demarcan el segmento de PILA o STACK. 14) Presione el botn reload. 15) Anote en la Tabla 4 el contenido de los registros del microprocesador. 16) Ejecute la primera microprocesador. lnea de instruccin verificando que los datos son transferidos al
0721:0003 0721:0004
07213 07214
8E D8
8A 26 00 00 8A 1E 01 00
07221 07222 07223 07224 07225 07226 07227 07228 07229 0722A 0722B 0722C
8A 2E 02 00
8A 16 03 00 88 26 04 00 88 1E 05 00
MOV [00004h],AH
mov BYTE5, AH
MOV [00004h], BL
mov BYTE6, BL
88 2E 06 00 88 16 07 00
B8 00 4C
MOV [00006h],CH
mov BYTE7, CH
mov BYTE8, DL
MOV [00007h],DL
0721:0028 0721:0029
07238 07239
CD 21
int 21h
Ta b l a 2 . S e g m e n t o d e c d i g o .
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
AX:
0000 0000
BX:
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
SS:
DX: 0000 BX: 0000 SI: 0000 DI: 0000 inicio del cdigo.
17) Ejecute la siguiente lnea de instruccin 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) Contine 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 botn aux y ah selecciones la opcin memory. Debe observar una imagen similar a la de la Figura 1. 25) En el espacio de la 1 direccin 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.
SEGUNDO PROGRAMA .model small .stack .data BYTE1 DB 0FFh BYTE2 DB 0AAh BYTE3 DB 18h BYTE4 DB 96h .code mov AX,@data mov DS,AX mov DX, 110 ;Mueve en AX la direccion donde esta el ;Mueve el contenido de AX a DS ;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, BYTE4 ;carga en AL el dato BYTE4 out DX, AL FIN: mov ax, 4c00h int 21h end ;fin del programa ;envia el dato en AL al puerto 110
29) En la ventana emulator ubique virtual devices y seleccione la opcin simple.exe. Debe observar una ventana como la que se muestra en la Figura 2. La direccin 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 mdulo 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 mdulo o de la tarjeta. 34) Encienda el mdulo Observa algn cdigo binario? Cul? 35) Compile el programa nuevamente, pero en la ventana assembler status presione el botn external y seleccione la opcin 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.
Anlisis de Resultados
1. Cuando complet la Tabla 1 el primer dato declarado era 7Ah y al revisar la memoria encontr tambin 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 instruccin 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 direccin de memoria donde se encuentra guardado el dato de @DATA.
3. En la Tabla 2 los datos almacenados en memoria para la primera instruccin son los siguientes: B8, 20 y 07. cmo se relacionan estos cdigos y la lnea de instruccin desensamblada MOV AX, 00720. R:
4. Al comparar la tercera lnea de instruccin MOV AH, BYTE1 con la respectiva lnea desensamblada, se sustituye la palabra BYTE1 por un dato entre corchetes Qu significa este dato? R:
5. En la Tabla 2 la primera lnea de la columna SEGMENTO:DESPLAZAMIENTO contiene 0721:0000 Cmo se relaciona esta informacin con el contenido de CS:IP en la Tabla 4? R: El registro CS se llama registro de segmento de cdigo y se utiliza, en combinacin con el puntero de instruccin IP registro para que apunte a la instruccin que se esta ejecutando (CD:IP). 6. En la Tabla 1 la primera lnea de la columna SEGMENTO:DESPLAZAMIENTO contiene 0720:0000 Cmo se relaciona esta informacin 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 propsito general DX. 7. Cmo se relaciona la informacin 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 direccin 00000h (0000:0000h) hasta la 0FFFFFh (FFFF:FFFFh) y en el mapa ubique cada uno de los segmentos del primer programa.
Investigacin Complementaria
1) Esta actividad debe desarrollarse posteriormente a la ejecucin de la gua de laboratorio y tiene por objetivo complementar y ampliar la temtica desarrollada teniendo en mente las actividades futuras. 2) Investigue: Qu son los modos de direccionamiento? Cuntos y cules modos de direccionamiento tiene el microprocesador 8086? Qu modos de direccionamiento poseen las instrucciones MOV y OUT?
Bibliografa
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486. 3 edicin Prentice Hall, Mxico DF, 1997 Biblioteca