Documentos de Académico
Documentos de Profesional
Documentos de Cultura
8086 Arq
8086 Arq
http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo
Anatoma del PC
A grandes rasgos, podramos decir que todos los miembros de la familia PC constan de
un procesador, chips de memoria y varios chips inteligentes o programables (que controlan
dispositivos externos, como la unidad de disco o el monitor, o ayudan al microprocesador a
realizar sus tareas). Todos los componentes del circuito principal, estn situados en la placa
principal o placa base. Otros elementos importantes estn situados en placas de expansin,
que pueden ser conectadas a la placa principal.
El microprocesador1 o unidad central de proceso (CPU, Central Process Unit) controla
las operaciones bsicas del ordenador, enviando y recibiendo seales de control a travs de un
grupo de caminos electrnicos llamados bus. A grandes rasgos, puede decirse que un bus es
un conjunto de unos pequeos cables que conducen bits de informacin. El nmero de
cables que forman el bus se denomina ancho de banda del bus.
Localizadas a lo largo del bus, estn las puertas de entrada y salida (E/S I/O), que
conectan la memoria y los chips de apoyo al bus (CTR I/O, controladores de E/S). Los datos
pasan a travs de estas puertas de E/S mientras viajan desde y hasta la CPU y otras partes
Grficamente, el esquema bsico de un PC se puede resumir de este modo:
El microprocesador
El microprocesador o unidad central de proceso (CPU, Central Process Unit) es el chip
que ejecuta los programas. Lleva a cabo una gran variedad de clculos, comparaciones
numricas y transferencia de datos como respuesta a las peticiones de los programas
almacenados en memoria.
En [Nor01] aparecen de forma muy detallada los esquemas de las placas de diferentes ordenadores y una descripcin muy
completa de cada uno de sus componentes.
As, pues, la unidad central de proceso es el conjunto formado por la unidad control, la
unidad de proceso (o unidad aritmtico lgica, ALU) y los registros.
Estos cuatro registros, como todos los restantes, son de 16 bits, pero para permitir la
realizacin de operaciones de tipo byte (8 bits) cada uno de estos cuatro registros est dividido
en dos subregistros de 8 bits a los que se puede acceder de forma independiente (como se
observa en la figura 1.2) . As, por ejemplo, los 8 bits inferiores de AX se llaman AL (L de low,
4
Registros de segmento
Son cuatro registros de 16 bits usados para indicar direcciones de memoria (los
conceptos de segmento y desplazamiento se explicarn en el apartado siguiente):
-
CS (Code Segment): Este registro es usado por el procesador, junto con el registro
IP, para conocer dnde est la instruccin actual que est siendo ejecutada.
DS (Data Segment): Se usa para indicar dnde estn todos los datos del programa
en ejecucin.
Registros de la pila
La pila es un rea de memoria importante. Tiene, en vez de uno, dos registros que se
usan como desplazamiento (offset) para apuntar su contenido. Se usan como complemento al
registro SS y son:
-
Registros ndices.
Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar la
posicin donde se encuentran los datos a los que se desea acceder. Son:
-
Registros de instruccin:
Slo hay uno, el registro IP (Instruction Pointer), es usado por la CPU para conocer la
posicin relativa a la base CS donde se encuentra la instruccin que se est ejecutando
actualmente.
Este registro no puede ser modificado directamente por parte del programador. Este
puntero cambia su contenido automticamente cada vez que se ejecuta una instruccin o
cuando se salta a otro punto del programa mediante una instruccin de salto.
Registro de Banderas:
Este registro es usado para tener el control de estado y control de las operaciones. La
mayora de sus 16 bits se utiliza para representar un estado concreto:
0
10
11
12
13
14
15
CF
--
PF
--
AF
--
ZF
SF
TF
IF
DF
OF
--
--
--
--
Bit 1: No usado.
Bit 2 - PF (Parity Flag): Cuando est a 1, indica que hay un nmero par de bits
activos.
Bit 3: No usado.
Bit 4 - AF (Auxiliar Flag): Se usa como bandera auxiliar. Se pone a 1 cuando hay
necesidad de realizar ajustes tras una operacin de tipo BCD.
Bit 5: No usado.
La ALU
La unidad aritmtico-lgica es el segundo principal componente de la unidad central de
proceso. Se encarga de realizar las operaciones aritmticas y lgicas con los datos que recibe,
siguiendo rdenes de la unidad de control.
Las operaciones que realiza la ALU se pueden agrupar en las siguientes categoras:
Operaciones de lgica binaria, tales como and, or, xor, not ...
La memoria en un 8086/8088
La memoria RAM de un ordenador es utilizada para almacenar programas o datos con
los que el procesador trabaja. Todos los ordenadores necesitan memoria para almacenar
programas e informacin, as como para cargar y ejecutar los programas. Por lo general,
cuanto ms compleja es la tarea que se desea realizar, ms memoria necesita el ordenador.
Direccionamiento de la memoria
Como ya se ha comentado anteriormente, todos los programas y datos se cargan en
localidades de memoria especficas determinadas por sus direcciones. Esa informacin es
almacenada como una secuencia de bytes de manera que cada uno de ellos tiene un nmero
asociado correspondiente al lugar que ocupan. A ese nmero se lo denomina direccin de
memoria.
Dado que el 8086/8088 tiene una longitud de palabra de direcciones de 20-bits es
posible direccionar hasta 1.048.576 (= 210) localidades distintas de memoria, es decir,
podemos almacenar hasta 1Mbyte de informacin. Sin embargo, la CPU slo procesa palabras
de 16 bits en sus registros de direcciones, como ya se ha visto en los apartados anteriores, y
las direcciones de memoria son de 20 bits, por lo que una direccin no cabe en un registro.
7
Por lo tanto, en principio, tericamente slo se podra acceder hasta el byte nmero 65.535
(216, el nmero mayor posible de 16 bits) contando a partir del inicio, que es el byte 0.
Para solucionar este inconveniente, se ide el dividir la direccin de un byte en dos
partes, denominadas segmento (o Base) y desplazamiento (u offset), ambos de 16 bits.
Adoptada dicha medida, la direccin real de un byte en la memoria es:
Direccin real = Valor base x 16 + valor desplazamiento3
El segmento de cdigo (tiene como base el contenido del registro CS). En este
segmento se encuentran las instrucciones que forman el programa. Para acceder a
los datos contenidos en l, se usa el registro IP como desplazamiento.
Para obtener 20 bits de direcciones a partir de dos registros de 16, lo que se hace es desplazar uno de ellos (el segmento) 4
bits a la izquierda, aadiendo para ello 4 ceros por la derecha (lo que equivale a multiplicar por 16). Se obtiene as un valor
de 20 bits (16 iniciales + 4 ceros aadidos) que no es ms que la direccin de inicio del segmento. Para acceder a los datos
del segmento, habr que sumar una cantidad a esa direccin (dicha cantidad es el desplazamiento). Es as como se obtiene la
frmula en cuestin.
El sufijo h se refiere a que el nmero est expresado en la base de numeracin hexadecimal o base 16. Ver apndice F para
ms informacin sobre esta notacin numrica.
El segmento de datos (que tiene como base el registro DS). Contiene los datos que
utiliza el programa (variables, etc.) Para acceder a los datos contenidos en l, se
suele utilizar los registros SI y DI como desplazamiento.
El hecho de que haya ms de un registro de segmento hace posible crear programas que
controlen varios bloques de memoria simultneos de hasta 64 Kbytes cada uno
Mapa de memoria
En los 8086/8088, el espacio de direcciones de 1 MB de memoria se encuentra divido en
varias reas funcionales, como se observa en la figura 1.5.
E0000h
C0000h
A0000h
FFFFFh
00400h
00000h
00500h
RAM
del sistema
Parte del diseo del mapa de memoria del PC y PS/2 es consecuencia del diseo del
microprocesador 8086/8088. Por ejemplo, el 8086/8088 mantiene siempre una lista de
vectores de interrupcin (direcciones de las rutinas de gestin de interrupciones) en los
primeros 1024 bytes de RAM. De la misma forma, todos los ordenadores basados en el
8086/8088 tienen la memoria ROM en lo ms alto del megabyte de memoria, debido a que,
cuando el 8086/8088 se enciende, ejecuta el programa que comienza en la direccin FFFF0h.
Los primeros 64 Kbytes contienen la memoria de acceso aleatorio (RAM). Parte de esta
memoria es utilizada por el DOS y el BIOS6 para retener los vectores de interrupcin y los
datos. Los siguientes 192 Kb estn reservados para aplicaciones adicionales del usuario.
El resto del mapa de memoria sigue la divisin general entre la RAM, en la parte baja, y
la ROM en la parte alta. Puede haber un mximo de 640 KB de RAM entre las direcciones
00000h y 9FFFFh. Los siguientes bloques de memoria se reservan para la RAM de vdeo (de
A0000h a BFFFFh), mdulos de ROM instalables (de C0000h a DFFFFh) y ROM permanente
(de E0000h a FFFFFh).
Divisiones de la memoria
Existen varias zonas de memoria RAM en los ordenadores personales:
Memoria Baja: Es la zona en la parte ms baja de la memoria base, en donde
normalmente se carga el sistema operativo y los controladores de dispositivos.
Memoria Convencional (llamada a veces memoria base) son los primeros 640 Kbytes de
memoria del ordenador e incluye a la memoria baja. En esta zona se carga el sistema
operativo y los programas de aplicacin y sus datos. Con el sistema operativo DOS, los
programas de aplicaciones se ejecutan slo en la memoria convencional. Esta limitacin se
conoce a veces como barrera de los 640 Kbytes. Las otras zonas de memoria se utilizan de
forma limitada, pero slo con ciertos tipos de hardware
Memoria superior: es toda la memoria direccionada entre los 640 Kbytes y el megabyte.
La memoria superior tiene un tamao de 384 Kbytes. Algunas secciones de la memoria
superior se reservan para ser utilizadas por diferentes partes del hardware del ordenador,
como el adaptador de vdeo o la ROM BIOS. El hardware del ordenador puede permitir la
utilizacin de algunos de los controladores de gestin de memoria del DOS (EMM386.SYS
y HIDOS.SYS). En este caso, se puede utilizar la memoria superior para cargar
controladores de dispositivo (como los necesarios para trabajar con un ratn o con una
tarjeta de red) que habitualmente se cargan en memoria convencional, dejando as un
mayor espacio disponible para los programas de aplicaciones. Es posible tambin mover a
la memoria superior el ncleo del sistema operativo principal.
BIOS = Basic Input Output System. Es un conjunto de rutinas bsicas grabadas que permiten acceder y manipular los
diferentes perifricos de entrada y salida conectados al ordenador. Estas rutinas se encuentran almacenadas en memoria ROM
(memoria no voltil). Adems de sa , tiene como funcin la de iniciar las comprobaciones y cargas del sistema operativo del
ordenador cuando ste se conecta.
10