Sunteți pe pagina 1din 17

ESCUELA SUPERIOR POLITCNICA DEL LITORAL FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACIN

[Fecha]

LABORATORIO DE MICROPROCESADORES
Prctica #2:

El Microprocesador bsico 8086/8088 Arquitectura Interna


Profesor:

Ing. Hugo Villavicencio


REALIZADO POR:

Natalia Bonifaz Montaguano Maricela Elaje Acevedo


PARALELO: 5 Grupo: #2 Fecha de presentacin: 13/11/2013

Prctica # 3
El Microprocesador bsico 8086/8088 Arquitectura interna
OBJETIVOS Ensamblar un programa usando el ensamblador MASM. Conocer los diferentes archivos generados por el ensamblador y ligador. Analizar un programa con CODEVIEW Usar Programacin Estructurada.

DESCRIPCION DE LA PRCTICA En esta prctica hacemos uso de la aplicacin CODEVIEW, la cual es parecida a la que hemos venido utilizando en las practicas anteriores (DEBUG), con la diferencia de que esta se caracteriza por ser una aplicacin es mucho ms amigable que DEBUG, la cual nos permite hacer el seguimiento a la ejecucin de instrucciones y los cambios que ocurren tanto en el segmento de datos como en el grupo de registros de trabajo del microprocesador. Luego las instrucciones dadas las copiamos y las ejecutamos en el notepad++. Mediante una carpeta llamada MASM la cual contiene distintos programas que nos sirven para ejecucin de CODEVIEW. A continuacin se detalla con las siguientes capturas de pantalla, los pasos previos que se realizaron antes de empezar con los ejercicios enumerados en el informe:

Mediante el uso de este programa podremos observar el registro y el cambio que ocurre en cada variable a medida que se va ejecutando las instrucciones, y as tambin se puede determinar el offset de dichas variables.

EJERCICIO 1: Edite y ensamble P5. Ejecute paso a paso en CODEVIEW.

DIAGRAMA DE BLOQUES

DATOS DE ENTRADA: Instrucciones dadas en notepad++

DATOS DE SALIDA: CODEVIEW procesa instrucciones; Carga el archivo P1.ASM Se visualiza cada cambio en los registros

DIAGRAMA DE FLUJO
INICIO

Crear una carpeta que contenga los archivos MASM

Presionar F10 despus de VAR9

Dar instrucciones en notepad++ guardar archivo

Visualizar offset de VAR9

Llamamos a CODEVIEW desde el MSDOS Presionar F10 despus de MOV DS, AX Lee las instrucciones dadas en notepad++

Presionar F10 para ejecutar cada instruccin

Visualizar contenido de DS

Visualizar offset de VAR8

Presionar F10 despus de ADD CX, VAR1+3

Visualizar contenido de BH

Presionar F10 despus de MOV BH, VAR3+2

Visualizar contenido de CX

Presionar F10 despus de MOV VAR9, CONST2

Visualizar contenido de VAR9

Presionar F10 despus de MOV VAR2+10, AX

Visualizar contenido de VAR2+10

Presionar F10 despus de MOV VAR8+4, AX

Visualizar contenido de VAR8+4

Visualizar SALIR

FIN

DESCRIPCIN DEL PROGRAMA Empezamos copiando la descripcin que nos da el ejercicio en una ventana de notepad++ para poder trabajar desde ah, debemos fijarnos que al copiar las instrucciones en esta aplicacin algunos caracteres pueden cambiar como las comillas simples, es recomendable revisar eso para que el programa se guarde correctamente y de esta forma no exista problema alguno al compilarlo. Guardaremos este documento con la extensin .ASM. Una vez que hemos guardado el documento con la extensin previamente mencionada, vamos a la ventana de MSDOS y empezamos a seguir los pasos descritos en la prctica, una vez realizado esto nos aparecer la pantalla de CODEVIEW donde empezaremos a trabajar. ; Programa: P5.ASM ; Descripcin: Declaracin de segmentos, variables, constantes y movimiento de datos. ; El programa usa la funcin 4CH de MSDOS que permite salir, es decir regresar al nivel de comandos ; de MSDOS.

Con el editor de texto abra el archivo P1.LST y conteste las preguntas siguientes: 1. Cul es el desplazamiento (offset) de la variable VAR8? 003EH 2. Cul es el cdigo de mquina de la instruccin ADD CX, VAR1 + 3? 000D 03 0E 0003 RH 3. Cul es el cdigo de mquina de MOV VAR2+10,AX? 0032 A3 001E RH 4. Cul es el desplazamiento offset de la variable VAR9? 0048H

En el depurador CODEVIEW. Con tecla F10 ejecute el programa paso a paso y conteste las preguntas siguientes: 5. Cul es el contenido de DS despus de ejecutar MOV DS, AX? 0B81H 6. Cul es el contenido de BH despus de ejecutar ADD CX, VAR1 + 3? FALTA 7. Cul es el contenido de CX despus de ejecutar MOV BH, VAR3 + 2? 281EH 8. Cul es el contenido de VAR9 despus de ejecutar MOV VAR9, CONST2? 0DCBA9874H 9. Cul es el contenido de la variable VAR2+10 despus de ejecutar MOV VAR2+10, AX? 4020H 10. Cul es el contenido de la variable VAR8+4 despus de ejecutar MOV VAR8+4, AX? AB6EH

EJERCICIO 2:

Edite y ensamble P2.ASM. Ejecute paso a paso en CODEVIEW. ;********************************************************************** ; Programa: P2.ASM ; Descripcin: Suma enteros de 16 bits residentes en memoria de datos definidos en ARREGLO, deja ; el resultado en la variable SUMA. ;********************************************************************** TITLE Suma elementos de ARREGLO. .MODEL SMALL .STACK 200 .DATA ; segmento de datos ORG 300H DW 4365H, 1A1FH, 1931H, 4156, 1500, 1024 DW 5 DW ? .CODE ; segmento de cdigo MOV AX, @DATA MOV DS, AX MOV CX, CNT MOV BX, OFFSET ARREGLO MOV AX, 0 ADD AX, WORD PTR [BX] INC BX INC BX DEC CX JNZ BUCLE MOV SUMA, AX MOV AX, 4C00H INT 21H END INICIO; Fin del programa fuente.

ARREGLO CNT SUMA INICIO:

BUCLE:

DIAGRAMA DE BLOQUES

DATOS DE ENTRADA: Instrucciones dadas en notepad++

DATOS DE SALIDA: CODEVIEW procesa instrucciones; Carga el archivo P2.ASM Se visualiza cada cambio en los registros

DIAGRAMA DE FLUJO

INICIO
Crear una carpeta que contenga los archivos MASM

Visualizar contenido de BX

Dar instrucciones en notepad++ guardar archivo P2.ASM

Presionamos F10 hasta ejecutar la ltima instruccin

Llamamos a CODEVIEW desde el MSDOS Visualizar INICIO: Fin del programa Lee las instrucciones dadas en notepad++

Presionar F10 para ejecutar cada instruccin

FIN

Visualizar offset del elemento 1024 del arreglo

Presionar F10 despus de la instruccin MOV CX, CNT

Visualizar offset de la instruccin ejecutada

Presionar F10 despus de observar la variable SUMA

Visualizar el offset de SUMA

Presionar F10 despus de MOV BX, OFFSET ARREGLO

DESCRIPCIN DEL PROGRAMA Empezamos copiando el cdigo dado en la prctica en la aplicacin notepad++. Al igual que en el ejercicio anterior lo guardamos con la extensin .ASM para despus ir al MSDOS y siguiendo las instrucciones dadas ensamblar el programa. Una vez abierto el CODEVIEW visualizamos lo que nos pide el ejercicio, fijndonos correctamente en lo que nos pide el ejercicio. Cabe recalcar que podemos regresar al documento de notepad++ que se crea con extensin .LST que se crea despus de ejecutarlo en el MSDOS. Ensamble P2, luego con el editor de texto abra el archivo P2.LST y conteste las preguntas.

1. Escriba el OFFSET del elemento 1024 de ARREGLO: 0319 H

2. Escriba el OFFSET de la instruccin MOV CX, CNT: 000DH

3. Escriba el OFFSET de la variable SUMA: 4. Observe el cdigo de mquina de MOV AX, @DATA. Usted ver B8 - - - - R. Esto se debe a que el smbolo @DATA representa la direccin de segmento que no se conoce hasta que el programa se lleva a memoria para su ejecucin. 5. Por qu son necesarias las dos primeras instrucciones del programa? MOV AX, @ DATA y MOV DS, AX.

Cargar P2.EXE en CODEVIEW para su anlisis. Con F10 ejecute paso a paso y conteste las preguntas. 6. Cul es el contenido de BX despus de ejecutar MOV BX, OFFSET ARREGLO? 7. Este valor inicial en BX Qu representa? 8. Cul es la direccin lgica inicial de ARREGLO? 9. Cul es la direccin lgica de la variable SUMA? 10. Cul es el contenido final de la variable SUMA?

EJERCICIO 3:

Edite y ensamble P3. Ejecute paso a paso en CODEVIEW. ; ********************************************************************** ******** ; Programa: P3.ASM ; Descripcin: Aritmtica ASCII. Suma nmeros de dos dgitos decimales codificados en ASCII. ; Usa la instruccin AAA que genera BCD desempaquetado para facilitar la conversin a cdigo ASCII ; Visualiza resultado en pantalla de texto. ; ********************************************************************** ******** .MODEL SMALL .STACK .DATA SUMDO1 DB 39H, 35H ; SUMANDO1=95 codificado en ASCII SUMDO2 DB 38H, 37H ; SUMANDO2=87 codificado en ASCII SUMA DB 4 DUP(?) ; reserva cuatro bytes para SUMA codificada en ASCII .CODE INICIO: MOV AX, @DATA MOV DS, AX MOV AX, 0 MOV AL, SUMDO1+1 ADD AL, SUMDO2+1; suma dgitos menos significativos ; ajuste ascii despus de la suma, genera BCD desempaquetado AAA ; convierte BCD desempaquetado en cdigo ASCII ADD AX, 3030H ; preservar resultado ASCII en memoria MOV SUMA, AL MOV AH,0 STC MOV AL,SUMDO1;suma dgitos ms significativos ADC AL,SUMDO2 AAA ADD AX,3030H; BCD desempaquetado a ASCII

MOV SUMA+1, AL MOV SUMA+2, AH ; Visualiza resultado de la suma en pantalla de texto MOV AH, 2 MOV DL, SUMA+2 INT 21H MOV DL, SUMA+1 INT 21H MOV DL, SUMA INT 21H ; Termina el programa y regresa a MSDOS MOV AX, 4C00H INT 21H END INICIO DIAGRAMA DE BLOQUES

DATOS DE ENTRADA: Instrucciones dadas en notepad++

DATOS DE SALIDA: CODEVIEW procesa instrucciones; Carga el archivo P3.ASM Se visualiza cada cambio en los registros

DIAGRAMA DE FLUJO
INICIO

Crear una carpeta que contenga los archivos MASM

Visualizar contenido de BX

Dar instrucciones en notepad++ guardar archivo P2.ASM

Presionamos F10 hasta ejecutar la ltima instruccin

Llamamos a CODEVIEW desde el MSDOS Visualizar INICIO: Fin del programa Lee las instrucciones dadas en notepad++

Presionar F10 para ejecutar cada instruccin

FIN

Visualizar offset del elemento 1024 del arreglo

Presionar F10 despus de la instruccin MOV CX, CNT

Visualizar offset de la instruccin ejecutada

Presionar F10 despus de observar la variable SUMA

Visualizar el offset de SUMA

Presionar F10 despus de MOV BX, OFFSET ARREGLO

DESCRIPCIN DEL PROGRAMA Primero copiamos las instrucciones en el notepad++, luego guardamos el archivo con el nombre P3.ASM. Despus cargamos el archivo P3.exe en el CODEVIEW; presionando F10 para ejecutar paso a paso cada instruccin. De esta manera ejecutamos antes de ejecutar la instruccin AAA observamos el valor de AX en el registro y AF. Volvemos a revisar estos valores despus que se haya ejecutado AAA y observamos que el valor de AX cambi con respeto al valor de AX antes de ejecutar la instruccin y los valores de CF Y AF es 1. Tambin observamos el contenido de memoria en SUMA (SUMA, SUMA+1 y SUMA+2).

Finalmente modificamos los valores SUMDO1= 73 (base 10) y SUMDO2=68; guardamos el archivo; lo cargamos en el CODEVIEW y repetimos todos los pasos de nuevo.

Ensamble P3 y proceda con los pasos siguientes: 1. Ejecute paso a paso (use F10) hasta apuntar la primera instruccin AAA, observe el estado de AX = AF = 0 2. Ejecute la instruccin AAA y observe el estado de: AX = CF = 1 AF = 1 3. Continuar con la ejecucin paso a paso hasta apuntar la instruccin MOV AH, 2. Verifique el contenido de la variable SUMA (SUMA, SUMA+1 Y SUMA+2) en segmento de datos y escriba el contenido de las localidades de memoria: SUMA= 32H SUMA+1= 38H SUMA+2= 31H 4. Salga de CODEVIEW y ejecute el programa desde MSDOS. Verifique la suma en pantalla y escriba su valor. Mediante aritmtica decimal (base 10) confirme el valor de la suma. 128 5. En el segmento de datos modifique el valor de SUMDO1= 73 (base 10) y SUMDO2=68 (base 10) codificados en ASCII.

CONSLUSIONES

Se logr ensamblar un programa usando MASM, tambin se comprob la gran utilidad que tiene notepad++ para cargar las instrucciones en el CODEVIEW, mediante este programa pudimos ejecutar de otra forma las instrucciones creadas en un archivo diferente, para lo cual se hace uso de la tecla F10, y a medida que se ejecuta paso a paso las instrucciones podemos visualizar el cambio en los registros. Analizamos y desarrollamos un programa con CODEVIEW, donde se utiliz la

instruccin LOOP siendo reemplazada por DEC y JNZ; donde primero decrementa en uno, luego salta a etiqueta si CX 0, con CX = 0 no ejecuta el salto; solo hasta que el decremento est en 0, el programa saldr del bucle y ejecutar la siguiente instruccin dada en el programa. Claramente se pudo observar que en este programa se est utilizando Programacin Estructurada, debido que se utiliz un lazo. Al analizar cada variable tambin podemos ingresar y ver el segmento de datos de cada registro; mientras tanto por otro lado en el notepad++ se genera un archivo .lst en cual se pudo apreciar el cdigo de mquina y su desplazamiento para cada variable y cada instruccin

RECOMENDACIONES

Verificar que los datos ingresados en las instrucciones sean los correctos, teniendo muy en cuenta que la mquina solo trabaja basndose en el sistema hexadecimal, por lo tanto no puede excederse de la letra F ni del nmero 9. En el momento que se crea el archivo en notepad++ con las instrucciones requeridas, guardar este archivo con la extensin .ASM, solo de esta forma notepad++ puede generar otro archivo con extensin .lst til para el desarrollo del programa en CODEVIEW. No intente ejecutar las instrucciones con la tecla F5 porque esta, ejecuta las instrucciones hasta que se haya una interrupcin y si no la encuentra se encerrara en un bucle sin fin, daando de esta manera el equipo.

S-ar putea să vă placă și