Está en la página 1de 9

· demos experimentar fácilmente como lo son visualizadores LCD, luces de tráfico del sistema,

motores de paso, emulación de impresión, etc. Además de poder crear nuestros propios
dispositivos.

ObjetivoPrograma que se utilizara en la práctica.


; This example prints out
; "HELLO WORLD!"
; by writing directly to
; Video Memory.
#make_BIN#
; set segment register:
MOV AX, 0B800h
MOV DS, AX
; print "HELLO" using DS
; as segment:
MOV [52h], 'H'
MOV [54h], 'E'
MOV [56h], 'L'
MOV [58h], 'L'
MOV [5Ah], 'O'
; print "WORD!" using ES
; as segment (better since
; this way you won't loose
· .
Introducción al emu8086-parte1 Introducción a los microprocesadores.

Ejecutando el emu8086.

Para iniciar la práctica debemos ejecutar el lanzador del emu8086 que se ubica en nuestro escritorio,
la pantalla de inicio del software se muestra a continuación.

Seleccione en el menú la opción que dice “code examples” y seleccione el código que “hello world”.
Introducción al emu8086-parte1 Introducción a los microprocesadores.

Al seleccionar el código ejemplo “hola mundo” el software cargara las líneas de código para el
programa:

Para emular el programa, seleccione la opción “emulate” y se generaran dos ventanas que muestran
el código original más la emulación de los registros del microprocesador:
Introducción al emu8086-parte1 Introducción a los microprocesadores.

Seleccione en la opción “Run” para correr el código y observar el proceso de manejo de los registros
del microprocesador. Se genera el siguiente mensaje en pantalla:

Asignaciones:

1. Ejecute el lanzador del emu8086 dando doble clic en el icono y luego seleccione la opción
new, luego aparecerá un cuadro de dialogo como el siguiente:
Introducción al emu8086-parte1 Introducción a los microprocesadores.

2. Se le presentarán seis opciones, elija “com template”. Observará (apóyese en la Figura


anterior) una ventana con la clásica barra de menú (File, Edit, etc.) con algunos elementos
distintivos (Compile, Emulator, Math, etc.) así como una serie de botones que le permiten
abrir un nuevo archivo, compilar, emular y otras funciones útiles.

3. Digite el siguiente código:

4. Seleccione la opción “compile” para verificar si no hay algún error de programación. Se


generara la siguiente ventana:

5. Luego seleccione la opción “emulate” y verifique que hace el código para cada línea de
ejecución. Puede observar en la ventana del emulador el contenido de los registros, la
memoria y el programa desensamblado. Si tiene problemas para interpretar esta
información, por favor solicite asistencia por parte de su instructor.
Introducción al emu8086-parte1 Introducción a los microprocesadores.

6. Copie los datos almacenados en los registros antes de ejecutar el programa:

AX: 0000 BX: 0000 CX: 0013 DX: 0000

CS: 0700 DS: 0700 ES: 0000 SS: 0000

BP: 0000 IP: 0100 SP: FFFE

DI: 0000 SI: 0000

7. Ejecute el programa totalmente con la opción “Run” y tome nota de los datos resultantes.
Verifique si concuerdan con los datos que se digitaron en el programa.

AX: 0064 BX: 0041 CX: ABCD DX: 198C

CS: F400 DS: 0700 ES: 0700 SS: 0700

BP: 0000 IP: 0154 SP: FFFA

DI: 0000 SI: 0000

8. Cree un nuevo archivo, de tipo COM. Seleccione la opción “new” y marque la primera
opción del tipo de archivo “COM TEMPLATE”.
Introducción al emu8086-parte1 Introducción a los microprocesadores.

9. Emule el programa y antes de ejecutarlo anote en la TABLA 2 el contenido de las direcciones


que tienen desplazamiento 0112h y 0113h, así como el contenido de CX en la columna
Inicio. Más adelante se retomará este punto para comparar los cambios en los datos.

10. Corra paso a paso el programa hasta antes de ejecutar la quinta instrucción, tratando de
predecir las acciones que se realizarán, auxiliándose de los comentarios de cada instrucción,
si tiene problemas consulte con instructor.

11. Observe y anote en la TABLA 2 los resultados de su observación.

12. Ejecute la quinta instrucción, anote los resultados.

13. Ejecute paso a paso el resto de instrucciones, tomando nota de los resultados.

SEG (DS) OFFSET Inicio del Antes de la Después de Después de Después de


programa 5ta. la 5ta. la 6ta. la 7ma.
0112H 186; 12; 01 84; 61 88; 47; 01 88; 0F C3
0113H 8A; 13; 01 84; 61 88; 47; 01 88; 0F C3
Registro CX 0011 0011 0011 0011 4161
Tabla 2.

Análisis de resultados.

Programa 1: En el encabezado del programa ¿por qué se incluye la línea “org 100h”? Al introducir datos en los
registros del microprocesador se usan diferentes formatos (bases de numeración) ¿cuántos y cuáles son? La
sintaxis de la instrucción MOV define tres campos: instrucción, dato1 y dato2. Al moverse los datos ¿cuál es la
fuente y cual el destino? Al observar la tabla1 se nota que a la misma instrucción MOV se le asignan diferentes
códigos hexadecimales ¿a qué se debe esto? ¿Cuál es la función que cumple el registro IP dentro del PRIMER
PROGRAMA? En la columna OFFSET de la tabla1, éstos no se incrementan a una razón constante ¿por qué?

¿por qué se incluye la línea “org 100h”?


Se inicia con “org 100h” ya que es el arranque inicial que dará direccionamiento donde se
cargaran la memoria.
Los registros del microprocesador se usan diferentes formatos (bases de
numeración) ¿cuántos y cuáles son?
 Los números binarios deben tener el sufijo "B".
 Los números hexadecimales deben tener el sufijo "H" , y comenzar con un cero
cuando el primer dígito es una letra (A.. F).
 Octal (base 8) números deben tener el sufijo "O".

La sintaxis de la instrucción MOV define tres campos: instrucción, dato1 y dato2. Al moverse
los datos ¿cuál es la fuente y cual el destino?
MOV Destino, Fuente: Donde Destino es el lugar a donde se moverán los datos y fuente es el lugar
donde se encuentran dichos datos.
Los diferentes movimientos de datos permitidos para esta instrucción son:
 Destino: memoria. Fuente: acumulador
 Destino: acumulador. Fuente: memoria
 Destino: registro de segmento. Fuente: memoria/registro
 Destino: memoria/registro. Fuente: registro de segmento
 Destino: registro. Fuente: registro
 Destino: registro. Fuente: memoria
 Destino: memoria. Fuente: registro
 Destino: registro. Fuente: dato inmediato
 Destino: memoria. Fuente: dato inmediato

Al observar la tabla1 se nota que a la misma instrucción MOV se le asignan diferentes


códigos hexadecimales ¿a qué se debe esto?
El software tiene internamente 14 registros cada uno de 16 bits los primeros 4 son AX, BX,
CX y DX.
¿Cuál es la función que cumple el registro IP dentro del PRIMER PROGRAMA?
IP: Registro puntero de instrucción o contador de programa (PC). Contiene el desplazamiento
de la siguiente instrucción a ejecutar respecto al segmento de código en ejecución.
En la columna OFFSET de la tabla1, éstos no se incrementan a una razón constante ¿por qué?
Por la forma en la que IP lleva los conteos cambia gradualmente
Programa 2: Al comparar las dos primeras instrucciones ¿qué diferencias hay al ejecutarlas, siendo que las dos
son MOV?
La condición MOV agrupa dos fuentes de diferentes celdas pero luego está escrita de forma que
puede mover dos datos en una misma celda por decirlo transfiere dos datos en una función para
generar un operando y luego destinarlo como un acumulador.
En las últimas tres instrucciones se incluyeron corchetes (paréntesis cuadrados) en las instrucciones ¿Qué
diferencias observó en su ejecución respecto a las primeras dos instrucciones? ¿Por qué al ejecutar la séptima
instrucción los datos se almacenan en CX en ese orden específico?
Introducción al emu8086-parte1 Introducción a los microprocesadores.

Investigación complementaria.

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 desarrollara teniendo en mente las actividades futuras. Investigue:

¿Qué son los modos de direccionamiento?


En informática, los modos de direccionamiento son las diferentes maneras de especificar un operando
dentro de una instrucción en lenguaje ensamblador.

¿Cuántos y cuáles modos de direccionamiento tiene el microprocesador 8086?


El modo de direccionamiento inmediato: en el que el operando de datos es una parte de la
instrucción en sí es conocido como modo de direccionamiento inmediato.

Modo de direccionamiento directo: El modo de direccionamiento en el que la dirección efectiva


de la posición de memoria se escribe directamente en la instrucción.

Modo de direccionamiento indirecto: Este modo de direccionamiento permite que los datos que
deben abordarse en cualquier posición de memoria a través de una dirección de desplazamiento que
tuvo lugar en cualquiera de los siguientes registros: BP, BX, DI y SI.
Modo de direccionamiento Basado: En este modo de direccionamiento, la dirección de
desplazamiento del operando está dada por la suma de contenidos de los registros BX / BP y el
desplazamiento de 8 bits / 16 bits.
El modo de direccionamiento indexado: En este modo de direccionamiento, los operandos
compensados dirección se encuentra sumando el contenido de SI o registro DI y los desplazamientos
de 8 bits / 16 bits.

¿Qué modos de direccionamiento posee la instrucción MOV?

¿Qué diferencias hay entre las instrucciones XCHG ya la instrucción MOV?

También podría gustarte