Post on 13-Apr-2017
Pontificia universidad católica del ecuador sede Ibarra
Nombre: Carlos Brusil
EMULADOR EMU-8086 (DOWNLOAD)
El Emulador EMU8086 es el programa que se utiliza en el curso de Estructura de
computadores II que imparte la carrera Ingeniería Informática de la FNI. Se ha elegido
este emulador porque posee una interfaz de usuario muy amistosa que permite
familiarizarse con los fundamentos de la programación en lenguaje
ensamblador(assembler) de forma muy intuitiva, aparte de eso brinda una serie de recursos
para ejecutar y depurar los programas. También tiene algunas desventajas como el de no
soportar algunas de las interrupciones más interesantes que posee el sistema operativo y
tampoco puede acceder a los puertos físicos (reales), sino que los emula usando otros
programas que ya están incluidos en su respectiva carpeta.
Pautas
Para iniciar se debe ejecutar el archivos EMU886.exe, que se encuentra en la carpeta del
mismo nombre, en el directorio raíz; seguramente en la computadora donde corra el
programa tendrá otras alternativas para activar el programa, como un acceso directo en el
escritorio o en el menú de programas del sistema operativo.Si está ejecutando la versión
4.05 del EMU8086 observará primero la pantalla deBienvenida (welcome), similar a la que
se muestra en la Figura 1
Figura 1. Pantalla de bienvenida del emulador EMU8086.
Se presentan cuatro diferentes opciones para elegir:
• New: Le permite escribir un nuevo código en lenguaje ensamblador (al queLlamaremos
“Código Fuente” y tendrá extensión .ASM)
• Code examples: Le permite acceder a una serie de programas ejemplos quepueden
ayudarle a comprender funciones más complejas.
• Quick star tutor : activa un conjunto de documentos de ayuda, se recomiendarevisarlos
frecuentemente en caso de dudas.
• Recent file: Le muestra los últimos archivos que se trabajaron en la máquina.Para
continuar este primer contacto con el emulador seleccione New. Observará una nueva caja
de dialogo “choose code template”,como se muestra en la Figura2
Figura 2. Caja de dialogo para seleccionar el tipo plantilla (template).
En ella se le presentan seis opciones, cuatro que le permiten usar plantillas predefinidas con
algunos de los tipo de archivo que se pueden crear en lenguaje ensamblador: COM
template, EXE template, BIN template y BOOT template (cada uno le permite diferentes
características que se abordaran a su debido tiempo en el curso). Dos que le permiten usar
un espacio vacío “empty workspace” (sin una plantilla) o activar el emulador mismo.
Selecciones la opción del espacio vacío. Observará la ventana de edición o mejor dicho el
Entorno de Desarrollo Integrado (Integrated Development Environme IDE), como se
muestra en la Figura 3, donde escribirá sus archivos fuentes en lenguaje ensamblador, por
favor lo confunda con el lenguaje de máquina.Podrá ver una barra de menú de Windows
con sus opciones file, edit, etc. pero también vera unas opciones poco usuales como
assembler, emulator, etc. propias del emulador. También vera una serie de botones que le
permitirán crear un nuevo archivo (new), abrir un ejemplo (examples), compilar un archivo
fuente (compile), emular un archivo ejecutable (emulate) y otras opciones que ira
descubriendo a medida que se familiarice con el programa.
Ahora procedemos con la instalacion
Sección de code Examples programas ejemplo.
a)
b)
c)
1.- Código hola mundo en ensamblador
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
org 100h
; add your code here
.model small
.stack
.data
saludo db "Hola mundo!!!", "$"
.code
main proc ;Inicia proceso
mov ax,seg saludo ;hmm ¿seg?
mov ds,ax ;ds = ax = saludo
mov ah,09 ;Function(print string)
lea dx,saludo ;DX = String terminated by "$"
int 21h ;Interruptions DOS Functions
;mensaje en pantalla
mov ax,4c00h ;Function (Quit with exit code (EXIT))
int 21h ;Interruption DOS Functions
main endp ;Termina proceso
end main
ret
Aquí tenemos una captura de pantalla
2.- Compilar un programa en EMU8086 que indique lo siguiente: Nombre completo del
estudiante, Universidad, Fecha y materia.
Código:
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
org 100h
; add your code here
.model small
.stack
.data
saludo db "Calos Andres Brusil Andrango, Pontificia Universidad Catolica de Ecuador
Sede Ibarra, 03/05/2016, Compiladores!!!", "$"
.code
main proc ;Inicia proceso
mov ax,seg saludo ;hmm ¿seg?
mov ds,ax ;ds = ax = saludo
mov ah,09 ;Function(print string)
lea dx,saludo ;DX = String terminated by "$"
int 21h ;Interruptions DOS Functions
;mensaje en pantalla
mov ax,4c00h ;Function (Quit with exit code (EXIT))
int 21h ;Interruption DOS Functions
main endp ;Termina proceso
end main
ret
3.- Programa que permita comparar dos números del 0 al 9 en ensamblador
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
org 100h
; add your code here
.model small
.stack
.data
var1 db ?
var2 db ?
msg1 db ' El primero es mayor: $'
msg2 db ' El primero es menor: $'
msg3 db ' Son iguales++$'
msg4 db ' Primer valor: $'
msg5 db ' Segundo valor: $'
.code
.startup
mov ah,00h
mov al,03h
int 10h
mov ah,02h
mov dx,0510h
mov bh,0
int 10h
mov ah,09h
lea dx,msg4
int 21h
mov ah,07h
int 21h
mov ah, 02h
mov dl,al
int 21h
mov var1,al
mov ah,09h
lea dx,msg5
int 21h
mov ah,07h
int 21h
mov ah,02h
mov dl,al
int 21h
mov var2,al
cmp var1,al
ja mayor
jb menor
je igual
mayor:
mov ah,09h
lea dx,msg1
int 21h
jmp salir
menor:
mov ah,09h
lea dx,msg2
int 21h
jmp salir
igual:
mov ah,09h
lea dx,msg3
int 21h
jmp salir
salir:
.exit
end
ret
Aquí tenemos una pequeña captura de pantalla
4.- Programa en emulador que me permita sumar 10 números
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
org 100h
; add your code here
name "calc-sum"
org 100h
; directive make tiny com file.
; calculate the sum of elements in vector,
; store result in m and print it in binary code.
; number of elements:
mov cx, 10
; al will store the sum:
mov al, 0
; bx is an index:
mov bx, 0
; sum elements:
next: add al, vector[bx]
; next byte:
inc bx
; loop until cx=0:
loop next
; store result in m:
mov m, al
; print result in binary:
mov bl, m
mov cx, 8 print:
mov ah, 2 ; print function.
mov dl, '0' test bl, 10000000b ; test first bit.
jz zero mov dl, '1'
zero: int 21h
shl bl, 1
loop print
; print binary suffix:
mov dl, 'b'
int 21h
mov dl, 0ah ; new line.
int 21h
mov dl, 0dh ; carrige return.
int 21h
; print result in decimal:
mov al, m
call print_al
; wait for any key press:
mov ah, 0
int 16h
ret
; variables:
vector db 5, 4, 5, 2, 1, 9, 1, 2, 5, 7
ret