Está en la página 1de 5

UNIVERSIDAD NACIONAL DE INGENIERIA Arquitectura de Máquinas I

UNIVERSIDAD NACIONAL DE INGENIERÍA


FACULTAD DE ELECTROTECNIA Y COMPUTACIÓN

Primer Laboratorio De Arquitectura

Integrantes:
● Victor Manuel Rocha Galo 2016-0670U
● Fanny Johanna Tellería Guerrero.

Docente:
Ing. Santiago Zambrana

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC


UNIVERSIDAD NACIONAL DE INGENIERIA Arquitectura de Máquinas I

GUIA DE LABORATORIO 1: INTRODUCCIÓN AL SIMULADOR EMU8086

OBJETIVOS
 Aprender a utilizar el simulador emu8086
 Conocer las bases para hacer un programa en ensamblador
 Conocer los principales registros del microprocesador 8086
 Conocer y usar 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 de 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 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),
la naturaleza de unas aplicaciones en las que se ven envueltos los
microprocesadores, hacen más aconsejables en algunas ocasiones el desarrollo
de los programas a partir de los lenguajes ensambladores.

Modo de operación del Microprocesador

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 de qué operación se trata y toma
de las direcciones siguientes los operandos necesarios para ejecutar la
instrucción. El microprocesador usa el registro IP como puntero para la lectura
de cada byte de la instrucción almacenada en memoria.

Instrucciones de pruebas y saltos

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]

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC


UNIVERSIDAD NACIONAL DE INGENIERIA Arquitectura de Máquinas I

El bit de signo [S]


Existen varios tipos de instrucciones que provocan saltos entre direcciones de
memoria. Una de ellas es la siguiente:

JMP mem: Salta a la dirección de memoria en mem.

Sobre el Lenguaje Ensamblador

Cuando se escriben programas en lenguaje ensamblador se debe usar, siempre


que sea posible, etiquetas para indicar la dirección hacia donde se hará un salto.
La etiqueta representa en realidad una dirección de memoria. Esta dirección es
aquélla en donde en donde el código de operación de la instrucción será
finalmente ensamblado. Cuando se programa directamente en lenguaje de
máquina, debe tenerse especial cuidado en la dirección que se le de cómo
argumento a una instrucción de salto.

Para incluir comentarios dentro del código ensamblador se debe anteponer a


dicho comentario ´´;´´ un punto y coma. 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.

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:

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

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC


UNIVERSIDAD NACIONAL DE INGENIERIA Arquitectura de Máquinas I

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. Las siguientes son un grupo de instrucciones que no llevan a cabo ninguna


tarea en especial, son únicamente demostrativas. Use el emulador 8086 para
escribir, ensamblar y correr paso a paso el programa. Antes de iniciar la
ejecución del programa, observe y anote el estado inicial de los
registros IP, AX, BX, CX, DX, DI, SI.

4. Copie las instrucciones que se muestran a continuación en el espacio


disponible para ello (; add your code here).

Código IP AX BX CX 0400H 0401H


Estado Inicial 0000 0000 0000 001A 05 08
MOV AH,10H 0100 0000 0000 001A 05 08
INC AH 0102 1000 0000 001A 05 08
MOV BH,AH 0104 1100 0000 001A 05 08
DEC BH 0106 1100 1100 001A 05 08
MOV AX,0400H 0108 1100 1000 001A 05 08
MOV [BX],33H 0108 1100 0400 001A 05 08
XCHG AX,CX 010E 1100 0400 001A 33 08
MOV CX,0805H 010F 001A 0400 1100 33 08
MOV [0400H],CX 0112 001A 0400 0805 33 08
MOV AL, [0401H] 0116 001A 0400 0805 05 08

5.Presione el botón Emulate y mostrará las siguientes pantallas.

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC


UNIVERSIDAD NACIONAL DE INGENIERIA Arquitectura de Máquinas I

5. Observe cuidadosamente y anote los cambios que ocurren cada vez que se
ejecuta una instrucción. Para observar la dirección de memoria 0400h, haga
clic en el botón View, extended value viewer e introduzca la dirección
0700:0400

6. Corra el programa paso a paso (single step) y observe cómo cambian los
registros.

7. ¿Cómo cambia el registro IP? El registro empieza en 0100 y después


cambia a 0102 y después a 0104 y después 0106 al correr en single step
el aumenta 2 en 2.

8. ¿Con qué valor se carga CX? Inicia con la carga 001A

9. ¿Cuántos bytes tiene la primera instrucción? = 2 bytes


¿Cuántos bytes tiene la segunda instrucción? = 2 bytes
¿Cuántos bytes en total tiene el programa? = 26 bytes

DEPARTAMENTO DE SISTEMAS DIGITALES Y TELECOMUNICACIONES-FEC