Está en la página 1de 13

Objetivo General

 Utilizar el programa emulador EMU8086 y relacionarlo con los elementos


básicos que conforman el modelo de programación del microprocesador
8086.

Objetivos específicos

 Identificar los principales elementos que conforman el ambiente de


programación del software EMU8086.
 Identificar los registros del modelo de programación del 8086.
 Observar la relación que existe entre los lenguajes de ensamblador y
máquina.
 Reconocer de forma intuitiva los modos de direccionamiento básicos del
micro 8086.
 Imprimir un carácter en la pantalla de usuario, modificando sus
parámetros.
 Utilizar el emulador en la creación y ejecución un archivo tipo COM.

Materiales y equipos

 Guía de laboratorio
 Computadora PC con el programa EMU8086.
Primer Programa

1. Analice el siguiente código fuente (llamado PRIMER PROGRAMA),


ayudándose de los comentarios y del diagrama de flujo que lo
acompaña. Intente predecir cada cambio que tendrán los datos
hexadecimales en los registros del microprocesador.

2. Cree un archivo fuente y llámelo guia01.asm copie las mismas


instrucciones del programa que previamente analizó. Salve el
archivo fuente.

3. Usando el botón respectivo compile el código fuente, note que el


programa le informa que creará un archivo con extensión COM.

4. ¿Qué nombre la asigna el sistema al archivo.COM?

Le asigna el mismo nombre del archivo fuente, Guia01.asm 


Guia01.com

5. Si no se dan errores de compilación proceda a emular el programa.


Analice la información que se le presenta, puede observar una
copia del código fuente en el que se marca la línea de instrucción
que será ejecutada. También puede ver en la ventana del emulador
el contenido de los registros, la memoria y el programa
desensamblado.
6. Copie los datos almacenados en los registros antes de ejecutar 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    

7. Ejecute el programa totalmente (RUN) y anote los datos resultantes.


Verifique si concuerdan con los datos que usted esperaba.

AX: 0000 BX: 0000 CX: 0014 DX: 0000


CS: 0700 DS: 0700 ES: 0700 SS: 0700
BP: 0000 IP: 0100 SP: FFFE  
DI: 0000 SI: 0000    

8. Cargue nuevamente el programa, observe el contenido de los


registros, sobre todo el contenido de CS e IP. Analice sus
observaciones comparándola con la que aparece en la TABLA 1. Si
tiene dudas por favor solicitar asistencia de su instructor.

El registro IP cambia hacia la dirección de memoria en donde se


ejecutara la siguiente instrucción y el registro de segmento de código
CS, contiene la dirección de las instrucciones del programa.

9. Ejecute solo la primera instrucción (Single step). Observe los


cambios (sobre todo en CS e IP) ¿se cargó el dato esperado en AH?
El registro CS mantiene la dirección de las instrucciones del programa mientras
que el Registro puntero de instrucción o contador de programa, apunta hacia la
dirección de memoria donde empezara la siguiente instrucción.
10. Interprete la información de la TABLA 1 respecto de sus resultados.

11. Continúe ejecutando paso a paso el programa hasta la instrucción


RET, al mismo tiempo llene los espacios vacíos de la TABLA 1. Si
tiene dudas en esta actividad, por favor solicite la asistencia de su
instructor.

LENGUAJE DE LENGUAJE
DIRECCIONES
MAQUINA ENSAMBLADOR
SEFM(C OFFSE
CAMPOS LINEA
S) T
0700 0100 B4 7A   mov AH, 7Ah
 0700 0101   B3  63   mov BL, 99
mov CL,
 0700  0104  B1  CF   11001111b
 0700  0106 B8  64   00 mov AX, 100
 0700  0109 BB  41  00  mov BX, 'A'
 0700  010C B9  CD  AB  mov CX, 0ABCDh
 0700  010F BA  8C  19  mov DX, 6540
 0700  0112 C3      RET
NOTA: A partir de este punto el programa ejecuta un
procedimiento predeterminado llamado interrupción.
0700 0000  CD  20   INT 20H
F400 0150  FF FF     BIOS DI
SEGUNDO PROGRAMA

NOTA: Observe que la instrucción MOV se ha escrito de diferentes


formas.

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

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

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

Inicio
SEG del ANTES DESPUE DESPUE DESPUE
OFFSET
(DS) progra 5a S DE 5a S DE 6a S DE 7a
ma
 0700 0112h  90  90  61  61 61 
 0700 0113h  90  90  90 41   41
REGISTRO CX 00 12  00 12  00 12 00 12  41 61

4. Ejecute paso a paso el programa, anotando en la TABLA 3 el valor


de cada dato que se le solicite, tomando como referencia el
procedimiento con el que completó la TABLA 1.
5. Cierre la ventana del emulador, pero no cierre la ventana del código
fuente.

LENGUAJE DE LENGUAJE
DIRECCIONES
MAQUINA ENSAMBLADOR
SEFM(C OFFSE
CAMPOS LINEA
S) T
0700 0103 8B DA MOV DX, 0112h
0700 0105 B0 41 MOV BX, DX
0700 0107 B4 61 MOV AL,’A’
0700 07109 88 27 MOV AH,61h
0700 10B 88 47 01 MOV [BX], AH
0700 10E 8B 0F MOV [BX+1], AL
0700 110 C3 MOV CX ,[BX]
0700 0000 CD 20 RET

TERCER PROGRAMA

1. Modifique el programa sustituyendo el dato que se almacena en BX


(15Eh) por
10Eh y corra el programa.

2. Observe y describa como afectó el cambio al funcionamiento del


programa.
En este caso en el registro BX se guarda el dato 010E en lugar del 015E y se
remplaza el dato de CX porque BX está en otro lugar de memoria que es 15EH,
y esto produce un cambio de posición en la impresión en pantalla.

3. Modifique ahora el dato almacenado en CH, cambiándolo por


11010000b y observe su efecto, anote sus observaciones.
En el registro CH se guarda el valor de 11010000b que en hexadecimal es D0,
este registro hace referencia tal como color de fondo y color de letra, en este
caso este nuevo numerohace referencia a un color diferente de la letra que es
el negro.

4. Vuelva a cambiar CH, ahora por 10011110b, observe y describa el


cambio.
En este caso se cambiaron ambos grupos de bits, tanto el que hace referencia
al color de fondo y color de letra, siendo el fondo azul y la letra amarilla.

5. Pruebe a hacer algunos cambios en CH, CL y BX, anote sus


observaciones:

Se observa que se pueden cambiar las propiedades del texto, manipulando los
registros en modo texto.

6. Notifique a su instructor que ha terminado la práctica.


Análisis de resultados

a) Primer programa.

En el encabezado del programa ¿por qué se incluye la línea “org 100h”?

La directiva ORG 100H, es la directiva que establece el contador de posición


indica al ensamblador que continúe el ensamblado a partir de la dirección dada
por el argumento, en este caso 100H.

Al introducir datos en los registros del microprocesador se usan


diferentes formatos (bases de numeración) ¿cuántos y cuáles son?
Son 4: binario, octal, decimal, hexadecimal

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?
Dato 2 es el origen y dato1 es 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?

Esto se debe a que MOV puede trabajar con cualquier tipo de dato y hay más
de unaforma de ingresar los datos a memoria

¿Cuál es la función que cumple el registro IP dentro del PRIMER


PROGRAMA?
Funciona como un contador que va redireccionando en donde empezara
la siguiente instrucción.

En la columna OFFSET de la tabla1, éstos no se incrementan a una razón


constante ¿por qué?
Porque los registros y datos son variados y de diferentes tamaños y dirección.

b) Segundo programa.
Al comparar las dos primeras instrucciones ¿qué diferencias hay al
ejecutarlas, siendo que las dos son MOV?
La primera almacena un numero en un registro Dx y el segundo copia el
contenido del registro dx al otro registro Bx.
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?
Estas instrucciones se copia la información de la dirección del registro
mediante direccionamiento indirecto.

¿Por qué al ejecutar la séptima instrucción los datos se almacenan en CX


en ese orden específico?

Porque emu8086, trabajo con el formato Little que hace almacenar primero los
bit menos significativos y luego los mas significativos

c) Tercer programa.

Al ejecutar el programa, a medida que hacía las modificaciones ¿qué


efecto concreto logra el cambio en el registro BX?
El registro BX referenciaba la posición donde se imprimirá el texto y cualquier
cambio cambiaba la posición.
Al modificar CH ¿qué bits específicos se modificaron para lograr cambios
en el fondo y color de los caracteres?
Los primeros 4 bits establecían el color de fondoy los cuatro últimos el color de
la letra.

¿Qué son los modos de direccionamiento?


El modo de direccionamiento especifica la forma de interpretar la información
contenida en cada campo de operando para localizar, en base a esta
información, el operando.

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


8086?
Estos procesadores tienen 27 modos de direccionamiento o reglas para
localizar un operando de una instrucción.

Direccionamiento de registro

El direccionamiento de registro transfiere una copia de un byte o palabra del


registro de origen, o el contenido de una posición de memoria al registro de
destino o posición de memoria. (Ejemplo: la instrucción MOV CX,DX copia
el contenido del tamaño de una palabra del registro DX al registro CX.)

Direccionamiento inmediato

Cuando el operando origen es una constante, este modo de direccionamiento


transfiere el origen (datos inmediatos tipo byte o palabra) al registro o posición
de memoria de destino. (Ejemplo: la instrucción MOV AL,22H copia el número
22H del tamaño de un byte al registro AL.) En los microprocesadores 80386 y
superiores puede transferirse una doble palabra de datos inmediatos hacia un
registro o una posición de memoria. (Ejemplo: la instrucción MOV EBX,
12345678H copia el número 12345678H del tamaño de una doble palabra al
registro EBX de 32 bits.)

Direccionamiento directo

Este modo de direccionamiento mueve un byte o palabra entre una posición de


memoria y un registro. El conjunto de instrucciones no soporta una
transferencia de memoria a memoria, excepto con la instrucción MOVS.
(Ejemplo: la instrucción MOV CX,LISTA copia el contenido del tamaño de una
palabra de la posición de memoria LISTA al registro CX.)

Direccionamiento de registro indirecto

Este modo de direccionamiento transfiere un byte o una palabra entre un


registro y una posición de memoria direccionados por un registro índice o base.
Los registros índice y base son BP, BX, DI y SI. (Ejemplo: la instrucción MOV
AX,[BX] copia los datos del tamaño de una palabra desde la dirección de
desplazamiento del segmento de datos indizado por BX, hacia el registro AX.)
Direccionamiento de base más índice

Este modo de direccionamiento transfiere un byte o una palabra entre un


registro y la posición de memoria direccionada por un registro base (BP o BX)
más un registro índice (DI o SI). (Ejemplo: la instrucción MOV [BX+DI],CL copia
el contenido del tamaño de un byte del registro CL en la posición de memoria
del segmento de datos direccionada por BX más DL.)

Direccionamiento de registro relativo

Este modo de direccionamiento mueve un byte o una palabra entre un registro


y la posición de memoria direccionada por un registro índice o base más un
desplazamiento. (Ejemplo: MOV AX,[BX+4] o MOV AX,ARRAY[BX]. La primera
instrucción carga AX en base a la dirección del segmento de datos formada por
BX más 4. La segunda instrucción carga AX en base a la posición de memoria
del segmento de datos en ARRAY más el contenido de BX.)

Direccionamiento de base relativa más índice

Este modo de direccionamiento transfiere un byte o una palabra entre un


registro y la posición de memoria direccionada por un registro base y un
registro índice más un desplazamiento. (Ejemplo: MOV AX, ARRAY[BX+DI] o
MOV AX,[BX+DI+4]. Estas instrucciones cargan AX en base a la posición de
memoria de un segmento de datos. La primera instrucción utiliza una dirección
formada mediante la suma de ARRAY, BX y DI, y la segunda mediante la suma
de BX, DI y 4.)

Direccionamiento de índice escalado

Este modo de direccionamiento sólo está disponible en los microprocesadores


del 80386 al Pentium 4. El segundo registro de un par de registros se modifica
mediante el factor de escala de 2×, 4× u 8× para generar la dirección de
memoria del operando. (Ejemplo: una instrucción MOV EDX,[EAX+4*EBX]
carga EDX en base a la posición de memoria del segmento de datos
direccionada por EAX más cuatro veces EBX.) El uso de una escala permite el
acceso a los datos de un arreglo de memoria de tipo palabra (2×), doble
palabra (4×) o palabra cuádruple (8×). También existe un factor de escala de
1×, pero por lo general es implícito y no aparece explícitamente en la
instrucción. La instrucción MOV AL,[EBX+ECX] es un ejemplo en el que el
factor de escala es uno. Esta instrucción puede escribirse de manera alterna
como MOV AL,[EBX+1*ECX]. Otro ejemplo es la instrucción MOV AL,[2*EBX],
que utiliza sólo un registro escalado para direccionar memoria.

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

La instrucción MOV, admite todos los tipos de direccionamiento, ambos


operando deben ser del mismo tamaño y no pueden estar ambos en memoria

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


MOV?

La diferencia radica XCHG intercambia el contenido de los operando de origen


y destino, ya que no pueden utilizarse registros de segmentos cómo
operandos. Cuenta con una serie de indicadores (OF DF IF TF SF ZF AF PF
CF) y una sintaxis en: XCHG destino-origen.

La instrucción MOV transfiere los datos de longitud byte o palabra del operando
origen al operando destino. Pueden ser operando origen y operando destino
cualquier registro o posición de memoria direccionada de las formas ya viste,
con la única condición que origen y destino tengan la misma dimensión.

También podría gustarte