LENGUAJES DE INTERFAZ
jueves, 9 de abril de 2020
miércoles, 18 de marzo de 2020
Emulador 8086
Emulador 8086
Dado que en un entorno emulado de microprocesador no es posible implementar una interfaz real de entrada/salida, el emu8086 permite interfacear con dispositivos virtuales y emular una comunicación con el espacio de E/S. Para esto, el emu8086 cuenta con una serie de dispositivos virtuales preexistentes en el software base, listos para ser utilizados, entre los que se encuentran una impresora, un cruce de calles con semáforos, un termómetro, un motor paso a paso, etc. No obstante, la cátedra ha desarrollado dispositivos adicionales con características particulares para la realización del segundo trabajo práctico.
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:
Emu 8086
|
Microsoft Assembler (MASM 6.11)
|
Entorno educativo
|
Entorno para producción y educativo.
|
Basado en Windows
|
Basado en DOS
|
En forma nativa admite dispositivos virtuales.
|
No admite dispositivos virtuales en forma nativa
|
Set de instrucciones de 8086
|
Set de instrucciones del 8086, 80186/286/386/486
|
Directivas propias adicionales
|
Directivas comunes con TASAM (Borland Turbo Assembler)
|
Emula interrupciones por Hw y Sw
|
No permite emular interrupciones
|
Emula el espacio de E/S (instrucciones IN y OUT)
|
No permite emular el espacio de E/S
|
Permite emular interrupciones.
|
No permite emular intrrupciones.
|
Herramientas adicionales para el debug
|
martes, 17 de marzo de 2020
Obtención de cadena con representación decimal.
Obtención de cadena con representación decimal.
En este modo, los datos son proporcionados directamente como parte de la instrucción.
Ejemplo:
Mov AX,34h ;
Copia en AX el número 34h hexadecimal Mov CX,10 ;
Copia en CX el número 10 en decimal
.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Ejemplo:
Mov AX,34h ;
Copia en AX el número 34h hexadecimal Mov CX,10 ;
Copia en CX el número 10 en decimal
.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Inicio: ;Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END
Manipulación de la pila.
Manipulación de la pila.
La pila es un grupo de localidades de memoria que se reservan para contar con un espacio de almacenamiento temporal cuando el programa se está ejecutando.
La pila es una estructura de datos del tipo LIFO (Last In First Out), esto
quiere decir que el último dato que es introducido en ella, es el primero que saldrá al sacar datos de la pila.
Para la manipulación de la pila ensamblador cuenta con dos instrucciones especificas, las cuales son las siguientes:
Push:
Esta instrucción permite almacenar el contenido del operando dentro de la última posición de la pila.
Ejemplo:
Push ax El valor contenido en ax es almacenado en el último espacio de la pila.
Pop:
Esta instrucción toma el último dato almacenado en la pila y lo carga al operando.
Ejemplo:
Pop bx El valor contenido en el último espacio de la pila se almacena en el registro
El siguiente ejemplo muestra como implementar la instrucción XCHG por medio de las instrucciones Push y Pop. Recuerde que la instrucción XCHG intercambia el contenido de sus dos operandos.
.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Inicio: ;Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Inicio: ;Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END
Instrucciones aritméticas.
Instrucciones aritméticas.
Dentro de ensamblador se pueden llevar a cabo las 4 instrucciones aritméticas básicas, cada una de ellas cuenta con su propia función:
Instrucción de Suma ADD:
Suma los operandos que se le dan y guarda el resultado en el primer operando.
Ejemplo
- ADD al, bl: Suma los valores guardados en los registros al y bl, almacenando el resultado en al.
Instrucción de Resta SUB:
Resta el primer operando al segundo y almacena el resultado en el primero.
Ejemplo:
- SUB al, bl: Resta el valor de AL al de BL y almacena el resultado en AL.
Instrucción de multiplicación MUL:
Multiplica el contenido del acumulador por el operando, a diferencia de los métodos anteriores, solo es necesario indicar el valor por el que se multiplicará, ya que el resultado siempre es almacenado en el registro AX.
Ejemplo:
- MUL DX: Multiplica el valor del registro acumulador (AX) por el de DX.
Instrucción de división DIV:
Divide un numero contenido en el acumulador entre el operando fuente, el cociente se guarda en AL o AX y el resto en AH o DX según el operando sea byte o palabra respectivamente. Es necesario que DX o AH sean cero antes de la operación por lo que es necesario utilizar el ajuste de división antes del la instrucción DIV.
Ejemplo:
- AAM: Ajuste ASCII para la división.
- DIV bl: Instrucción que divide los valores en ax y bl.
Captura de cadenas con formato.
Captura de cadenas con formato.
El capturar cadenas con formato permite el movimiento, comparación o búsqueda rápida entre bloques de datos, las instrucciones son las siguientes:
MOVC:
Esta instrucción permite transferir un carácter de una cadena.
MOVW:
Esta instrucción permite transferir una palabra de una cadena.
CMPC:
Este comando es utilizado para comparar un carácter de una cadena.
CMPW:
Esta instrucción es utilizada para comparar una palabra de una cadena.
SCAC:
Esta instrucción permite buscar un carácter de una cadena.
SCAW:
Esta instrucción se utiliza para buscar una palabra de una cadena.
LODC:
Esta instrucción permite cargar un carácter de una cadena.
LODW:
Esta instrucción es utilizada para cargar una palabra de una cadena.
STOC:
Esta instrucción permite guardar un carácter de una cadena.
STOW:
Esta instrucción es utilizada para guardar una palabra de una cadena.
Suscribirse a:
Entradas (Atom)
-
Ciclos numéricos. Como en cualquier otro lenguaje de programación, hay ocasiones en las que es necesario hacer que el programa no siga u...
-
Obtención de cadena con representación decimal. En este modo, los datos son proporcionados directamente como parte de la instrucción. Ej...
-
Saltos. Los saltos son instrucciones que permiten al programador cambiar el orden de ejecución del programa según sea necesario, dentro ...