Sunteți pe pagina 1din 16

EL MICROPROCESADOR INTEL 8086

Los microprocesadores modernos, igual que los anteriores buscan


instrucciones en la memoria, pero lo hacen de una forma
totalmente nueva. Los microprocesadores modernos están
estructurados de una forma que contengan muchas más unidades
internas de procesamiento, cada una de las cuales efectúa una
tarea específica. Esto significa que el microprocesador moderno
puede procesar cierto número de instrucciones en forma
simultánea, en diversas etapas de ejecución. Esta capacidad recibe
el nombre de paralelismo.

Fig. 1 (b)

a).- Funcionamiento de un microprocesador de 8 bits.


b).- Funcionamiento de un microprocesador con arquitectura paralela.

De la fig. 1 (a) se puede observar que mientras el microprocesador de 8


bits decodifica la instrucción, el sistema de memoria está ocioso; mientras
que los microprocesadores de 16 bits en adelante aprovechan este tiempo
de memoria ociosa buscando con anticipación la siguiente instrucción
mientras ejecuta la actual.
ARQUITECTURA DEL 8086

El 8086 es un microprocesador de 16 bits, tanto en lo que se refiere a su


estructura como en sus conexiones externas. Consta de un Unidad de
Ejecución. (EU Execution Unit) y una Unidad de Interface con el Bus
(Bus Interface Unit BIU).
La Unidad de ejecución es la encargada de realizar todas las operaciones,
mientras que la Unidad de Interface con el Bus es la encargada de acceder a
datos e instrucciones del mundo exterior
BUSES DEL 8086.

REGISTROS DE USO GENERAL

1.- AX : Registro acumulador, dividido en AH y AL ( 8 bits cada


uno).
Al igual que en el microprocesador de 8 bits, conserva el resultado
temporal después de una operación aritmética o lógica.

2.- BX : Registro Base, dividido en BH y BL, contiene la dirección


base (desplazamiento) de los datos que hay en la memoria o la
dirección base de una tabla de datos referenciados por la instrucción
(se usa para direccionamiento indirecto).

3.- CX: Registro Contador, dividido en CH y CL, se utiliza como


contador en bucles (instrucción LOOP), en operaciones con cadenas
(CX) y en desplazamientos y rotaciones del número de bytes (
usando el registro CL en los últimos dos casos).

4.- DX: Registro de datos, dividido en DH y DL, Se utiliza junto con


el registro AX en multiplicaciones y divisiones, (conteniendo la
parte más significativa de un producto después de una
multiplicación y la parte más significativa del dividendo antes de la
división), y junto con instrucciones variables de E/S (conteniendo en
este caso el número de puerto de E/S).

5.- SP: Puntero de Pila, (no se puede subdividir ) Se emplea para


direccionar datos en una pila de memoria, en donde se almacenan
direcciones de retorno de subrutinas y datos temporales (mediante las
instrucciones PUSH y POP, introducir y extraer. Comparar con las
instrucciones PHP,PHA,PLA y PLP del 6502).
6.- BP: Puntero de base, (no se puede subdividir) generalmente se
utiliza para realizar direccionamiento indirecto dentro de la pila
(direccionar a una matriz de datos).

7.- SI: Puntero índice (Índice de fuente) (no se puede subdividir)


Se emplea para direccionar datos fuente en forma indirecta, para
utilizarlos con las instrucciones de cadenas o arreglos.

8.- DI: Puntero destino (Índice de destino) (no se puede subdividir)


Se emplea para direccionar datos destino en forma indirecta, para
utilizarlos con las instrucciones de cadenas o arreglos.

9.- IP: Puntero de instrucciones. Se utiliza siempre para direccionar


a la siguiente instrucción que va a ejecutar el micropocesador. (
Tener en cuenta que IP no es la dirección efectiva de la siguiente
instrucción, sino que para formarla se suma IP + CS*10H, como se
explicará en la siguiente sección)

UNIDAD ARITMÉTICA Y LOGICA

Es la encargada de realizar las operaciones aritméticas (suma,suma con


arrastre, resta, resta con préstamo) y lógicas (AND, OR, XOR y TEST).
Las operaciones pueden ser de 16 bits o de 8 bits .

REGISTRO DE ESTADO

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Flag -- -- -- -- O D I T S Z 0 A 0 P 1 C

C Bandera de acarreo Si C=1 indica que hubo arrastre ( en caso de


suma) o préstamo (en caso de resta).

P Bandera de paridad, Si P=1 indica que el resultado tiene paridad


par, es decir, un número par de bits a 1. (Este indicador se puede
utilizar para detectar errores en transmisiones)
A Bandera de acarreo auxiliar Si A=1 indica que hubo arrastre o
préstamo del nibble menos significativo al nibble más significativo
(del bit 3 al bit 4).

Z Bandera indicador de cero Si Z=1 el resultado de la operación fue


cero.

S Bandera de signo Si S=1 el resultado es negativo, si S=0 el


resultado es positivo.
Refleja el bit más significativo del resultado. Como los números
negativos se representan en la notación de complemento a dos, este
bit representa el signo

T Trap flag, Bandera de modo paso a paso. Si T=1, el procesador


está en modo paso a paso y se habilita la catacterística de depuración
del microprocesador. En este modo la CPU automáticamente genera
una interrupción interna después de cada instrucción, permitiendo
inspeccionar los resultados del programa a medida que se ejecuta
paso a paso.

I Bandera de interrupción Controla el funcionamiento de la terminal


de entrada de INTR ( interrupción). Si I=1 el CPU reconoce pedidos
de interrupción externas enmascarables (por el pin INTR). Si vale
I=0 no se reconocen tales interrupciones. Las interrupciones no
enmascarables y las internas siempre se reconocen
independientemente del valor de I.

D Bandera de dirección, Controla la selección de incremento o


decremento de los registros DI o SI durante las instrucciones de
cadenas o arreglos. Si vale D=1 habrá decremento automático en
los registros y si D=0 hay incremento.

O| Overflow, Bandera de sobreflujo o desbordamiento Es una


condición que ocurre cuando se suman o restan números con signo.
Un sobreflujo indica que el resultado a excedido la capacidad de la
máquina, esto es, un dígito significativo se perdió debido a que el
tamaño del resultado es mayor que el tamaño del destino.

SISTEMA DE CONTROL DE LA UNIDAD DE EJECUCIÓN

Es el encargado de decodificar las instrucciones que le envía la cola y


enviarle las órdenes a la Unidad Aritmética y Lógica según una tabla que
tiene almacenada en ROM llamada CROM (Control Read Only Memory).
COLA DE INSTRUCCIONES
-

Almacena las instrucciones para ser ejecutadas. La cola se carga cuando el


bus está desocupado, de esta manera se logra una mayor eficiencia del
mismo. La cola de instrucciones del 8086 tiene una longitud de 6 bytes y se
carga de a dos bytes por vez (debido al tamaño del bus de datos). Esta
estructura tiene rendimiento óptimo cuando no se realizan saltos, ya que en
este caso habría que vaciar la cola (porque no se van a ejecutar las
instrucciones que van después del salto) y volverla a cargar con
instrucciones que se encuentran a partir de la dirección a donde se salta.
Debido a esto las instrucciones de salto son (después de multiplicaciones y
divisiones) las más lentas de este microprocesador.

REGISTROS DE LA UNIDAD DE INTERFACE CON EL BUS

(REGISTROS DE SEGMENTOS)

El programador puede acceder a cinco registros de 16 bits cada uno, siendo


cuatro de ellos registros de segmento y el restante el Puntero de
Instrucción IP. A estos registros se les da también el nombre de registros
de segmentos, y su función es generar direcciones en la memoria junto con
otros registros en el microprocesador.
Estos son:

CS: Registro de segmento de código, El segmento de código es una


sección de la memoria que tiene los programas y los procedimientos
utilizados por los programas. El registro de segmento de código
define la dirección inicial de la sección de memoria que tiene el
código (esta sección está limitada a 64 K kytes de longitud).

DS: Registro de segmento de datos, El segmento de datos es una


sección de la memoria que contiene la mayor parte de los datos
utilizados por un programa. Se les accesa en el segmento de datos
con un desplazamiento o con el contenido de otros registros que
tienen la dirección del desplazamiento.

ES: Registro de segmento extra, El segmento extra o adicional de datos


lo utilizan algunas instrucciones para cadenas.

SS: Registro de segmento de pila. El segmento de pila define la


superficie de la memoria utilizada para la pila. La ubicación del
punto inicial de entrada a la pila, se determina por el registro
apuntador de pila. El registro BP también direcciona los datos que
hay dentro del segmento de pila.

LOGICA DE CONTROL DEL BUS

El cometido de este bloque es poder unir los bloques anteriormente


mencionados con el
mundo exterior, es decir, la memoria y los periféricos.
LA MEMORIA Y EL MICROPROCESADOR

El espacio de direccionamiento de un sistema basado en un microprocesador se


denomina memoria lógica o memoria física. La estructura de la memoria lógica es
diferente en casi todos los casos a la estructura de la memoria física. La memoria lógica
es la memoria tal y como lo ve el programador, mientras que la memoria física es la
estructura real del hardware en el sistema de memoria.

MEMORIA LOGICA del 8086

El 8086 es capaz de direccionar hasta 2n ( n = 20 bits del bus de direcciones), 1 Mb de


memoria. Empieza en la localidad 00000h y llega hasta FFFFFH

Fig. 1

Este espacio de 1 Mb puede ser dividido en segmentos de 64 Kb. El 8086 permite tener
cuatro segmentos de memoria, tal como se muestra en la siguiente gráfica:
Fig. 2

SEGMENTOS Y DESPLAZAMIENTOS

Una dirección de segmento y una dirección de desplazamiento, generan una dirección


en ala memoria. Todas las direcciones en la memoria consisten de un segmento y un
desplazamiento. El segmento ubicado en uno de los registros de segmento, define la
dirección inicial de cualquier segmento de memoria de 64 K bytes. La dirección de
desplazamiento selecciona una localidad dentro del segmento de memoria de 64 K bytes
Fig. 3

En la fig. 3 se ilustra cómo el esquema de direccionamiento de segmento más


desplazamiento selecciona una localidad en la memoria. En esta ilustración se muestra
un segmento de la memoria que empieza en la localidad 10000H y termina en la
1FFFFH, de 64 K bytes de longitud. También se muestra la forma en que un
desplazamiento de F000H selecciona la localidad 1F000H en el sistema de memoria. Se
verá que la dirección de desplazamiento es la distancia desde el inicio del segmento.

El registro de segmento de la fig. 3 contiene 1000H, con lo que apunta a una dirección
inicial 10000H.

LOCALIZACIÓN DE UN SEGMENTO

A cada registro de segmento, compuesto de 2 bytes, se le agrega un 0H en su extremo


derecho, para formar una dirección de memoria de 20 bits que le permite colocar el
inicio del segmento en casi cualquier localidad dentro del primer Mbyte de memoria

Por ejemplo, si un segmento de registro contiene una 1200H , direcciona a un segmento


de memoria de 64K bytes que empieza en la localidad 12000H. Debido al 0H, que se
agrega internamente, los segmentos pueden empezar en cualquier múltiplo de 16 bytes
en el sistema de memoria.

Debido a que un segmento de memoria tiene 64 K bytes de longitud, una vez que se
conoce la dirección inicial, para conocer la dirección final se agrega un FFFFH a la
dirección inicial.
Ej. Si un registro de segmento contiene 3000H, la primera dirección en el segmento es
30000H y la última será 30000H +FFFFH = 3FFFFH.

En la tabla No 1 se presentan algunos ejemplos de contenidos de registros de segmento


y las direcciones inicial y final de los segmentos de memoria, seleccionadas por cada
dirección de segmento.

Registro de Dirección inicial Dirección final


segmento
2000H 20000H 2FFFFH
2100H 21000H 20FFFH
AB00H AB000H BAFFFH
1234H 12340H 2233FH

LOCALIZACIÓN DE UNA DIRECCIÓN DENTRO DEL SEGMENTO

La dirección del desplazamiento se suma a la del segmento para ubicar una dirección de
memoria dentro del segmento. Por ejemplo, si la dirección de segmento es 1000H y la
dirección de desplazamiento es 2000H, el microprocesador direcciona a la localidad de
memoria 12000H. La dirección del segmento y del desplazamiento, a veces, se escribe
1000 : 2000 para una dirección de segmento de 1000H y un desplazamiento de 2000H.

Se debe tener en cuenta que los segmentos de memoria pueden tocarse, e incluso
traslaparse si no se requieren 64 K bytes de memoria para un segmento.

Ej. Suponga que un programa de aplicación requiere 1000H bytes de memoria para su
código, 190H bytes de memoria para sus datos y 2000H bytes de memoria para su pila.
Esta aplicación no requiere un segmento adicional. Cuando el DOS coloca este
programa en la memoria se carga el TPA en la primera zona disponible encima de los
controladores y otros programas de la TPA. En la fig. 4 se muestra cómo esta
aplicación se almacena en el sistema de memoria. Los segmentos muestran una
superposición o traslape debido a que la cantidad de datos que hay en ellos no requiere
64 K bytes de memoria. La vista lateral muestra claramente el traslape y la forma en
que los segmentos pueden desplazarse a cualquier parte de la memoria.
Fig. 4

S-ar putea să vă placă și