Skip to content

JhonnyVeraCervantes/Lenguaje_Bajo_Nivel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lenguaje_Bajo_Nivel

TAMBIÉN LES DEJO MI PÁGINA WEB PARA QUE VEAN MÁS DETALLADO TODA LA INFORMACIÓN

https://jhonnyveracervantes.github.io/Lenguaje_Bajo_Nivel/

EMU8086

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.

DESCRIPCIÓN.

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

VENTAJAS

• Fácil de manipular

• Interfaz amigable con el usuario.

• Barras de herramientas que permiten realizar programas más fácilmente.

DESVENTAJAS

• 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:

PANTALLA PRINCIPAL

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.

PANTALLA DE COMPILACIÓN

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.

PANTALLA DEL EMULADOR

• 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).

VENTANAS DE CÓDIGO FUENTE

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

REGISTROS DE LA CPU

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

REGISTROS DE USO GENERAL

• AX: Acumulador (AL:AH)

• BX: Registro base (BL:BH)

• CX: Registro contador (CL:CH)

• DX: Registro de datos (DL:DH)

REGISTROS DE SEGMENTO (SOLO SE PUEDEN USAR PARA LOS USOS MENCIONADOS A EXCEPCIÓN DE ES)

• DS: Registro del segmento de datos

• ES: Registro del segmento extra

• SS: Registro del segmento de pila

• CS: Registro del segmento de código

REGISTROS PUNTEROS (TAMBIÉN PUEDEN TENER USO GENERAL)

• BP: Registro de apuntadores base

• SI: Registro índice fuente

• DI: Registro índice destino

REGISTROS ESPECIALES (SOLO SE PUEDEN USAR PARA LOS USOS MENCIONADOS)

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

BITS DEL REGISTRO DE BANDERAS

OVERFLOW

• NV (Apagado): No hay desbordamiento

• OV (Encendido): Si lo hay

DIRECTION

• UP: Hacia adelante

• DN: Hacia atras

INTERRUPTS

• DI: Desactivadas

• EI: Activadas

SIGN

• PL: Positivo

• NG: Negativo

ZERO

• NZ: No es cero

• ZR: Si lo es

AUXILARY CARRY

• NA: No hay acarreo auxiliar

• AC: Hay acarreo auxiliar

PARITY

• PO: Impar

• PE: Paridad par

CARRY

• NC: No hay acarreo

• CY: Si lo hay

DIRECCIONAMIENTOS

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

ESTE ES EL ENLACE PARA DESCARGARLO:

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.

PROGRAMAS CON SUS CODIGOS

OPERACIONES BASICAS

      ; 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

HOLA MUNDO

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