PDF Introduccion Al Emu8086 Facultad Estudios Tecnologicos Escuela Electronica Asignatura Microprocesadores - Compress
PDF Introduccion Al Emu8086 Facultad Estudios Tecnologicos Escuela Electronica Asignatura Microprocesadores - Compress
1 1
Utilizar el programa emulador EMU8086 y relacionarlo con los elementos básicos que
conforman el modelo de programación del microprocesador 8086.
Guía de laboratorio
Computadora PC con el programa EMU8086
1)
Ejecute el programa emulador de microprocesadores EMU8086,haciendo doble
clic en el icono del escritorio, Aparecerá una ventana como la Figura 1.
Figura 1: Ventana inicial del emu8086
Guía
1 2
3) Observará una ventana donde escribirá sus futuros programas, llamados en general
“código fuente”.
Figura 2
(apóyese en la Figura 3)
Se le presentarán seis opciones, elija “empty workspace”. Observará
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. En el
texto observará dos líneas de comando que son un encabezado necesario para crear
un archivo tipo COM.
Figura 3
Guía
1 3
También podrá ver, en la parte central, tres columnas en las que se detalla el
contenido de los registros del 8086, el contenido de la memoria y el programa
desensamblado. Abajo podrá acceder a la pantalla de usuario (user screen), el
código fuente (actual source), la Unidad Aritmética y Lógica (ALU), la Pila (stack) y el
registro de banderas (flags) o estados.
6) Cierre la ventana del emulador, pero no cierre la ventana del código
Guía
1 4
fuente.
NOTA: las direcciones de memoria están escritas en el formato de segmento y desplazamiento”
Figura 4
PRIMER PROGRAMA
INICIO #MAKE_COM# ORG
100h
AX = 100
BX = ‘A’
4. mov AX, 100; carga AX con 100
CX = 0ABCDh 5. mov BX, ‘A’; carga BX con carácter A
DX = 6540 6. mov CX, 0ABCDh; carga CX con ABCDh
7.mov DX, 6540 ; carga DX, con 6540
ret ; termina el programa
F IN
Guía
1 5
11) 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. Si tiene
problemas para interpretar esta información, por favor solicite asistencia por
parte de su instructor.
13) Ejecute el programa totalmente (RUN) y anote los datos resultantes. Verifique si
concuerdan con los datos que usted esperaba.
AX: H 00 BX: H 00 CX: H AB DX: H 19
L 64 L 41 L CD L 8C
CS: DS: ES: SS:
F400 0700 0700 0700
BP: IP: SP:
0000 0154 FFFA
DI: SI:
0000 0000
Guía
1 7
15) Ejecute solo la primera instrucción (Single step). Observe los cambios (sobre
todo en CS e IP) ¿se cargó el dato esperado en AH?
17) 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.
19) Cierre la ventana del emulador, pero no cierre la ventana del código fuente.
20) Cree un archivo nuevo, tipo COM y escriba el código llamado SEGUNDO
PROGRAMA, después de su respectivo encabezado, no olvide los tabuladores.
SEGUNDO PROGRAMA
NOTA: Observe que la instrucción MOV se ha escrito de diferentes formas.
INICIO #MAKE_COM#
ORG 100h
DX = 112h
BX = DX
MOV DX, 0 112h ; Carga dato in m ediato en DX
MOV BX, DX ; Copia D X en BX , movimiento e ntre
AL = ‘A’
AH = 61h
;registros
M [BX] = AH MOV AL , 'A' ; Almacena carácter en
AL MO V AH, 61 h ; Guarda dato e n
M [BX +1] = AL
AH
CX = M [BX]] MOV [BX], AH ; Almacena en dirección in dic ada por
; DS:BX, indirecto
F IN MOV [BX+1], A L ; Almacena dato relativo a base, DS : BX+ 1
MOV CX, [BX ] ; Copia el dato de la dirección en CX
;registro, indirecto
RET ; fin del programa
21) 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. 22) 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.
25) Ejecute paso a paso el resto de instrucciones, tomando nota de los resultados.
28) Cierre la ventana del emulador, pero no cierre la ventana del código fuente.
DIRECCIONES LENGUAJE DE M QUI LENGUAJE ENSAMBLADOR
SEGM OFFSET CAMPOS LINEA
0700 0100 BA 12 01 MOV DX, 0112h
0700 0103 8B DA MOV BX, DX
0700 0105 B0 41 MOV AL, ‘A’
0700 0107 B4 61 MOV AH, 61h
0700 0109 88 27 MOV [BX], AH
0700 010B 88 47 01 MOV [BX+1], AL
0700 010E 8B 0F MOV CX, BX
0700 0110 C3 RET
TABLA 3
29) Escriba un nuevo programa .COM y digite el código llamado TERCER PROGRAMA.
30) Emule y ejecute el programa (run) y note la información que se presenta en la
pantalla de usuario, debe observar un carácter ‘A’ con un color para el fondo y para el
carácter. Anote esa información.
Guía
1 10
TERCER PROGRAMA
#make_com#
INICIO
Org 100h
AX = 0B 800h
DS = AX MOV AX, 0B800h
MOV DS, AX
RET
F IN
Guía
1 11
Influyo en el cambio de color de fondo de “violeta” a “azul”, y la letra volvió a ser blanca.
35) Pruebe a hacer algunos cambios en CH, CL y BX, anote sus observaciones:
a) Primer programa.
-Decimal
-Carácter
-Hexadecimal
-Binario
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?
Guía
1 13
b) Segundo programa.
Al comparar las dos primeras instrucciones ¿qué diferencias hay al ejecutarlas,
siendo que las dos son MOV?
¿Por qué al ejecutar la séptima instrucción los datos se almacenan en CX en ese orden
específico?
Se hizo uso de la memoria de BX, para almacenarlos y luego el [BX+1] que
almacenó el dato relativo los hizo invertirse los valores
c) Tercer programa.
Al ejecutar el programa, a medida que hacía las modificaciones ¿qué efecto
concreto logra el cambio en el registro BX?
Guía
1 14
Investigue:
El resto de los modos sirve para localizar un operando en memoria. Para facilitar la
explicación de estos modos, se pueden resumir de la siguiente manera:
Deben sumarse cuatro
cantidades: dirección
de segmento
dirección base una
cantidad índice un
desplazamiento.
Guía
1 15
ninguna, pueden utilizarse para calcular la dirección real, pero no pueden sumarsedos
bases o dos índices. Los registros restantes (AX, CX, DX y SP) no pueden utilizarse para
direccionamiento indirecto. Además del segmento, base e índice, se usa un
desplazamiento de 16 bits, 8 bits o 0 bits (sin desplazamiento). Ésta es una cantidad
estática que se fija durante el ensamblado. Todo esto genera los 24 modos de
direccionamiento a memoria que se ven a continuación:
Directo:
Indirecto:
5) [BX], Ejemplo: MOV AX, [BX] 6) [DI], 7) [SI].
Basado:
8) [BX+desp8], Ejemplo: MOV AX, [BX+30h]
9) [BP+desp8],10) [BX+desp16], 11)
[BP+desp16].
Indexado:
12) [SI+desp8],
13) [DI+desp8],
14) [SI+desp16], Ejemplo: MOV AX, [SI+4000h]
15) [DI+desp16]. Basado-indexado:
16) [BX+SI],
17) [BX+DI], Ejemplo: MOV AX, [BX+DI] 18) [BP+SI],
19) [BP+DI].
Esta instrucción ocupa tres bytes, mientras que MOV AL, [ SI] ocupa dos, porque
nonecesita el desplazamiento.
MOV:
MOV realiza la transferencia de datos del operando de origen al destino. Como ya
hemos visto en la parte de los modos de direccionamiento, MOV admite todos los
tipos de direccionamiento. Ambos operandos deben ser del mismo tamaño y no
pueden estar ambos en memoria.
MOV reg, reg ; reg es cualquier registro.
MOV mem, reg ; mem indica una posición de memoria
MOV reg, mem
MOV mem, dato; dato es una constante
MOV reg, dato
MOV seg-reg, mem ; seg-reg es un registro de segmento
MOV seg-reg, reg
MOV mem, seg-reg
MOV reg, seg-reg XCHG:
XCHG realiza el intercambio entre los valores de los operandos. Puede tener
operando en registros y en memoria:
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programación e interfaces, Prentice Hall, México DF, 19953 Biblioteca UDB
001.6404 B847 1997