Está en la página 1de 5

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC

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

La instrucción MOV no modifica el registro de banderas

1
Prof: Melania Solís
DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC

ARQUITECTURA DE MAQUINAS I
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 [Z]


El bit de acarreo y préstamo [C]
El bit de paridad [P]
El bit de desborde [O]
El bit de signo [S]

PROCEDIMIENTO

1. Corra el simulador emu8086 haciendo doble clic en el ícono

2. En la pantalla inicial del simulador cuando escogemos new, aparecerá este


encabezado:

ORG 100h
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.
2
Prof: Melania Solís
DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC

ARQUITECTURA DE MAQUINAS I
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.

Error corregido:

3
Prof: Melania Solís
DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC

ARQUITECTURA DE MAQUINAS I
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?

AX: H=00 L=00  IP=0100


AX: H=FF L=FF  IP=0103
AX: H=FF L=FF & BX: H=FF L=FF IP=0105
AX: H=FF L=FF & BX: H=FF L=FF & DL=FF  IP=0107
AX: H=FF L=FF & BX: H=FF L=FF & DX: DH=64 DL=FF  IP=0109

11. ¿Con qué valor se carga CX y porqué éste no cambia?

CX: CH=00 CL=0B


No cambia porque no se le está dando ninguna instrucción.

12. ¿Cuántos bytes tiene la primera instrucción? Tiene 3 bytes ¿Cuántos bytes
tiene la segunda instrucción? 2 byte ¿Cuántos bytes en total tiene el
programa? En total tiene 10 bytes 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
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.

La primera instrucción= 2 bytes


Segunda instrucción= 2 bytes
Tercera instrucción= 2 bytes
Cuarta instrucción = 3 bytes
Quinta instrucción= 4 bytes
Sexta instrucción= 2 bytes
Ultima instrucción= 1 bytes
Total de bytes = 16 bytes

4
Prof: Melania Solís
DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC

ARQUITECTURA DE MAQUINAS I

15. Anote en una tabla como la siguiente los cambios ocurridos en los
registros.

Instrucción IP AX BX CX [6230] [6231] [6232] [6233]


Valores iniciales
Mov ah,’b’
Mov al,30h
Mov bx,ax
Mov [bx],33h
Mov [bx+2],33h
Mov cx,[bx]
hlt

16. Para cada instrucción diga el tipo de direccionamiento usado.


17. 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

var1 dw 3354h
var2 db 77h

18. ¿Cuál es la diferencia entre utilizar el modo de direccionamiento inmediato


con un dato directamente o con una variable que contiene ese dato?
19. Investigue las instrucciones hlt, ret y end.
20. 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.

5
Prof: Melania Solís

También podría gustarte