ORGANIZACION INTERNA DEL 8086
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