viernes, 23 de febrero de 2018

EJEMPLO DE USO DE  CONSTANTES EN EMU8086  Y TURBO   ASSEMBLER

EMU8086


TURBO




Registros de PILA

   La pila es un área de memoria importante y por ello tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar a su contenido. Se usan como complemento al registro y son:

1- SP- Stack Pointer: Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila. Por lo general, el programador no debe alterar su contenido.
2- BP- Base pointer: Se usa como registro auxiliar. El programador puede usarlo para su provecho.


Registro de Apuntador de Instrucciones
   El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP esta asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se esta ejecutando actualmente. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.

Registro SI. El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI esta asociado con el registro DS.   

Registro DI. El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI esta asociado con el registro ES.






Ejercicio del  vídeo en EMU8086
INGRESAR DATOS




.model small
.stack 64
.data

    n1 db 0
    n2 db 0
    suma db 0
    msg1 db "Dame el primer valor", '$'
    msg2 db 10, 13, "Dame el segundo valor", '$'
    msg3 db 10,13, "Suma", '$'
 
    .code
    inicio:
    ; direccionamos al segmento de datos
    mov ax, @data
    mov ds, ax
 
    ; solicitamos el primer digito
    mov ah,09
    lea dx, msg1
    int 21h
    ; se lee el primer valor
    mov ah,01
    int 21h
    sub al, 30h ; convertir el caracter a numero
    mov n1,al
 
    ; solicitamos el segundo digito
 
    mov ah, 09
    lea dx, msg2
    int 21h
    ; se lee el primer valor
    mov ah,01
    int 21h
    sub al, 30h ; convertir el caracter a numero
    mov n2, al
 
    ; operacion
    mov al, n1
    add al, n2
    add al, 30h   ; convierte el caracter
    mov suma, al
    mov ah, 09
    lea dx, msg3
    int 21h
 
 
    ; se imprime el caracter con el servicio 02 de la int 21h
    mov ah, 02
    mov dl, suma
    int 21h
    mov ah, 4ch
    end inicio
    end
   






lunes, 12 de febrero de 2018

EJERCICIOS EN  EMU8086  Y  TURBO

emu8086


turbo






Ejemplos    de  banderas en emu8086 


                                                             Bandera CF
CF: Bandera de acareo. 

El tamaño maximo  que  puede  soportar  al  es 255  y se  produjo  un acarreo de 1




Bandera ZF
ZF: Bandera de resultado 0 o comparación igual. 
El resultado  de  la  operación es   0 



Bandera  SF
SF: Bandera de resultado o comparación negativa. 
Resultado de operación aritmética  negativa.



Bandera  OF
OF: Bandera de desbordamiento (aritmético). 
Esta  fuera del  rango







martes, 6 de febrero de 2018

Registro de bandera.

El Registro de banderas es el que informa al usuario el estado actual del
microcontrolador.  


De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el estado actual de la maquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente. En resumen, los bits de las banderas comunes son : 

OF (desbordamiento) es el principal indicador de error producido durante las operaciones con   signo. Vale 1 cuando:

• La suma de dos números con igual signo o la resta de dos números con signo opuesto
producen un resultado que no se puede guardar (más de 16 bits).
• El bit más significativo (el signo) del operando ha cambiado durante una operación de    desplazamiento aritmético.
• El resultado de una operación de división produce un cociente que no cabe en el registro  de resultado.

DF (dirección en operaciones con cadenas) si es 1 el sentido de recorrido de la cadena es de   izquierda a derecha, si es 0 irá en sentido contrario.

IF (indicador de interrupción) cuando vale 1 permite al procesador reconocer interrupciones. Si se  pone a 0 el procesador ignorará las solicitudes de interrupción. 

TF (modo traza) indica al procesador que la ejecución es paso a paso. Se usa en la fase de   depuración.

SF (indicador de signo) solo tiene sentido en las operaciones con signo. Vale 1 cuando en una de   estas operaciones el signo del resultado es negativo.

ZF (indicador de cero) vale 1 cuando el resultado de una operación es cero.

AF (acarreo auxiliar) vale 1 cuando se produce acarreo o acarreo negativo en el bit 3.

PF (paridad) vale 1 si el resultado de la operación tiene como resultado un número con un número
par de bits a 1. Se usa principalmente en transmisión de datos.

CF (bit de acarreo) vale 1 si se produce acarreo en una operación de suma, o acarreo negativo en
una operación de resta. Contiene el bit que ha sido desplazado o rotado fuera de un registro o
posición de memoria. Refleja el resultado de una comparación. 


miércoles, 31 de enero de 2018

Esquema  del microprocesador  8086



Registros de propósito general




AX: Registro acumulador. Es el principal empleado en las operaciones aritméticas.
   
BX: Registro base. Se usa para indicar un desplazamiento.   

CX: Registro contador. Se usa como contador en los bucles.  

DX: Registro de datos. También se usa en las operaciones aritméticas.  




Programas en  emu8086
Ejemplos




1.-









Programa 2








Programa 3






programa 4





jueves, 25 de enero de 2018

Unidad1 Introducción al lenguaje ensamblador

1.1 Importancia de la programación en lenguaje ensamblador.


El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.



1.2 El procesador y sus registros internos

 El procesador es el que se refiere a los diferentes tipos de artículos de sistemas informativos que forma parte de un microprocesador que es parte de un CPU o micro que es el cerebro de la computadora y de todos los procesos informativos desde los más sencillos hasta los más complejos. 

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre.


Tipos de registros

Registros de segmento.
Registros de propósito general.
Registros de apuntadores.
Registros de banderas.
Registros de Pila.
Registros Indice.

Registros de segmento

Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual.

Registro CS: El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS: La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos.

Registro SS: El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en le registro SS. Esta dirección de segmento, mas un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que esta siendo direccionada.

Registros ES: Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.


Registros FS y GS: Son registros extra de segmento en los procesadores 80386 y posteriores.


Registros de propósito general

Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte “alta”, y el ultimo byte de la derecha es la parte “baja”. Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su nombre.


Registros de datos:   

AX: Registro acumulador. Es el principal empleado en las operaciones aritméticas.   
BX: Registro base. Se usa para indicar un desplazamiento.   
CX: Registro contador. Se usa como contador en los bucles.   
DX: Registro de datos. También se usa en las operaciones aritméticas.   
Estos registros son de uso general y también pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable también a los registros BX, CX y DX.   

Conclusión   del equipo #1: Puertos paralelos  Un puerto paralelo es una interfaz entre un ordenador y un periférico. El puerto paralelo ...