Está en la página 1de 12

Procesadores Digitales. Ing. Sistemas . UNT. .

INTRODUCCION A PROCESADORES DIGITALES

Un computador esta compuesto principalmente por procesador, chips de memoria, varios chips
inteligentes o programables, el bus de datos, el bus de direcciones, el bus de control y
Unidades de entrada/salida.
El procesador:
Es el chip que ejecuta las instrucciones. El procesador o CPU, lleva a cabo una gran
variedad de clculos, comparaciones numricas y transferencias de datos como
respuesta a las peticiones de los programas que estn siendo ejecutados en memoria.
La CPU controla las operaciones bsicas del ordenador enviando y recibiendo seales
de control, direcciones de memoria y datos de un lugar a otro del ordenador a travs de
un BUS.
A lo largo de este bus estn las puertas de entrada y salida (E/S), las cuales conectan a
la memoria y a los chips de apoyo al bus. Los datos pasan a travs de estas puertas de
E/S mientras viajan desde y hasta la CPU y otras partes del ordenador.
Por Ejemplo el procesador 8086 es un procesador de 16 bits y esto significa que el
procesador va a manipular en una sla operacin datos de hasta 16 bits. Es decir,
cuando transfiera datos a la memoria o los traiga desde ella, lo podr hacer de 16 bits
en 16 bits.
El procesador cuenta con una serie de registros usados para realizarlas operaciones de
clculo, y como almacenamiento de datos.
Un registro del procesador es una zona de memoria dentro del procesador donde se
puede almacenar informacin, de forma que el acceso a esta informacin es
instantneo, ya que no hay que utilizar el bus de datos que conecta el procesador con la
memoria para obtener dichos datos.

Los registros segn sus funciones:


Registros de Propsito General: AX, BX, CX y DX.
Se usan para clculo y almacenamiento de propsito general. Son utilizados por
los programas para realizar clculos, as como para transferir datos de una
posicin de memoria a otra, ya que no se puede hacer de forma directa. Es decir,
que no podemos transferir un dato de la posicin de memoria X a la posicin Y
sin antes depositar ese dato temporalmente en un registro del procesador.
Estos registros tienen una longitud (tamao/nmero de bits que soportan) de 16
bits, pero podemos descomponerlos en un par de registros de 8 bits.
AX = AH | AL BX = BH | BL
CX = CH | CL DX = DH | DL

Ing. Csar Arellano Salazar 1


Procesadores Digitales. Ing. Sistemas . UNT. .

Por ejemplo el registro Ax de 16 bits, est compuesto por la conjuncin del


registro AH de 8 bits (los 8 bits ms significativos o de ms a la izquierda) y el
registro AL de 8 bits (los 8 bits menos significativos o de ms a la derecha).

Registros Indice: SI, DI.


Se utilizan para acceder a memoria cuando se establece el modo de
direccionamiento mediante indexacin.
SI y DI indican el ndice fuente y destino respectivamente. Estos registros son de
16 bits, y no pueden ser utilizados como registros dobles de 8 bits.

Registros Apuntadores: BP y SP
Se utilizan para acceder a memoria cuando se establece el modo de
direccionamiento mediante punteros.
BP y SP indican el puntero base y el puntero de la pila respectivamente.

Registros de Segmento: CS, DS, SS y ES.


CS: registro segmento de cdigo. Establece al rea donde se halla el
programa en ejecucin.
DS: registro segmento de datos. Especifica la zona donde el programa
lee y escribe los datos por defecto.
SS: registro segmento de pila. Especifica el rea donde se encuentra la
pila del sistema.
ES: registro segmento extra. Se utiliza como una extensin del segmento
de datos. Es decir, indica otro rea de datos aparte del especificado por DS.

Puntero de instruccin: IP.


Su longitud es de 16 bits como el resto de registros.
Indica la direccin de la siguiente instruccin a ejecutar, y su valor es ajustado
durante la ejecucin de la instruccin en curso.
CS e IP en conjuncin conforman la direccin fsica real de la siguiente
instruccin a ejecutar.

Registro FLAGS. O banderas de estado.


Su longitud es de 16 bits. Cada uno de estos bits contiene cierta informacin
booleano (verdadero o falso). Segn el valor de cada uno de estos bits sea
1(verdadero) 0(falso), informar del estado de alguna situacin en particular
(evento).
Los bits del registro de banderas se clasifican en dos grupos:
Flags de estado (Cf, Af, Of, Zf, Pf y Sf): muestran el estado del procesador.
Flags de control ( Df, If, Tf): determinan como el procesador responder a
determinadas situaciones. El programador manipular estos bits para controlar el
modo de ejecucin de algunas instrucciones.

Ing. Csar Arellano Salazar 2


Procesadores Digitales. Ing. Sistemas . UNT. .

La Memoria:
Los chips de memoria se dedican a almacenar la informacin hasta que se necesita.
El nmero y la capacidad de almacenamiento de estos chips que hay dentro del
ordenador determinan la cantidad de memoria que podremos utilizar para los
programas y los datos.
Normalmente la memoria siempre se ha dividido en dos tipos principales, como son la
RAM y la ROM.

Chips inteligentes:
Se trata de chips de apoyo, de los que se sirve el procesador o el usuario. Estos chips
existen debido a que el procesador no puede controlar todo el ordenador sin ayuda. Al
delegar ciertas funciones de control a otros chips, le queda ms tiempo libre para
atender a su propio trabajo.
Estos chips de apoyo pueden ser responsables de procesos tales como el flujo de
informacin a travs de la circuitera interna(como el controlador de interrupciones y el
controlador DMA) y controlar el flujo de informacin de uno a otro dispositivo(como un
monitor o una unidad de disco) conectado al ordenador.

Bus de direcciones:
El bus de direcciones del Pc utiliza lneas de seal para transmitir las direcciones de
memoria y de los dispositivos conectados al bus.
A travs de cada una de esas lneas pueden viajar dos posibles valores(0 1, es decir
tenson alta o tensin baja), por ejemplo el ordenador 8086 tiene un bus de direcciones
de 20 lneas y puede especificar 2^20. Es decir puede direccionar 1 Megabyte.
Modelos superiores como el 80386 o el pentium direccionan muchsimo ms, tanto como
les permite su bus: 32 bits en el caso del 386 y 64 bits en el caso del pentium. Es decir,
2^32 y 2^64 direcciones respectivamente.

Bus de datos:
El bus de datos trabaja con el bus de direcciones para transportar los datos a travs del
ordenador.

Bus de control:
Transporta seales para sincronizar las operaciones del procesador y su comunicacin
con la memoria y los dispositivos de E/S.

Ing. Csar Arellano Salazar 3


Procesadores Digitales. Ing. Sistemas . UNT. .

ARQUITECTURA DEL PROCESADOR X86

Arquitectura en pipeline
Los procesadores previos al 8086, estaban limitados en su desempeo por la necesidad de
realizar los dos pasos principales de ejecucin del procesador: Fetch/Execute, en forma
secuencial. Es decir, no se puede ejecutar una instruccin hasta que se traiga de memoria
(Fetch); y no podan traerse instrucciones de memoria mientras ejecutaba una instruccin, pues
el procesador estaba ocupado.
Resumiendo, un alto porcentaje del tiempo, el procesador estaba ocupado haciendo Fetch,
cuando su funcin debiera ser ejecutar las instrucciones. La capacidad de ejecutar
instrucciones slo se ocupaba en un bajo porcentaje.

Ing. Csar Arellano Salazar 4


Procesadores Digitales. Ing. Sistemas . UNT. .

Para solucionar esto, Intel desarroll la arquitectura en pipeline del Fetch/Execute, en la cual
simplemente se divide la tarea en dos secciones: una encargada del Fetch (BIU), y otra del
Execute (EU). De esta manera, existen circuitos separados para cada funcin, los cuales
trabajan en paralelo. Si bien el proceso an es secuencial, solamente al principio se requiere
desperdiciar tiempo en el Fetch. A partir de ah, Fetch va adelante del Execute, y trae
instrucciones al procesador mientras este ejecuta las anteriores.

BIU: BASIC INTERFACE UNIT


El BIU es la parte del 8086 que se encarga de hacer el Fetch; es decir, su funcin es estar
continuamente accesando la memoria, trayendo de ella las instrucciones para ser ejecutadas
por el procesador.
Contiene los siguientes elementos:
1.Los registros de segmentos
2.La cola de prefetch
3.El generador de direcciones fsicas
4.El Bus C

Su funcionamiento es de la manera siguiente:


1. Registros de segmentos
Estos registros son localidades de 16 bits dedicados a las funciones de acceso a memoria.
Se decidi, como se describir ms adelante al analizar el mecanismo de segmentacin,
dividir el Megabyte de memoria al que puede accesar un 8086. Los registros de segmentos
nos van a indicar qu seccin de memoria seleccionamos.
Existen 4 registros de segmentos:
DS: Data Segment (Segmento de Datos)
Este registro selecciona una seccin de 64 Kb. que se dedica generalmente a colocar en
ella nuestras variables, por lo cual toma su nombre: seccin de memoria dedicada a datos.
CS: Code Segment (Segmento de Cdigo)
Este registro selecciona el rea de 64 Kb. que generalmente dedicamos al cdigo. En este
caso, el CPU (especficamente, el BIU), siempre toma las instrucciones de esta regin de
memoria; por lo que cuando requerimos ms de 64 Kb. de cdigo (instrucciones), este
registro tendr que moverse, tomando distintos valores segn recorremos distintas regiones
de memoria.
SS: Stack Segment (Segmento de Pila)
Este registro selecciona la regin de 64 Kb. que va a contener la pila del sistema. Como su
nombre lo indica, tendremos una estructura de datos, con poltica LIFO (Last In, First Out =
El ltimo elemento en entrar, es el primero en salir), con instrucciones bsicas PUSH y POP
para su manejo. Esta estructura es usada por los programas de aplicacin, pero tambin
por el procesador para el control de instrucciones que lo requieren, tales como las llamadas
a subrutinas yla atencin de interrupciones.

Ing. Csar Arellano Salazar 5


Procesadores Digitales. Ing. Sistemas . UNT. .

ES: Extra Segment (Segmento Extra)


Este registro nos permite seleccionar una seccin de 64 Kb., que no est destinada a
ningn uso especfico; por lo que el programador puede aplicarla como comodn,
generalmente como un segundo segmento de datos; o bien, para el acceso a regiones de
memoria del sistema, tales como la memoria de video o las variables del BIOS.

2. Cola de prefetch
Ya que el BIU trabaja en paralelo con el EU, requieren de un mecanismo para comunicarse.
Esto se logra con una cola, estructura de datos que permite que el EU obtenga
instrucciones para ejecutar en el mismo orden en que el BIU las coloc en la misma.
As, el EU puede solicitar instrucciones en cuanto est listo para ejecutar la siguiente, sin
importar en qu paso est el BIU en la obtencin de instrucciones; y viceversa, el BIU
puede continuar su bsqueda de instrucciones, depositando la que acaba de obtener en la
cola, sin importar si el EU en este momento est ocupado ejecutando.
3. Generador de direcciones fsicas
Como las direcciones son de 20 bits, y los registros que nos permiten accesarlas son de 16,
se requiere de 2 registros para que en combinacin formen la direccin.
Esta combinacin est basada en la arquitectura segmentada que veremos ms adelante.
La funcin del generador de direcciones fsicas consiste en realizar esa combinacin, para
lo cual contiene la circuitera necesaria para calcular la frmula: Direccin Fsica =
Segmento * 0010h + Desplazamiento
4. Bus C
Este bus interno del procesador permite que la informacin fluya entre la interfaz con la
memoria y los distintos elementos del BIU. Se requiere un bus independiente, para que la
informacin que usa el EU no se interfiera con la que est procesando el BIU.

EU: EXECUTION UNIT


El EU es la parte del 8086 que Contiene los siguientes elementos:
1. Unidad de control
2. Registros de propsito general
3. Registros de ndice
4. ALU
5. Registro de Banderas
6. Bus A

1. Unidad de Control
Es la seccin del procesador que contiene la lgica de funcionamiento del mismo; es decir,
esta circuitera gobierna el comportamiento de los distintos elementos en el procesador,
coordinando los procesos de Fetch y Execute, as como las distintas microoperaciones
necesarias para la ejecucin. Por tanto, tiene dos funciones principales:

Ing. Csar Arellano Salazar 6


Procesadores Digitales. Ing. Sistemas . UNT. .

Generar la secuencia de estados del procesador, lo que logra gracias a la ejecucin del
microcdigo.
Decodificar las instrucciones, determinando as los pasos para su ejcucin

2. Registros de Propsito general


Son 4 registros de 16 bits, que el programador usar para una diversidad de funciones.
Tienen varias caractersticas en comn:
Pueden ejecutar la mayora de las operaciones del procesador, incluyendo la
generalidad de las instrucciones aritmticas y lgicas, salvo la multiplicacin y divisin.
Se dividen lgicamente en 2 registros de 8 bits cada uno, llamados parte alta y parte
baja; refirindose el registro de parte baja a los bits 0-7 (menos significativos) y la parte
alta a los bits 8-15 (ms significativos).
Pueden conectarse a los registros de segmentos; de hecho, siempre se har acceso a
los registros de segmento a travs de un registro de propsito general, o de la pila.
Los 4 registros tienen su nombre propio y ciertas especializaciones:
AX: Registro de acumulador
Este registro es el ms usado, siendo de propsito general; y tiene ciertas
especializaciones, de ah su nombre:
Es el nico que puede ser usado como multiplicando en la multiplicacin

Es el nico que puede ser usado como dividendo en la divisin

Es el parmetro que selecciona los distintos servicios del Sistema Operativo, usados
mediante el mecanismo de Interrupciones.
BX: Registro de Base
Este registro, adems de las caractersticas generales de los registros de propsito
general, se especializa en el acceso a memoria en combinacin con los registros de
ndice, especialmente para el manejo de arreglos.
CX: Registro de Contador
Este registro, como su nombre indica, ser ampliamente usado como contador. Puede
ser usado como cualquier registro de propsito general, pero tiene capacidades
especiales para ser usado en instrucciones: de manejo de ciclos como contador en los
corrimientos de manejo de memoria y strings
DX: Registro de Datos
Este registro de propsito general tiene como especializaciones:
Formar con AX nmeros de 32 bits, siendo en este caso la parte ms significativa.

El acceso a puertos. Las instrucciones IN y OUT, que permiten dicho acceso,


requerirn en ciertos casos que el nmero de puerto est en DX.

Ing. Csar Arellano Salazar 7


Procesadores Digitales. Ing. Sistemas . UNT. .

3. Registros de ndice
Estos registros, de 16 bits, son muy similares a los de propsito general, pero no tienen
todas las capacidades de los mismos; en particular:
No pueden conectarse directamente con los registros de segmentos.

No pueden verse como dos registros de 8 bits (parte alta y parte baja).
Ahora bien, tienen sus propias habilidades. Especficamente, estn diseados para
combinarse con los registros de segmento, ser usados como desplazamientos y as
intervenir en el acceso a memoria. Se les usa, por ello, para el acceso a arreglos o como
apuntadores.
Los 4 registros que se consideran en este grupo son:
SI: Source Index, o Apuntador a la Fuente
Este registro se especializa en el acceso a bytes o words dentro del segmento de datos;
existen instrucciones que lo toman por defecto como el registro que apunta a una
localidad de memoria que se va a leer, por lo cual toma su nombre.
DI: Destination Index, Apuntador al Destino
Este registro se especializa en el acceso a bytes o words dentro del segmento de datos
o el extra; existen instrucciones que lo toman por defecto como el registro que en
combinacin con el ES apunta a una localidad de memoria que se va a escribir, por lo
cual toma su nombre.
BP: Base Pointer, o apuntador a la Base de la Pila.
Este registro es usado para accesar, dentro del segmento de pila, la informacin.
Principalmente nos permite determinar cuando hay un underflow, es decir, cuando se
quiere sacar ms informacin de la pila que la que se ha colocado en ella; y el acceso a
variables locales y parmetros.
SP: Stack Pointer, o apuntador al tope de la Pila.
Este registro tambin est siempre asociado al manejo de la pila. Su funcin especial es
marcar el tope de la pila, y por tanto, indica en qu localidad de memoria se localiza la
informacin de la pila; se incrementa cuando se hace un POP, con lo que apunta al
siguiente elemento en la pila; y se decrementa al hacer un PUSH, con lo que controla el
acceso a la memoria de la pila.

4. ALU: Unidad Aritmtica-Lgica


Este componente, como su nombre indica, contiene la circuitera necesaria para realizar las
diversas operaciones aritmticas y lgicas. Recibe sus operandos por el Bus A, y genera
los resultados regresndolos al mismo bus. Una particularidad que es importante recalcar
es su conexin al registro de banderas, por lo cual todas las operaciones aritmticas y
lgicas, de acuerdo a su resultado, lo alterarn.

Ing. Csar Arellano Salazar 8


Procesadores Digitales. Ing. Sistemas . UNT. .

5. Registro de Banderas
Este es un registro de 16 bits, usados como banderas. Esto quiere decir que cada uno de
los bits seala un evento dentro del procesador; cuando el bit tiene un valor de 0, el evento
no ocurri (falso); y cuando tiene un valor de 1, el evento ocurri (verdadero). Entre las
banderas ms importantes mencionaremos:

ZF: Bandera de resultado 0


Se prende cuando el resultado de la ltima operacin realizada en el ALU fue un 0.

CF: Bandera de carry


Se prende cuando el resultado de la ltima operacin realizada en el ALU
(necesariamente, una suma o resta) gener un carry o un borrow.

OF: Bandera de overflow


Se prende cuando el resultado de la ltima operacin realizada en el ALU excedi la
capacidad del registro donde se almacena (overflow).

SF: Bandera de signo


Se prende cuando el resultado de la ltima operacin realizada en el ALU fue negativo,
segn la representacin de complemento a 2 que mencionamos en clases anteriores.

AF: Bandera de carry auxiliar


Se prende cuando el resultado de la ltima operacin realizada en el ALU gener un
carry cuando estaba a la mitad. Por ejemplo, si sumamos dos nmeros de 16 bits, nos
indicar si la suma de las partes bajas (primeros 8 bits) haba generado carry; si
sumamos dos nmeros de 8 bits, indica si el resultado intermedio despus de sumar los
4 bits menos significativos, gener carry para sumarse a los bits 5.

DF: Bandera de direccin


A diferencia de las anteriores, esta bandera no se prende como resultado del ALU, sino
que el programador la usa para controlar la direccin del acceso mediante apuntadores,
especialmente en las instrucciones de strings.

IF: Bandera de interrupcin


Se prende cuando el procesador es interrumpido, y est ejecutando una rutina de
atencin de interrupcin. Esto evita que el procesador acepte interrupciones mientras
est procesando interrupciones previas, de manera que no se pierda el control del
procesador.

Ing. Csar Arellano Salazar 9


Procesadores Digitales. Ing. Sistemas . UNT. .

6. Bus A
Este bus es el camino por el que viajan los datos dentro de la unidad de ejecucin,
principalmente entre los registros y el ALU.

MANEJO DE MEMORIA: SEGMENTACIN


Cuando Intel extendi el bus de direcciones, de 16 a 20 bits, se encontr con el problema de
cmo asociar los registros con las direcciones de memoria.
Para lograrlo, aplic un concepto ya usado antes en mainframes, conocido como
segmentacin; en este modelo, se usan dos registros para seleccionar una localidad de
memoria:
Registro de Segmento: indica en qu segmento (regin o seccin) de la memoria se
encontrar la localidad deseada.
Registro de Desplazamiento: indica en qu desplazamiento, es decir, direccin relativa
respecto al inicio de la seccin, se encontrar la localidad deseada.

Modos de direccionamiento del 8086/8088:


Estos procesadores tienen 27 modos de direccionamiento (una cantidad bastante ms grande
que los microprocesadores anteriores) o reglas para localizar un operando de una instruccin.
Tres de ellos son comunes a microprocesadores anteriores: direccionamiento inmediato (el
operando es un nmero que se encuentra en la misma instruccin), direccionamiento a
registro (el operando es un registro del microprocesador) y direccionamiento inherente (el
operando est implcito en la instruccin, por ejemplo, en la multiplicacin uno de los operandos
siempre es el acumulador). El resto de los modos sirve para localizar un operando en memoria.
Para facilitar la explicacin de estos modos, se pueden resumir de la siguiente manera:
Deben sumarse cuatro cantidades: 1) direccin de segmento, 2) direccin base, 3) una
cantidad ndice y 4) un desplazamiento.
La direccin de segmento se almacena en el registro de segmento (DS, ES, SS o CS). En la
prxima seccin se indica la forma en que se hace esto. Por ahora basta con saber que el
contenido del registro de segmento se multiplica por 16 antes de utilizarse para obtener la
direccin real. El registro de segmentacin siempre se usa para referenciar a memoria.
La base se almacena en el registro base (BX o BP). El ndice se almacena en el registro ndice
(SI o DI). Cualquiera de estas dos cantidades, la suma de las dos o ninguna, pueden utilizarse
para calcular la direccin real, pero no pueden sumarse dos bases o dos ndices. Los registros
restantes (AX, CX, DX y SP) no pueden utilizarse para direccionamiento indirecto. El
programador puede utilizar tanto la base como el ndice para gestionar ciertas cosas, tales
como matrices de dos dimensiones, o estructuras internas a otras estructuras, esquemas que
se utilizan en las prcticas comunes de programacin. La base y el ndice son variables o
dinmicas, ya que estn almacenadas en registros de la CPU. Es decir, pueden modificarse
fcilmente mientras se ejecuta un programa.
Adems del segmento, base e ndice, se usa un desplazamiento de 16 bits, 8 bits o 0 bits (sin
desplazamiento). sta es una cantidad esttica que se fija al tiempo de ensamblado (paso de

Ing. Csar Arellano Salazar 10


Procesadores Digitales. Ing. Sistemas . UNT. .

cdigo fuente a cdigo de mquina) y no puede cambiarse durante la ejecucin del programa
(a menos que el programa se escriba sobre s mismo, lo que constituye una prctica no
aconsejada).
Todo esto genera los 24 modos de direccionamiento (considerando desplazamientos de 8 o 16
bits)a memoria que se ven a continuacin:
- Registro indirecto: [BX], [DI]. [SI].
- Basado: Desplazamiento [BX], Desplazamiento [BP].
- Indexado: Desplazamiento [SI], Desaplazamiento[DI].
- Basado-indexado: [BX+SI], [BX+DI], [BP+SI], [BX+DI].
- Basado-indexado con desplazamiento: Desplazamiento[BX+SI], Desplazamiento[BX+DI],
Desplazamiento [BP+SI], Desplazamiento [BX+DI]
- Directo: [Desplazamiento].
Aqu desp8 indica desplazamiento de 8 bits y desp16 indica desplazamiento de 16 bits. Otras
combinaciones no estn implementadas en la CPU y generarn error al querer ensamblar, por
ejemplo, ADD CL,[DX+SI].
El ensamblador genera el tipo de desplazamiento ms apropiado (0, 8 16 bits) dependiendo
del valor que tenga la constante: si vale cero se utiliza el primer caso, si vale entre -128 y 127
se utiliza el segundo, y en otro caso se utiliza el tercero. Ntese que [BP] sin desplazamiento
no existe. Al ensamblar una instruccin como, por ejemplo, MOV AL,[BP], se generar un
desplazamiento de 8 bits con valor cero. Esta instruccin ocupa tres bytes, mientras que MOV
AL,[SI] ocupa dos, porque no necesita el desplazamiento.
Estos modos de direccionamiento producen algunos inconvenientes en el 8086/8088. La CPU
gasta tiempo calculando una direccin compuesta de varias cantidades. Principalmente esto se
debe al hecho de que el clculo de direcciones est programado en microcdigo (dentro de la
CROM del sistema de control de la unidad de ejecucin). En las siguientes versiones (a partir
del 80186/80188) estos clculos estn cableados en la mquina y, por lo tanto, cuesta mucho
menos tiempo el realizarlos.
Veamos un ejemplo: MOV AL, ES:[BX+SI+6]. En este caso el operando de la izquierda tiene
direccionamiento a registro mientras que el de la derecha indica una posicin de memoria.
Poniendo valores numricos, supongamos que los valores actuales de los registros sean: ES =
3200h, BX = 200h, SI = 38h. Como se apunt ms arriba la direccin real de memoria ser:
ES * 10h + BX + SI + 6 = 3200h * 10h + 200h + 38h + 6 = 3223Eh

Estructura de memoria de segmentacin: Como se ha mencionado anteriormente, el


8086/8088 usa un esquema ingenioso llamado segmentacin, para acceder correctamente a un
megabyte completo de memoria, con referencias de direcciones de slo 16 bits.
Veamos cmo funciona. Cualquier direccin tiene dos partes, cada una de las cuales es una
cantidad de 16 bits. Una parte es la direccin de segmento y la otra es el offset. A su vez el
offset se compone de varias partes: un desplazamiento (un nmero fijo), una base (almacenada
en el registro base) y un ndice (almacenado en el registro ndice). La direccin de segmento se

Ing. Csar Arellano Salazar 11


Procesadores Digitales. Ing. Sistemas . UNT. .

almacena en uno de los cuatro registros de segmento (CS, DS, ES, SS). El procesador usa
estas dos cantidades de 16 bits para calcular la direccin real de 20 bits, segn la siguiente
frmula:
Direccin real = 16 * (direccin del segmento) + offset
Tal como veamos antes, dado que 16 en decimal es 10 en hexadecimal, multiplicar por ese
valor es lo mismo que correr el nmero hexadecimal a la izquierda una posicin.
Hay dos registros de segmento que tienen usos especiales: el microprocesador utiliza el
registro CS (con el offset almacenado en el puntero de instruccin IP) cada vez que se debe
acceder a un byte de instruccin de programa, mientras que las instrucciones que utilizan la
pila (llamados a procedimientos, retornos, interrupciones y las instrucciones PUSH y POP)
siempre utilizan el registro de segmento SS (con el offset almacenado en el registro puntero de
pila SP). De ah los nombres que toman: CS es el segmento de cdigo mientras que SS es el
registro segmento de pila.
Para acceder a datos en la memoria se puede utilizar cualquiera de los cuatro registros de
segmento, pero uno de ellos provoca que la instruccin ocupe un byte menos de memoria: es
el llamado segmento por defecto, por lo que en lo posible hay que tratar de usar dicho
segmento para direccionar datos. Este segmento es el DS (registro de segmento de datos)
para todos los casos excepto cuando se utiliza el registro base BP. En este caso el segmento
por defecto es SS.
Si se utiliza otro registro, el ensamblador genera un byte de prefijo correspondiente al
segmento antes de la instruccin: CS -> 2Eh, DS -> 3Eh, ES -> 26h y SS -> 36h. El uso de
estos diferentes segmentos significa que hay reas de trabajo separadas para el programa, pila
y los datos. Cada rea tiene un tamao mximo de 64 KBytes. Dado que hay cuatro registros
de segmento, uno de programa (CS), uno de pila (SS) y dos de datos (segmento de datos DS y
segmento extra ES) el rea de trabajo puede llegar a 4 * 64 KB = 256 KB en un momento dado
suponiendo que las reas no se superponen.
Si el programa y los datos ocupan menos de 64 KB, lo que se hace es fijar los registros de
segmento al principio del programa y luego se utilizan diferentes offsets para acceder a
distintas posiciones de memoria. En caso contrario necesariamente debern cambiarse los
registros de segmento en la parte del programa que lo requiera. Los registros de segmento DS,
ES y SS se cargan mediante las instrucciones MOV y POP, mientras que CS se carga
mediante transferencias de control (saltos, llamadas, retornos, interrupciones) intersegmento.

Ing. Csar Arellano Salazar 12

También podría gustarte