Guia de Laboratorio Arquitectura de Maq 1

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC ARQUITECTURA DE MAQUINAS I Universidad nacional de ingenier

Views 87 Downloads 0 File size 315KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC

ARQUITECTURA DE MAQUINAS I

Universidad nacional de ingeniería Facultad de electrotecnia y computación Departamento de eléctrica Reporte de laboratorio de microprocesadores Grupo 3T1 EL Elaborado por: Javier Martínez Astorga. Ricardo Aaron Arce Sandoval

Fecha 24 de marzo de 2017

1 Prof: Melania Solís

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC

ARQUITECTURA DE MAQUINAS I

GUIA DE LABORATORIO 1: INTRODUCCIÓN AL SIMULADOR EMU8086 OBJETIVOS  Practicar el uso del emulador emu8086 para simulación de programación en lenguaje ensamblador.  Conocer las bases para hacer un programa en ensamblador.  Conocer los principales registros del microprocesador 8086.  Comprobar el funcionamiento de la instrucción MOV y la directiva ORG. INTRODUCCION Un programa en computadora es una serie de instrucciones ejecutadas por una unidad central de procesamiento (CPU), mediante una serie de acciones lógicas. Antes de que un programa sea ejecutado por la CPU, éste debe ser almacenado en memoria en forma binaria. Este tipo de programación es llamado programación en lenguaje de máquinas y es el único lenguaje que la computadora entiende. Interpretar un código en lenguaje de máquina es bastante complicado y muy difícil de recordar, por lo que el microprocesador normalmente se programa usando el lenguaje ensamblador o un lenguaje de alto nivel (PASCAL, BASIC, C, etc.). El microprocesador lee continuamente el contenido de los registros de memoria empezando por la dirección 00000H. Reconoce el primer dato que lee como un código de operación y seguidamente incrementa el apuntador de instrucción, IP. Luego decodifica la instrucción para conocer qué operación deberá realizar y toma de las direcciones de memoria siguientes los operandos necesarios para ejecutar la instrucción. El microprocesador utiliza el registro IP como puntero para la lectura de cada instrucción almacenada en memoria. El ensamblador tiene una directiva llamada ORG (ORIGEN) que no es una instrucción, sino que le indica al ensamblador la dirección de inicio del programa. Es importante incluir comentarios dentro del código ensamblador, para ello se debe anteponer a dicho comentario un punto y coma. La instrucción MOV copia el valor del registro, dato o contenido de una dirección de memoria fuente, hacia el registro o dirección de memoria destino. La fuente no cambia, solamente el destino. Los valores pueden ser de 8 o 16 bits. MOV destino, fuente 2 Prof: Melania Solís

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC

ARQUITECTURA DE MAQUINAS I

La instrucción MOV no modifica el registro de banderas Es posible hacer que el microprocesador cambie el contenido del apuntador de instrucción y de esta manera ejecutar una instrucción que no es la siguiente en el mapa de memoria. Este procedimiento es llamado instrucción de salto. Las instrucciones de saltos son usadas para saltar entre diferentes localidades de memoria. Estos saltos se pueden hacer de forma específica o pueden ser condicionados mediante la prueba del estado de cuatro bits del registro de banderas. El bit de cero El bit de acarreo y préstamo El bit de paridad El bit de desborde El bit de signo

[Z] [C] [P] [O] [S]

PROCEDIMIENTO 1.

2.

Corra el simulador emu8086 haciendo doble clic en el ícono

En la pantalla inicial del simulador cuando escogemos new, aparecerá este encabezado:

ORG 100h 3 Prof: Melania Solís

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC

ARQUITECTURA DE MAQUINAS I

Donde: COM: significa que vamos a trabajar con un archivo tipo .com, que es el formato más simple de un archivo ejecutable. Para leer un poco más sobres esto, lea el tutorial. Cuando trabajamos con un archivo de este tipo tenemos que usar la directiva ORG que indica en qué dirección comenzará el programa. Generalmente por defecto, el programa comienza en 0700:0100 El valor de CS es puesto por el sistema operativo que este caso es 0700h, y el origen es el 0100h dentro del segmento de código. 3. Copie las siguientes instrucciones en orden mov ax,ffffh mov bx,ax mov dl,ah mov dh, 100 hlt 4. Luego compile y simule el programa utilizando el botón de la derecha Compile and Emulate. 5. Para este programa en particular se verá un error de compilación, por lo tanto no podrá ser simulado. Observe qué tipo de error es y repárelo sustituyendo en la línea de error el valor correcto. 6. Nuevamente compilemos y simulemos el programa y en este caso pasará directamente a la pantalla del simulador. 7. Observe la pantalla del simulador y la pantalla del programa fuente que se está simulando. 8. Observe los registros principales del microcomputador 8086. también se puede observar la pila o stack, la ALU, el registro de banderas. Dentro del menú View (extended Value Viewer) se pueden ver y cambiar los registros y los contenidos de memoria. 9. Corra el programa paso a paso (single step) y observe cómo cambian los registros. 10. ¿Cómo cambia el registro IP? El registro IP cambia de 2 en 2 11.

¿Con qué valor se carga CX y porqué éste no cambia? Por qué puede contener un valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits. y se carga con 00010001 12. ¿Cuántos bytes tiene la primera instrucción? ¿Cuántos bytes tiene la segunda instrucción? ¿Cuántos bytes en total tiene el programa? Puede guardar el programa si lo desea. 13. Abra un nuevo archivo y escriba ahora las siguientes instrucciones en el simulador: mov ah,'b' mov al,30h mov bx,ax mov [bx],33h mov [bx+2],33h 4 Prof: Melania Solís

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC

ARQUITECTURA DE MAQUINAS I

mov cx,[bx] hlt 14. Observe nuevamente como cambian los registros y las direcciones de memoria afectadas utilizando la ventana Extended Value Viewer. Anote los bytes de cada instrucción y sume en total el número de bytes que contiene el programa. Anote en una tabla como la siguiente los cambios ocurridos en los registros.

Instrucción Valores iniciales Mov ah,’b’ Mov al,30h Mov bx,ax Mov [bx],33h Mov [bx+2],33h Mov cx,[bx] Hlt

15.

IP 0 02 02 04 06 09 0D 0F

AX 0 0 0 30 30 30 30 30

BX 0 0 0 0 30 30 30 30

CX 11 11 11 11 11 11 11 11

[6230 ] 0 0 0 0 0 0 0 0

[6231 ] 0 0 0 0 0 0 0 0

[6232 ] 0 0 0 0 0 0 0 0

[6233] 0 0 0 0 0 0 0 0

Para cada instrucción diga el tipo de direccionamiento usado. - Mov ax, ffffh - Mov bx, ax - Mov dl, ah - Mov dh, 100 - hlt

16.

En los diferentes tipos de direccionamiento, también se dan con nombres de variables, éstas pueden ser de 8 o 16 bits. Una variable o un dato de 8 bits es un byte y una variable o dato de 16 bits se conoce como una palabra. En ensamblador la directiva db indica que el valor de esa variable es del byte que sigue a continuación y dw indica que el valor de esa variable es de la palabra que sigue a continuación. Por ejemplo, copie las siguientes instrucciones en el simulador. mov al,var2 mov ah,30h mov bx,var1 mov ch,var2 ret

17.

¿Cuál es la diferencia entre utilizar el modo de direccionamiento inmediato con un dato directamente o con una variable que contiene ese dato? 5 Prof: Melania Solís

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONESFEC

ARQUITECTURA DE MAQUINAS I

Cambia cx 18. Investigue las instrucciones hlt, ret y end. RET: Retorno de procedimiento. Hlt: terminar el programa. END: (etiqueta) Debe ser la última sentencia del código fuente. La etiqueta indica dónde debe comenzar la ejecución del programa. 19. Entregue un reporte de esta práctica de laboratorio una semana después de haberla realizado, conteste a todas las preguntas incluidas en la guía, añada conclusiones.

6 Prof: Melania Solís