Guia2-MCP

UNIVERSIDAD NACIONAL DE INGENIERIA DPTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES1 LABORATORIOS DE MAQUINAS COMPUTADORA

Views 153 Downloads 7 File size 264KB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

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