ORGANIZACION INTERNA DEL 8086


El 8086 tienen cuatro tipos de registros: los registros de datos, los registros de segmentos, los registros de punteros y el registro de estado. Dispone también de un contador de programa no accesible al usuario.

 

LOS REGISTROS DE DATOS.

 

Los cuatro registros de datos AX, BX, CX y DX, sirven de acumuladores y de registros de operandos de 16 bits. Cada uno de estos registros puede separarse en dos registros de 8 bits.  La letra X se cambia por H para el registrodel byte más significativo y la L por el registro del byte menos significativo. 

 

Los cuatro registros de 16 bits del 8086 pueden comportarse como registros generales para las operaciones aritméticas y lógicas y para las transferencias, cada uno tiene una función específica a nivel de las operacines asociadas a las instrucciones.

 

AX se utiliza para las operaciones de entrada/salida, las correcciones decimales, las multiplicaciones, las divisiones y las translaciones.

BX sirve de registro base para direccionar una posición de memoria con el modo de direccionamiento indirecto con el registo base.

CX sirve de contador de datos en las manipulaciones de cadenas de caracteres.

DX sirve para las multiplicaciones y divisiones asociándolo con AX, o de registro de direccionamiento indirecto para direccionar  un puerto de entrada/salida.

LOS REGISTROS PUNTEROS (POINTERS).

 

SP, BP SI y DI. Estos cuatro registros participan en las operaciones aritméticas y lógicas. Los dos primeros se toman por defecto para expresar un desplazamiento en el interior del segmento de pila, mientras que los dos últimos se toman por defecto para expresar un desplazamiento en el interior del segmento de datos, salvo para las operaciones con cadenas de datos.

 

EL CONTADOR DE PROGRAMA.

 

Este registro, designado por IP (Instrcuctin Pointer), contiene el desplazamiento de la posición de memoria direccionada en el interior del segmento concerniente. Este desplazamiento se suma a la dirección de base del segmento para obtener la dirección física, haciendo el cálculo la unidad de gestión de memoria integrada en el 8086.  Este deplazamiento se expresa en 16 bits. Todo programa que no efectúe ninguna carga ni manipulación de los registros de segmento es relocable dinámicamente. Tal programa acepta las interrupciones y puede ser trasladado en el espacio de memoria, modificando los valores de los registros de segmento. Esta modificación de los valores la realiza el sistema operativo o el programador en caso de que no exista el primero.

 

REGISTRO DE ESTADO.

 

Este registro de 16 bits, de los que solamente se utilizan nueve, reúne todos los indicadores de estado.

 

   Overflow          Trap           Signo      Auxiliar     Carry

                                             Carry        

                      └──────────┐                     ┌───┘

       └─────────────────┐                  ┌───┘      

            ┌──┬──┬──┬──┬┴─┬──┬──┬┴─┬┴─┬──┬──┬┴─┬──┬──┬──┬┴─┐

                    O D I T S Z   A   P   C

            └──┴──┴──┴──┴──┴┬─┴┬─┴──┴──┴─┬┴──┴──┴──┴┬─┴──┴──┘

            ┌───────────────┘           └─┐       

                                                

        Dirección       Interrupción      Cero      Paridad

                 

AF (Auxiliary Carry Flag) es el acarreo de peso 24, utilizado en las operaciones aritméticas decimales.

CF (Carry Flag) es el acarreo o "lo que llevamos"

PF (Parity Flag) es el indicador de paridad, colocado a '1' si la paridad es par

SF (Sign Flag) inidcador de signo

ZF (Zero Flag) es el indicador de cero.

 

A parte de estos cinco indicadores, el registro de estado contiene también:

 

El bit de estado OF (Overlow Flag) que es el indicador de rebasamient de capacidad, éste se coloca a '1' cuando el bit más significativo del dato se pierde debido a un rebasamiento de capacidad.

El bit de control DF (Direction Flag), utilizado para la manipulación de cadenas de caracteres. Según que el programador coloque este bit a '0' o a '1', la cadena de caracteres será tratada en sentido de direcciones crecientes o decrecientes.

El bit de control IF (Interrupt Flag). Dependiendo de que el programador coloque este bit a '0' o a '1', las interrupciones externas enmascarables serán inhibidas o autorizadas. Este bit no tiene ninguna acción sobre la interrupción esterna no enmascarable NMI ni sobre las interrupciones internas.

El bit de control TF (Trace Flag) controla el modo 'Trace'. Si el programador coloca este bit a '1', se desencadenará una interrupción interna, llamada 'TRAP?, al final de cada instrucción. El programa se bifurca entonces hacia el suprogama 'Trace', lo que permite la visualización del contenido de los registros, asegurando así un funcionamiento paso a paso. 

 

ORGANIZACION EXTERNA DEL 8086.

 

El 8086 fue concebido para funcionar según dos modos: el modo mínimo y el modo máximo. algunas señales de este microprocesador son válidasen los dos modos, y otras son específicas sólo de un modo. La elección del modo mínimo o máximo se hace a través del pin MN//MX, uniéndolo respectivamente a +%V o a masa. En modo mínimo, el microprocesador genera él mismo las señales de control, mientras que en modo máximo éstas son liberadas por un circuito especial, el 8288.

 

SEÑALES UTILIZADAS EN LOS DOS MODOS.

 

-AD0 a AD15

          Estas son las 16 líneas del bus de direcciones/datos.

 

-AD16/S3 , AD17/S4 , AD18/S5 , AD19/S6

          Estas son las 4 líneas de mayor peso del bus de direcciones que están multiplexadas en el tiempo, con cuatro señales de estado.

 

-/BHE/S7 (Bus high enable)

          Esta señal la suministra la CPU para seleccionar, en conjunción con el bit de dirección A0, uno de los dos bytes de una palabra de 16 bits. S7 es una señal de estado disponible para una eventual versión mejorada del 8086.

 

-ALE (address latch eneble)

          Esta señal de salida la libera el 8086 para indicar que ya se puede "latchear" la señal /BHE y los 16 bits de direcciones disponibles en le bus multiplexado de direcciones/datos durante un estado del ciclo de bus. esta destinada a los circuitos 8282.

 

-READY

          Esta entrada se utiliza para efectuar intercambios asíncronos entre la CPU, por una parte, y las memorias o los periféricos de entrada-salida, por otra parte. Así, si las memorias son bastante rápidas para el 8086, este pin estará conectado a +5V. Si por el contrario no es bastante rápida, se utilizarán uno o varios circuitos suplementarios para generar una señal que estará a nivel cero mientras la memoria no esté lista para suministar o recibir un dato, y que pasará a nivel "1" cuando la memoria esté lista. Esta señal conectará al pin READY.

 

-CLOCK.

          Esta entrada es el reloj del 8086.Tiene una velocidad de hasta 5MHz.

 

-RESET.

          La activación a nivel alto de esta señal durante al menos cuatro impulsos de reloj inicializa al microprocesador, o sea, lo hace bilfurcar al subprograma relativo al vector Reset.

          Esta entrada se activa en flanco descendente.

 

-/RD

          Es la señal de lectura.

 

-NMI Y INTR.

          Son las dos peticiones de interrupción. La primera, no enmascarable, se activa con la trnsición de nivel bajo a nivel alto, está vectorizada y es prioritaria sobre INTR. La segunda es enmascarable, activa a nivel alto y vectorizada.

 

-/TEST.

          Esta emntrada sirve para la sincronización de un procesador especializado con el 8086.

 

SEÑALES ESPECIFICAS DEL MODO MINIMO.

 

Estas señales se generan o se tienen en cuenta, por parte del 8086, sobre los pines 24 a 31.

 

-DT//R (data transmit receive) y /DEN (data enable).

          El fan-out del bus de datos permite únicamente conectar de 6 a 8 circuitos en el bus. De esta forma se utilizan circuitos de interfaz de potencia para aumentar este fan-out. Para asegurar esta función de amplificación, la CPU suministra las señales DT//R y /DEN. Los circuitos de interfaz utilizados son los buffers bidireccionales 8286, que amplifican cada uno ocho señales. Cuando no se utiliza el bus de datos, la salida de estos circuitos está en estado de alta impedancia. Cuando este bus se va a utilizar, el microprocesador lo indica activando la señal /DEN que sirve de señal de validación del bus de datos, dejando las salidas de los 8286 en estdo de alta impedancia. Cuando este bus se va a utilizar, el microprocesador lo indica activando la señal /DEN que sirve de seañal de validación del bus de datos, dejando las salidas de los 8286 en estado de alta impedancia. La señal DT//R la suministra la CPU como complemento de /DEN para seleccionar el sentido de transferencia del dato a través de los 8286: hacia el microporcesador para una entrada, hacia la memoria o periférico para una salida.

 

-/WR.

          Es la señal de escritura.

 

-M//IO.

          Esta salida se utilizapara distinguir un acceso a memoria (M/IO =1) de un acceso a un periférico (M/IO =0).

 

-/INTA.

          Esta salida es la señal "autorización de interrupción" activa a nivel bajo. Es caso de la utilización del 8259 A, el 8086 genera dos impulsos sobre la salida /INTA si se ha dirigido una petición de interrupción sobre INTR. Estos dos impulsos se comportan como dos impulsos de lectura del vector suministrado por el 8259 A.

 

-HOLD y HLDA.

          Estas señales son, repectivamente, la petición de acceso directo a memoria y la utilización de acceso directo a memoria. La puesta al estado alto de HOLD activa esta entrada. El microporcesador responde entoces colocando la salida HLDA al estado alto y, simultáneamente, coloca en estado de alta impedancia el bus de direcciones/datos, los cuatro bits más significativos del bus de direcciones y las señales de control /BHE/S, /RD, M//IO, /WR, /INTA, DT//R y /DEN.

 

SEÑALES ESPECIFICAS DEL MODO MAXIMO.

 

La mayor parte de las señales las genera el controlador de bus 8288 a partir de las señales de estado /S0, /S1 y /S2.

 

-/S0, /S1, /S2

          Estas son las señales de estado sumnistradas por el 8086.

 

-/RQ//GT0, /RQ//GT1

          Estas dos señales bidireccionales son la petición de acceso al bus y su autorización. La primera tiene mayor prioridad.

 

-/LOCK

          Esta salida se activa durante las instrucciones precedidad del sufijo LOCK y cuando la salida /INTA está activada. Esta señal prohíbe el acceso al bus a cualquier otro circuito distinto del que tiene el control del bus.

 

-QS0, QS1

          Estas dos salidas definen la actividad de la cola de esprea; están destinadas a los coprocesadores.

 

  /S2

  /S1

  /S0

   TIPO DE TRANSFERENCIA EN CURSO

   0

   0

   0

 Autorización de una interrupción

   0

   0

   1

 Lectura periférico

   0

   1

   0

 Escritura periférico

   0

   1

   1

 Halt

   1

   0

   0

 Búsqueda de una interrupción

   1

   0

   1

 Lectura de memoria

   1

   1

   0

 Escritura de memoria

   1

   1

   1 

 Nada

 

  *SEÑALES  /S2, /S1 Y /S0.

 

    S4

    S3

 SEGMENTO SELECCIONADO

     0

     0

 "Datos suplementarios"

     0

     1

 "Pila"

     1

     0

 "Programa"

     1

     1

 "Datos"

 

     *Señales S4 y S3

     * S5 es una copia del bit de estado "interrupción" 1

     * S6 está al nivel cero

     * S7 es un bit de estado inutilizado pero diponible para una        eventual versión del 8086

 QS1

 QS0

        ESTADO DE LA COLA DE ESPERA

  0

  0 

 Ninguna operación en curso.

  1

  0

 El primer byte de una instrucción se ha          extraído de la cola de espera.

  0

  1

 La cola de espera se ha reinicializado.

  1

  1 

 El siguiente byte de una instrucción se ha       extraído de la cola de espera.

 

          *Señales QS1 y QS0