Emu8086 es un emulador del microprocesador 8086 (Intel o AMD compatible) con assembler integrado. A diferencia del entorno de programación en assembler utilizado anteriormente en la cátedra (MASM), este entorno corre sobre Windows y cuenta con una interfaz gráfica muy amigable e intuitiva que facilita el aprendizaje el lenguaje de programación en assembler.
El emulador 8086 fue el primer que se utilizó para impartir un curso de microprocesadores por la universidad de Don Bosco; Este emulador posee una interfaz de usuario muy amistosa que permite familiarizarse con los fundamentos de la programación en lenguaje ensamblador de forma muy intuitiva, aparte de eso brinda una serie de recursos para ejecutar y depurar los programas
• Fácil de manipular
• Interfaz amigable con el usuario.
• Barras de herramientas que permiten realizar programas más fácilmente.
• No soportar algunas de las interrupciones más interesantes que posee el sistema operativo.
• Tampoco puede acceder a los puertos físicos (reales), sino que los emula usando otros programas.
Se muestra a continuación una tabla comparativa con las diferencias entre el entorno de programación en assembler utilizado anteriormente en la cátedra (MASM 6.11) y el nuevo emu8086:
Es donde se escribirán los archivos fuentes en lenguaje ensamblador,• Se puede 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 se ve una serie de botones que le permitirán crear un nuevo archivo (new), abrir un archivo que ya existe (open), abrir un ejemplo (examples), compilar un archivo fuente (compile), emular un archivo ejecutable (emulate) y otras opciones que ir descubriendo a medida que se familiarice con el programa.
Al momento de dar compile Mientras se abre una ventana llamada “assembler status” que le informa sobre los resultados del proceso. Si el resultado es exitoso observará un mensaje como el de la figura en caso contrario se muestran los errores generados.
• File, permite administrar (cargar o salvar) los archivos que va creando o ejecutando
• Math, da acceso a una calculadora y un convertidor de basas de numeración.
• Debug, provee herramientas para depurar programas.
• View, permite abrir otras ventanas que pueden ser de mucha ayuda al ejecutar o depurar programas.
• External, permite ejecutar el programa con otras herramientas diferentes del EMU8086.
• Virtual devices, activa los dispositivos virtuales con que cuenta el programa, dado que se trata de un emulador no se tiene acceso a los puertos físicos de la computadora, por lo que estos son simulados.
• Virtual drive, da opciones para administrar las unidades virtuales de almacenamiento (hdd y fdd virtuales).
Una es la ventana donde se crea el código y la otra ventana es la que aparece al momento de compilar y ejecutar el código
La CPU x86 tiene 14 registros internos y básicos. Algunos son realmente de 32 bits pero por ahora se utilizará el modo real que es compatible con el procesador 8086 (igualmente accesibles a la parte alta de éstos registros, inclusive en el modo real). Los registros son los siguientes (estos registros son de 16 bits nombrados de la siguiente manera, a excepción del registro de banderas).
• AX: Acumulador (AL:AH)
• BX: Registro base (BL:BH)
• CX: Registro contador (CL:CH)
• DX: Registro de datos (DL:DH)
• DS: Registro del segmento de datos
• ES: Registro del segmento extra
• SS: Registro del segmento de pila
• CS: Registro del segmento de código
• BP: Registro de apuntadores base
• SI: Registro índice fuente
• DI: Registro índice destino
• SP: Registro apuntador de la pila
• IP: Registro apuntador de la siguiente instrucción
• F: Registro de banderas (8 bits)
La parte baja del registro AX se llama AL y la parte alta AH. La parte baja del registro BX se llama BL y la parte alta BH, y también ocurre lo mismo con el registro CX y DX.
• NV (Apagado): No hay desbordamiento
• OV (Encendido): Si lo hay
• UP: Hacia adelante
• DN: Hacia atras
• DI: Desactivadas
• EI: Activadas
• PL: Positivo
• NG: Negativo
• NZ: No es cero
• ZR: Si lo es
• NA: No hay acarreo auxiliar
• AC: Hay acarreo auxiliar
• PO: Impar
• PE: Paridad par
• NC: No hay acarreo
• CY: Si lo hay
Dado que es necesario transferir datos, existen los siguientes tipos de direccionamiento:
• Valor de un registro Ejemplo: MOV AX, DX
• Constante Ejemplo: MOV BX, 1AB
• Valor apuntado por una constante Ejemplo: MOV AX, [1000]
• Apuntado por un registro de segmento y uno de offset (Solo puede ser BX, BP, DI o SI) Ejemplo: MOV CX, ES:[DI]
• Apuntado por DS y la suma de BX con una constante o apuntado por SS y la suma de BP con una constante Ejemplo: MOV DX, DS:[BP+1000]
• Apuntado por DS y la suma de DI o SI con una constante Ejemplo: MOV BX, DS:[SI+6F9]
• Apuntado por DS y la suma de BX y SI o BX y DI con una constante o apuntado por SS y la suma de BP y SI o BP y DI con una constante Ejemplos
MOV AX, DS:[BX][SI]+1FB9
MOV DX, SS:[BP][DI]+C9F8
https://emu8086.waxoo.com/Después de instalarlo, realizar la instalación de una manera normal
1. Clic derecho
2. Instalar
3. Next
4. Siguiente
5. Siguiente hasta que se instale
Una vez instalado, le damos clic derecho al programa y lo ejecutamos.
Nos va a pedir que ingresemos una cuenta
Licensee Name: Craked-By-Team-AgressioN!!
Registration Key: KDLSR2ERKRG4U8PDP4UA
Clic en “OK”
Una vez ingresados, comenzamos a programar.
; PROGRAMA PIDE 2 NUMEROS
; REALIZA OPERACIONES BASICAS
.model small
.stack 64
.data
Num1 db 0
Num2 db 0
Suma db 0
Resta db 0
Multiplicacion db 0
Division db 0
Solicitud1 db 13,10,'Ingrese Primer Numero',13,10,'$'
Solicitud2 db 13,10,'Ingrese Segundo Numero',13,10,'$'
Msuma db 13,10 , 'La Suma de los numeros es: $'
Mresta db 13,10 , 'La Restae los numeros es: $'
Mmultiplicacion db 13,10 , 'La Multiplicacion de los numeros es: $'
Mdivision db 13,10 , 'La Division de los numeros es: $'
.code
inicio:
mov ax, @data
mov ds, ax
mov ah, 9
lea dx, Solicitud1
int 21h
mov ah, 1
int 21h
sub al, 30h
mov Num1, al
mov ah, 9
lea dx, Solicitud2
int 21h
mov ah, 1
int 21h
sub al, 30h
mov Num2, al
;Iniciar con las Operaciones
mov al, Num1
add al, Num2
mov Suma, al
mov al, Num1
sub al, Num2
mov Resta,al
mov al,Num1
mul Num2
mov Multiplicacion, al
mov al, Num1
div Num2
mov Division, al
mov ah,9
lea dx, Msuma
int 21h
mov dl, Suma
add dl, 30h
mov ah, 2
int 21h
mov ah,9
lea dx, Mresta
int 21h
mov dl, Resta
add dl, 30h
mov ah, 2
int 21h
mov ah,9
lea dx, Mmultiplicacion
int 21h
mov dl, Multiplicacion
add dl, 30h
mov ah, 2
int 21h
mov ah,9
lea dx, Mdivision
int 21h
mov dl, Division
add dl, 30h
mov ah, 2
int 21h
.exit
ret
DAMOS CLIC EN “EMULATE”, CLIC EN “RUN”
Y NOS APARECERA EL RESULTADO
CODIGO:
.model small
.data
saludo db "HOLA MUNDO CARLOS","$"
.code
programa:
mov ax,seg saludo
mov ds,ax
mov ah,09h
lea dx,saludo
int 21h
mov ax,4c00h
int 21h
end programa
GRACIAS POR LEER MI ARTICULO ARRIBA TE DEJO MI PAGINA WEB SOBRE EL ARTICULO ANDA Y VISITALA