Está en la página 1de 10

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.

http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

La arquitectura del 8086/8088


Repasamos aqu la arquitectura de un PC. Para ms informacin sobre lo aqu expuesto
se puede consultar [PA01] y los captulos iniciales de [Tej01], [Rod00] y [Nor01].

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:

Esquema de los componentes hardware bsicos del PC.

Para ms informacin sobre procesadores, consultar [SP00]

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

Como se observa, hay seis componentes bsicos2:


1. Oscilador de reloj: es el encargado de dar un ritmo de funcionamiento al
procesador y a toda la circutera en general; por lo tanto, determina la cantidad de
instrucciones que el procesador puede ejecutar por segundo.
2. CPU: Es el microcircuito al cual entran las instrucciones de cdigo mquina y donde
las mismas son procesadas (ejecutadas).
3. Memoria: Est formada por una serie de chips donde se almacena toda la
informacin del sistema, lo cual incluye tanto al cdigo (instrucciones) como los
datos de cualquier tipo.
4. Bus de datos: Es el bus por donde se mueve la informacin digital que circula por
todo el sistema (memoria, puertos...), desplazndose principalmente entre la
memoria y la CPU, y viceversa. Este bus es de 16 bits en el 8086 (8 bits en el 8088 y
32 bits en 80386 y 80486).
5. Bus de direcciones: Es el bus usado por la CPU para indicar a la memoria la
posicin en la que est la informacin a la que se quiere acceder (ya sea para leerla o
para escribir en ella). Una vez se haya accedido a esa posicin en la memoria, sta
enviar su contenido a travs del mencionado bus de datos. El bus de direcciones
posee 20 bits de ancho de banda, por lo que se pueden indicar 220 = 1.048.576
posiciones de memoria distintas.
6. Bus de control: Este bus es el encargado de indicar al sistema tanto el tipo de
informacin que circula por el bus de datos en cada momento, como de sincronizar
las seales que controlan el funcionamiento de la circutera del sistema.
Algunos de estos componentes se desarrollarn ms ampliamente a continuacin.

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.

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

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.

Figura 1.2. Esquema bsico de una CPU

La unidad de control es la que gobierna todo el funcionamiento del ordenador. Controla,


paso a paso, la ejecucin de las instrucciones que se encuentran en memoria central y genera
las rdenes necesarias para el funcionamiento de la unidad de proceso y de los canales.
Adems, gobierna tambin la lectura y escritura de instrucciones y datos de la memoria
central.
La unidad de proceso (ALU) es la que ejecuta las operaciones aritmticas y lgicas. Los
registros son dispositivos de un ordenador para el almacenamiento temporal de datos. Ambos
se desarrollarn ms ampliamente a continuacin.
El microprocesador 8086, que es el que se va a considerar en este trabajo, es un
microprocesador de 16 bits que controla los ordenadores personales estndar de IBM. El 8086
difiere del 8088 solamente en un detalle: utiliza un bus de datos de 16 bits en vez del bus de 8
bits del 8088. A excepcin de esa diferencia, se les considera prcticamente idnticos. Por
ello, cada vez que se haga referencia a uno de ellos, se pondr 8086/8088 para indicar que esa
referencia es vlida para ambos microprocesadores.

Los registros de la CPU

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

Para ayudar al funcionamiento de las instrucciones, para poder manejar variables en


memoria y para su propio funcionamiento, el microprocesador dispone de una serie de
variables internas de nombres fijos que son los registros internos. En total hay 14 de estos
registros, como se puede observar en la figura 1.3, cada uno de los cuales est pensado
principalmente para alguna funcin concreta.

Figura 1.3. Registros internos de la CPU.

A continuacin se detallan cada uno de estos registros, divididos segn reas de


funcionalidad:

Registros de almacenamiento temporal


-

AX (registro Acumulador): Este registro es usado, sobre todo, en operaciones


aritmticas como primer operando y tambin como registro de propsito general a
disposicin del programador.

BX (registro Base): Se usa principalmente para indicar posiciones de memoria


(offset).

CX (registro Contador): Este registro se usa siempre que se necesite un contador en


operaciones repetitivas y bucles.

DX (registro Dato): Se usa como registro auxiliar en operaciones aritmticas y


como contenedor de datos a la hora de usar instrucciones de comunicacin de
puertos.

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

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

bajo) y los 8 superiores AH (H de high, alto). En consecuencia, BX, CX y DX se dividen en


BH/BL, CH/CL y DH/DL respectivamente. De esta forma se tiene que todas las instrucciones
ensamblador pueden operar con datos de 8 y 16 bits segn lo que se precise. En los dems
registros esta subdivisin no es posible.

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.

SS (Stack Segment): En este registro se indica al procesador dnde est la zona de


memoria que se usa como segmento de pila.

ES (Extra Segment): Es el registro que referencia al segmento extra, y se usa como


apuntador de memoria auxiliar en operaciones complejas donde se necesitan dos
punteros de datos simultneos.

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:
-

SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio en


instrucciones de manipulacin de la pila.

BP (Base Pointer): Se usa como registro auxiliar.

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:
-

SI (Source index): Se usa como puntero origen en operaciones de desplazamiento


de datos entre dos zonas de memoria.

DI (Destination index). Se usa como destino en operaciones de desplazamiento de


datos.

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

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

--

--

--

--

Figura 1.4. Estructura del registro de banderas.

Bit 0 - CF (Carry Flag): Es la bandera de acarreo. Se pone a 1 cuando se produce


un resultado con acarreo tras una operacin aritmtica.

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.

Bit 6 - ZF (Zero Flag): Indica si se ha producido un resultado cero o una


comparacin con operadores iguales.

Bit 7 - SF (Sign Flag): Indica si se ha producido un resultado negativo o


comparacin menor.

Bit 8 - TF (Trap Flag): Es la bandera de atrape, usada en procesos de depuracin


de cdigo.

Bit 9 - IF (Interrupt Flag): Si est a 1, indica que est permitida la generacin de


interrupciones hardware que generan algunos perifricos, como la que realiza el
teclado cada vez que una tecla es pulsada.

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

Bit 10 - DF (Direction Flag): Indica a la CPU hacia donde se desplazan los


punteros relativos en operaciones repetitivas de cadenas de datos.

Bit 11 - OF (Overflow Flag): Indica si se ha producido un desbordamiento


aritmtico.

Bit 12 al 15: No usados.

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 artimticas, tales como suma, resta, multiplicacin y divisin.

Operaciones de lgica binaria, tales como and, or, xor, not ...

Operaciones de desplazamientos y rotaciones.

Operaciones de transformacin de operandos, tales como extensin de signo,


transformacin a otro formato de numeracin, etc.

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

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

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

De esta forma, se pueden direccionar el milln de bytes y se tiene acceso a toda la


memoria del PC (a cada uno de los 1024 Kbytes).
La notacin ms empleada para indicar la direccin de un par segmento
desplazamiento consiste en separar esos dos valores con dos puntos, utilizando notacin
hexadecimal (por ejemplo: 123h:12h4, representa la direccin con segmento 123h y
desplazamiento 12h).
Esta forma de direccionar la memoria present un pequeo problema que ha
entorpecido la elaboracin de grandes programas, y no es otro que ste: como ya se ha visto se
accede a memoria dando un valor de segmento y otro de desplazamiento; pues bien, si se
mantiene el valor del segmento fijo (lo que ocurre en los programas) y se vara nicamente el
valor del desplazamiento slo es posible acceder a 65535 bytes (64 Kbytes), que es el valor
mximo alcanzable con los 16 bits del registro de desplazamiento. Con esto, la informacin
mxima que se puede almacenar en la memoria, modificando nicamente el desplazamiento,
es de 64 Kb. A esta cantidad de almacenamiento se le denomina segmento de memoria.
De este modo, un segmento es un rea continua de memoria que puede tener 64K-bytes,
que debe comenzar en una localidad de memoria cuya direccin sea lmite de 16 bytes
(cantidad denominada prrafo) y que puede solaparse con otros segmentos. As, por ejemplo,
la direccin AB00:0012, (es decir, 43776:8 con valores decimales), tiene la misma direccin
real que AB01:0002 (es decir, 43777:2 con valores decimales), pues ambas equivalen a la
direccin real 700.434 (valor que se obtiene al aplicar la frmula anterior).

Segmentos de memoria de un programa


Por lo general, los programas ejecutables disponen de cuatro segmentos (4 zonas de 64
Kbytes):
-

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.

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

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 segmento de pila5 (con SS como base). En l se desarrolla la pila del programa,


utilizada para trasvases temporales de datos, llamadas a funciones, etc. Debe estar
presente en todos los programas EXE de forma obligada. Se utiliza el registro SP
para acceder a los datos de este segmento.

El segmento extra (con ES como base). Su uso es opcional, y en l se encuentra un


segmento definido por el usuario y que, regularmente, contiene datos adicionales.
Al igual que ocurre con el segmento de datos, para acceder a los datos contenidos
en l, se suelen utilizar los registros SI y DI.

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

Reservada para la ROM BIOS


Reservada para ROM instalable
Buffers de vdeo
Parte transitoria del DOS
rea de programas transitorios
(programas de usuarios y datos)
Parte residente del DOS

00400h
00000h
00500h

RAM
del sistema

rea de Datos para la ROM BIOS y el BASIC


rea de datos para la ROM BIOS
Vectores de interrupcin
Figura 1.5. Mapa de memoria de un 8086/8088

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

Grupo de Arquitectura de Computadores y Diseo Lgico. UEX, 1997.


http://atc.unex.es/gacdl
La arquitectura del 8086/8088
Germn Galeano Gil. Juan A. Gmez Puildo

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

También podría gustarte