You are on page 1of 8

MODOS DE DIRECCIONAMIENTO Y FORMATOS

Introduccin
El campo de operacin de una instruccin especifica la operacin que se debe realizar. Esta debe ser
ejecutada sobre algunos datos almacenados en registros del computador o en palabras de memoria,
es decir, sobre los operandos. El modo de direccionamiento especifica la forma de interpretar la
informacin contenida en cada campo de operando para localizar, en base a esta informacin, el
operando.
Los ordenadores utilizan tcnicas de direccionamiento con los siguientes fines:
Dar versatilidad de programacin al usuario proporcionando facilidades tales como ndices,
direccionamientos indirectos, etc., esta versatilidad nos servir para manejar estructuras de
datos complejas como vectores, matrices, etc.
Reducir el nmero de bits del campo de operando.
Al usuario que tiene poca experiencia, la variedad de modos de direccionamiento en un ordenador
le puede parecer excesivamente complicada. Sin embargo, la disponibilidad de diferentes esquemas
de direccionamiento le da al programador experimentado flexibilidad para escribir programas que
son ms eficientes en cuanto a nmero de instrucciones y tiempo de ejecucin.
Es tal la importancia de los modos de direccionamiento que la potencia de una mquina se mide
tanto por su repertorio de instrucciones como por la variedad de modos de direccionamiento que es
capaz de admitir.
Definicin: Los modos de direccionamiento de un ordenador son las diferentes formas de
transformacin del campo de operando de la instruccin en la direccin del operando.
En esta definicin el trmino direccin debe interpretarse en su sentido ms general de localizacin
del operando, en cualquier lugar, y no en el sentido ms estricto de direccin de memoria. A la
direccin obtenida de las transformaciones anteriores la llamaremos direccin efectiva. Esta
direccin, en el caso de tratarse de una direccin de memoria, es la que se cargar en el M.A.R. o
registro de direccin de memoria.
Llamando x a la informacin del campo de operando y Aef. a la direccin efectiva, la funcin f que
a partir de x nos da Aef. constituir el modo de direccionamiento empleado:
Aef. = f(x)
En la evaluacin de la funcin f pueden intervenir otras informaciones adems de la informacin
presente en el campo de operando de la instruccin. Estas informaciones pueden residir en registros
del procesador o en memoria.
La especificacin del modo de direccionamiento puede ir en el cdigo de operacin o en el campo
de cada operando. Normalmente se codifica en el cdigo de operacin si el nmero de modos es
pequeo, en caso contrario se codifica con cada operando, esta ltima forma de codificacin
favorece la ortogonalidad.
Modos de direccionamiento ms usuales
En los prrafos siguientes se irn describiendo los modos de direccionamiento ms frecuentes. La
mayora de estos modos son comunes a muchas mquinas, sin embargo, hay otros que slo se usan
en determinados procesadores.
Direccionamiento implcito
En este modo, llamado tambin inherente, el operando se especifica en la misma definicin de la
instruccin. El modo implcito se usa para hacer referencia a operandos de dos tipos:
- Registros: En el caso de que el cdigo de operacin se refiera en particular a un registro.
- Operandos en la pila: En el caso de que la operacin se realice siempre sobre el dato situado en
la cima de pila.
El primer caso es tpico de las organizaciones de un solo acumulador. Generalmente en un
ordenador de este tipo todas las instrucciones que actan sobre el acumulador utilizan
direccionamiento implcito.
En el segundo caso estn la mayora de las instrucciones de los ordenadores con organizacin de
pila. Estas operaciones llevan implcitos los operandos que son los elementos de la cima de pila.
Esto se debe a que en este tipo de mquinas la mayora de las operaciones no tienen campos de
direccin. Tambin estn en este caso las instrucciones PUSH y POP de la mayora de los
ordenadores cuyo operando implcito tambin es, como en el caso anterior, la cima de pila.
Direccionamiento inmediato
En este modo es el operando el que figura en la instruccin no su direccin. En otras palabras el
campo de operando contiene l mismo, sin transformacin alguna, la informacin sobre la que hay
que operar. Este modo es til para inicializar registros o palabras de memoria con un valor
constante.
El operando es parte de la instruccin
Operando = campo direccin
ejemplo. ADD 5
o Suma 5 al contenido del acumulador
o 5 es operando
No hay referencia a memoria para extraer datos
Rpido
Rango limitado


Direccionamiento directo por registro
Se mencion anteriormente que el campo de direccin de una instruccin puede especificar una
palabra de memoria o un registro M procesador. Cuando se da este ltimo caso se dice que el
operando est especificado con direccionamiento directo por registro, en tal caso, el operando reside
en uno de los registros del procesador que es seleccionado por un campo de registro de k bits en la
instruccin. Un campo de k bits puede especificar uno de 2k registros. Este modo es tpico de los
ordenadores con organizacin de registros de uso general.
Las ventajas de este modo son:
- El acceso a los registros es muy rpido, por tanto el direccionamiento por registro debe usarse en
las variables que se usen con ms frecuencia para evitar accesos a memoria que son ms lentos, un
ejemplo muy tpico del uso de este direccionamiento son los ndices de los bucles.
- El nmero de bits necesarios para especificar un registro es mucho ms pequeo que el necesario
para especificar una direccin de memoria, esto es debido a que el nmero de registros del
procesador es muy pequeo comparado con el nmero de direcciones de memoria. Sin embargo,
hay que tener en cuenta que en los ordenadores modernos el nmero de registros ha aumentado
considerablemente.
El operando est en el registro nombrado en el campo direccin
EA = R
Nmero limitado de registros
Se requiere un campo de direcciones muy pequeo
o Instrucciones ms cortas
o Extraccin de instrucciones ms rpida
No se hace acceso a memoria
La ejecucin es muy rpida
Espacio de direcciones muy limitado
Muchos registros ayudan al rendimiento
o Requiere una buena programacin en ensamblador o el desarrollo de un buen
compilador


Direccionamiento directo (o absoluto)
Este es el modo de direccionamiento ms sencillo. El campo de direccin no necesita
transformacin alguna para dar la direccin efectiva, es decir la funcin que transforma el campo de
operando en la direccin efectiva es la identidad. Esto significa que el campo de operando es ya la
direccin efectiva.
Este direccionamiento slo se usa en ordenadores pequeos en que el programa siempre se sita en
la misma zona de memoria ya que dificulta la relocalizacin de los programas, es decir que el
cdigo de los programas no dependa de su situacin en memoria. Ordinariamente este modo slo se
usa para acceder a direcciones del sistema que normalmente se refieren a operaciones de entrada y
salida ya que estas direcciones no dependen del programa.
El campo de direcciones contiene la direccin del operando
La direccin efectiva (EA) = campo de direccin (A)
ejemplo. ADD A
o Suma el contenido de la celda A al acumulador
o Buscar en memoria la direccin A para el operando
Una sola referencia a memoria para accesar datos
No se hacen clculos adicionales para trabajar la direccin efectiva
Espacio de direcciones limitado



Direccionamiento indirecto
En este modo el campo de operando de la instruccin indica la localizacin de la direccin efectiva
del operando. El modo de direccionamiento indirecto puede adquirir diferentes formas segn cul
sea el lugar donde se encuentre la direccin del operando. En general, todos los modos de
direccionamiento tienen su versin indirecta que aade un eslabn ms a la cadena del
direccionamiento. Por ejemplo existe el direccionamiento indirecto por registro, en el que el registro
especificado contiene la direccin del operando, no el operando mismo.
Este direccionamiento es til cuando se trabaja con punteros ya que los punteros son variables que
contienen las direcciones de los operandos, no los operandos mismos.
Celdas de memoria apuntadas por un campo de direccin contiene la direccin (apuntador)
al operando
EA = (A)
Busca en A, encuentra la direccin (A) y ah busca el operando
Ejemplo. ADD (A)
o Suma el contenido de una celda apuntada por el contenido de A al acumulador
Varios accesos a memoria para encontrar el operando
Ms lento


Direccionamiento relativo
Hay algunos modos de direccionamiento en que se hace uso de una propiedad muy generalizada de
los programas denominada localidad de referencia, esta propiedad consiste en que las direcciones
referenciadas por los programas no suelen alejarse mucho unas de otras y, por tanto, suelen estar
concentradas en una parte de la memoria. Estas consideraciones nos llevan a la conclusin de que
no es necesario utilizar todos los bits de la direccin de memoria en el campo de operando, basta
utilizar los bits precisos para cubrir la parte de memoria donde estn incluidas las direcciones a las
que el programa hace referencia. Esto puede hacerse tomando corno referencia un punto de la
memoria y tomando como campo de operando la diferencia entre ese punto y la direccin efectiva
del operando. La direccin que se toma como punto de referencia puede residir en un registro de la
CPU y, por tanto, sumando el contenido de ese registro con el campo de operando obtendremos la
direccin efectiva. Hay varios direccionamientos basados en esta tcnica que reciben diferentes
nombres dependiendo de cul sea el registro en el que radica la direccin tomada como referencia.
Todos ellos podran catalogarse como direccionamientos relativos a un registro.
El direccionamiento denominado habitualmente relativo toma como valor de referencia el registro
contador de programa. Cuando se usa este modo de direccionamiento, el campo de operando
consiste en un nmero (normalmente con signo) que expresa la diferencia entre la direccin del dato
y la direccin siguiente a la instruccin en curso (contenida en el contador de programa). Si el
campo de operando, llamado en este caso desplazamiento u offset, es positivo el operando residir
en una direccin posterior a la de la instruccin y si es negativo, en una direccin anterior.
Este modo de direccionamiento es usado muy frecuentemente en programas cuyo cdigo deba ser
independiente de la posicin de memoria donde estn situados (programas relocalizables) ya que el
desplazamiento es independiente de la localizacin del programa. Tambin se usa con mucha
frecuencia en instrucciones de bifurcacin.

Direccionamiento por base y desplazamiento
Este modo de direccionamiento se fundamenta en la propiedad de localidad de referencia
mencionada anteriormente. La direccin que se toma como referencia de la zona de memoria en la
que estn localizados los datos se deposita en un registro denominado registro base y el campo de
operando indica la diferencia entre el registro base y la direccin M operando. Normalmente se
toma como referencia (registro base) la direccin de comienzo de la zona de memoria ocupada por
un programa. Por tanto, la direccin efectiva del operando se calcular sumando el contenido del
registro base con el campo de operando.
Este modo de direccionamiento se usa en ordenadores que pueden mantener en memoria varios
programas ya que, de esta forma, los diferentes registros base pueden contener las direcciones de
comienzo de cada uno de los programas. Esto es muy til porque facilita la relocalizacin de los
programas para situar el programa en una zona de memoria diferente bastar con cambiar el
contenido de su registro base, no ser necesario cambiar ninguno de los campos de operando.
EA = A + (R)
El campo de direcciones tiene dos valores
o A = valor base
o R = registro que tiene el desplazamiento o viceversa

Direccionamiento indexado
En este modo de direccionamiento, la direccin del operando tambin se calcula sumando un
registro de la CPU al campo de operando, este registro es un registro especfico para este uso
llamado registro ndice. En los ordenadores con organizacin de registros generales, el registro
ndice puede ser cualquiera de los registros de la CPU. En los ordenadores en que el contador de
programa es considerado como un registro de uso general, el modo relativo es un caso particular del
direccionamiento indexado. A la cantidad que hay que sumar al registro ndice para conseguir la
direccin del operando tambin se le llama desplazamiento u offset. Este modo de direccionamiento
es especialmente til para el direccionamiento de vectores y matrices en bucles ya que, si se quieren
direccionar elementos consecutivos del vector o matriz, basta mantener en el desplazamiento la
direccin del primer elemento e ir incrementando el registro ndice. Tambin sirve para acceder de
forma relativa a elementos de vectores cercanos a uno dado, para ello, se carga la direccin del
elemento de referencia en el registro ndice y despus se accede mediante direccionamiento
indexado, con el desplazamiento adecuado, al anterior, al siguiente, etc., esto mismo tambin es
aplicable a pilas, en que, en ocasiones, hay que acceder a datos cercanos, por encima o por debajo,
al dato sealado por algn apuntador. Una consecuencia de todo esto es una modalidad de
direccionamiento indexado de que disponen algunos ordenadores, denominada autoindexacin, que
hace que el registro ndice sea incrementado o decrementado en el tamao del operando antes o
despus de acceder al mismo. Los ordenadores que poseen autoindexacin incorporan los modos de
direccionamiento descritos en los dos apartados siguientes. En algunos ordenadores existen
variantes del direccionamiento indexado en que se obtiene la direccin del operando sumando el
contenido de varios registros con el desplazamiento, esto puede servir para especificar el comienzo
de un vector mediante un desplazamiento respecto a un registro y el elemento del vector mediante
un registro ndice.


Direccionamiento autoincremental o postincremental
En este modo, la direccin del operando se encuentra en un registro y ste es incrementado, despus
de acceder al operando, en el tamao del mismo.
Este modo es til para manejar vectores y matrices como se vea en el apartado anterior. Tambin se
puede utilizar para extraer datos de pilas (que crezcan hacia direcciones bajas) ya que, si el registro
sobre el que se aplica este modo es el apuntador de pila, despus de la operacin el apuntador
sealar al siguiente elemento de la pila.

Direccionamiento autodecremental o predecremental
En este modo para obtener la direccin del operando hay que decrementar un registro en el tamao
del operando; el nuevo contenido del registro despus de efectuar esa operacin, es la direccin del
operando.
Para finalizar, veamos un resumen de las utilidades de los modos de direccionamiento usados con
ms frecuencia.

You might also like