Está en la página 1de 16

Direccionamiento

Los llamados modos de direccionamiento son las diferentes maneras de especificar en informtica un operando dentro de una instruccin (lenguaje ensamblador). Cmo se especifican e interpretan las direcciones de memoria segn las instrucciones. Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de un operando mediante el uso de la informacin contenida en registros y / o constantes contenida dentro de una instruccin de la m!uina o en otra parte.

Contenido

" #Cuntos modos de direccionamiento e$isten% & 'dvertencia ( )ipos de *ireccionamiento


o o o o o o o o o o o o o o o

(." +mpl,cito(.& +nmediato(.( *irecto(.. +ndirecto(./ 'bsoluto(.0 *e registro(.1 +ndirecto mediante registros(.2 *e despla3amiento(.4 *e pila(."5 6especto a un registro base(."" 6especto a un registro ,ndice(."& 6especto al contador de programa(."( +nde$ado con autoincremento/autodecremento(.". +nstruccin de salto con direccionamiento absoluto(."/ +nstruccin de salto con direccionamiento relativo-

. *ireccionamiento paginado y direccionamiento segmentado / 'lgunos modos de direccionamiento obsoletos

0 *ireccionamiento absoluto vs *ireccionamiento relativo 1 7odos de direccionamiento secuencial


o o o o

1." 8jecucin secuencial 1.& C9U:; !ue no utili3an la ejecucin secuencial 1.( 8jecucin condicional 1.. ;alto

2 7odos simples de direccionamiento de datos


o o

2." 6egistro 2.& <ase mas despla3amiento y variaciones

Cuntos modos de direccionamiento existen?


*iferentes ar!uitecturas de computadores var,an muc=o en cuanto al nmero de modos de direccionamiento !ue ofrecen desde el =ard>are. 8liminar los modos de direccionamiento ms complejos podr,a presentar una serie de beneficios aun!ue podr,a re!uerir de instrucciones adicionales e incluso de otro registro. ;e =a comprobado !ue el dise?o de C9Us segmentadas es muc=o ms fcil si los nicos modos de direccionamiento !ue proporcionan son simples. La mayor,a de las m!uinas 6+;C disponen de apenas cinco modos de direccionamiento simple mientras !ue otras m!uinas C+;C tales como el *8C @'A tienen ms de una docena de modos de direccionamiento algunos de ellos demasiado complejos. 8l mainframe +<7 ;ystem/(05 dispon,a nicamente de tres modos de direccionamientoB algunos ms fueron a?adidos posteriormente para el ;ystem/(45. Cuando e$isten solo unos cuantos modos estos van codificados directamente dentro de la propia instruccin (Un ejemplo lo podemos encontrar en el +<7/(45 y en la mayor,a de los 6+;C). ;in embargo cuando =ay demasiados modos a menudo suele reservarse un campo espec,fico en la propia instruccin para especificar dic=o modo de direccionamiento. 8l *8C @'A permit,a mltiples operandos en memoria en la mayor,a de sus instrucciones y reservaba los primeros bits de cada operando para indicar el modo de direccionamiento de ese operando en particular. +ncluso en computadores con muc=os modos de direccionamiento algunas medidas reali3adas a programas indican !ue los modos ms simples representan cerca del 45C o ms de todos los modos de direccionamiento utili3ados. *ado !ue la mayor,a de estas

medidas son obtenidas a partir de cdigos de alto nivel generados a partir de compiladores nos da una idea de las limitaciones !ue presentan los compiladores !ue se utili3an.

Advertencia
)enga en cuenta !ue no e$iste una forma generalmente aceptada de nombrar a los distintos modos de direccionamiento. 8n particular los distintos autores y fabricantes de e!uipos pueden dar nombres diferentes para el modo de =acer frente al mismo o los mismos nombres a los diferentes modos de direccionamiento. 'dems un modo de direccionamiento !ue en una determinada ar!uitectura se trata como un modo de direccionamiento puede representar la funcionalidad !ue en otra ar!uitectura est cubierto por dos o ms modos de direccionamiento. 8l tDrmino Emodo de direccionamientoE est sujeta a interpretaciones diferentes- o bien Edireccin de memoria de modo de clculoE o Emodo de acceso operandoE. <ajo las instrucciones de la primera interpretacin !ue no puede leer o escribir de la memoria a la memoria (como Ea?adir literal de registroE) se considerar !ue no tienen un Emodo de direccionamientoE. La segunda interpretacin permite para las m!uinas tales como @'A !ue utili3an bits de modo operando para permitir un operando literal.;lo la primera interpretacin se aplica a las instrucciones tales como Ecarga efectiva de direccinE. Las instrucciones !ue aparecen a continuacin son meramente representativas a fin de ilustrar los modos de direccionamiento y no necesariamente reflejan los mnemnicos utili3ado por cual!uier e!uipo en particular.

Tipos de Direccionamiento
Implcito:
8n este modo de direccionamiento no es necesario poner ninguna direccin de forma e$pl,cita ya !ue en el propio cdigo de operacin se conoce la direccin del (de los) operando(s) al (a los) !ue se desea acceder o con el (los) !ue se !uiere operar. ;upongamos una ar!uitectura de pila las operaciones aritmDticas no re!uieren direccionamiento e$pl,cito por lo !ue se ponen comoF add F sub ... #9or !uD% 9or!ue cuando se opera con dos datos en esta ar!uitectura se sabe !ue son los dos elementos del tope de la pila-

8jemplo de una pila " & ( . / 0 GF pila top() es " ntop() es & donde top() representa el tope de la pila y ntop() el siguiente al tope de la pila y son estos argumentos con los !ue se opera al llamar a una orden en concreto. Htro ejemplo de este tipo de direccionamiento lo podemos encontrar en la ar!uitectura de acumulador ('C) donde siempre =ay un parmetro impl,cito y este es el 'C. 9ara finali3ar y dejar este modo de direccionamiento generali3ado para las ar!uitecturas ms usuales remarcamos !ue tambiDn podemos encontrarlo en la ar!uitectura con registros de prposito general por ejemplo con rdenes como setc !ue pone a " el registro c (acarreo).

Inmediato:
En la instruccin est incluido directamente el operando.

8n este modo el operando es especificado en la instruccin misma. 8n otras palabras una instruccin de modo inmediato tiene un campo de operando en ve3 de un campo de direccin. 8l campo del operando contiene el operando actual !ue se debe utili3ar en conjunto con la operacin especificada en la instruccin. Las instrucciones de modo inmediato son tiles para iniciali3ar los registros en un valor constante. Cuando el campo de direccin especifica un registro del procesador la instruccin se dice !ue est en el modo de registro.

ejemplo-7H@ ' I"1J

Directo:
8l campo de operando en la instruccin contiene la direccin en memoria donde se encuentra el operando.

8n este modo la direccin efectiva es igual a la parte de direccin de la instruccin. 8l operando reside en la memoria y su direccin es dada directamente por el campo de direccin de la instruccin. 8n una instruccin de tipo ramificacin el campo de direccin especifica la direccin de la rama actual. Con este tipo de direccionamiento la direccin efectiva es contenida en la misma instruccin tal como los valores de datos inmediatos !ue son contenidos en la instruccin. Un procesador de "0 bits suma la direccin efectiva al contenido del segmento de datos previamente despla3ado en . bits para producir la direccin f,sica del operando.

ejemplo-7H@ ' "1J

Indirecto:
8l campo de operando contiene una direccin de memoria en la !ue se encuentra la direccin efectiva del operando.

ejemplo-7H@ ' K"1J

Absoluto:
8l campo de operando contiene una direccin en memoria en la !ue se encuentra la instruccin.

De registro:
;irve para especificar operandos !ue estn en registros.

ejemplo-7H@ ' 65

Indirecto mediante registros:


El campo de operando de la instruccin contiene un identificador de registro en el que se encuentra la direccin efectiva del operando.

8n este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva se almacena en la memoria. 8l control locali3a la instruccin de la memoria y utili3a su parte de direccin para accesar la memoria de nuevo para leer una direccin efectiva. Unos pocos modos de direccionamiento re!uieren !ue el campo de direccin de la instruccin sea sumado al control de un registro especificado en el procesador. La direccin efectiva en este modo se obtiene del siguiente clculo*ir. efectiva L *ir. de la parte de la instruccin M Contenido del registro del procesador

ejemplo-7H@ ' K65

De desplazamiento:
Combina el modo directo e indirecto mediante registros

De pila:
;e utili3a cuando el operando est en memoria y en la cabecera de la pila. 8ste direccionamiento se basa en las estructuras denominadas 9ila(tipo L+NH) las cuales estn marcados por el fondo de la pila y el puntero de pila (O;9) 8l puntero de pila apunta a la ltima posicin ocupada. 's, como puntero de direccionamiento usaremos el ;9. 8l despla3amiento ms el valor del ;9 nos dar la direccin del objeto al !ue !ueramos =acer referencia. 8n ocasiones si no e$iste C. de despla3amiento solo se trabajara con la cima de la pila. 8ste tipo de direccionamiento nos aporta fle$ibilidad pero por el contrario es muc=o ms complejo !ue otros tipos estudiados ms arriba.

Respecto a un registro base:


8ste modo de direccionamiento es muy usado por los ensambladores cuando se llaman a las funciones (para acceder a los parmetros apilados en la pila valga la redundancia). Consiste al igual !ue el indirecto a travDs de registro en calcular la 8' (8ffective 'ddress) como la suma del contenido del registro base y un cierto despla3amiento (u offset) !ue

siempre ser positivo. 8sta tDcnica permite cdigos reentrantes y acceder de forma fcil y rpida a posiciones cercanas de memoria. 8' L 6<Moffset 6< L registro base offset L despla3amiento FP 6< se comporta como una direccin de memoria a la !ue se le sumar el despla3amiento

Respecto a un registro ndice:


8s similar al anterior lo nico !ue es el contenido del registro ,ndice el !ue indica el despla3amiento !ue se produce a partir de una direccin de memoria !ue se pasa tambiDn como argumento a la orden !ue utili3a este modo de direccionamiento. 'un!ue en esencia son dos modos e!uivalentes. La 8' se calcula como la suma del contenido del registro ,ndice y una direccin de memoria8' L 6+M*7 6+ L registro ,ndice *7 L direccin de memoria FP 6+ se comporta como un offset LLL Indexado respecto a una base:LLL ;e trata de una combinacin de los dos anteriores y consiste en calcular la direccin efectiva como8' L 6+M6<M*7 FP Las siglas significan lo mismo !ue en el caso anterior

Respecto al contador de programa:


Consiste en direccin una posicin de memoria usando como registro base al contador de programa (9C) el funcionamiento es anlogo al direccionamiento respecto a registro base con la salvedad de !ue en este caso el offset puede ser tambiDn negativo.

Indexado con autoincremento autodecremento:


Es un modo de direccionamiento anlogo al indexado, explicado anteriormente. La nica diferencia es que permite un incremento o decremento de la direccin final o el registro ndice segn los siguientes casos:

FP +nde$ado con autopreincremento- +ncrementa el registro ,ndice primero (se incrementa un valor segn el tama?o del objeto direccionado) y luego calcula la 8' al igual !ue el direccionamiento inde$ado. FP +nde$ado con autoposincremento- Calcula la direccin efectiva y despuDs incrementa esta. FP +nde$ado con autopredecremento- *ecrementa el registro ,ndice y despuDs calcula la direccin efectiva. FP +nde$ado con autoposdecremento- Calcula la direccin efectica y despuDs decrementa esta.

Instrucci!n de salto con direccionamiento absoluto:


Consiste en cargar en el PC el valor que se especifica en la orden de salto, p.e:

jmp 5$'< FFFFP Carga 5$'< en 9C

Instrucci!n de salto con direccionamiento relativo:


8s parecida a la especificada anteriormente la diferencia es !ue el salto es relativo al 9C pongamos un ejemplo;upongamos !ue 9C vale L 5$5' si nosotros interpretamos la instruccin jr M5( saltaremos tres posiciones posteriores a 9C (tambiDn podr,a ser F5( y ser,an posiciones anteriores). 9ero QcuidadoR si esa instruccin estaba en la posicin 5$5' la direccin de 9C a incrementar ser la inmediatamente posterior (ya !ue 9C se incrementa automticamente despuDs de leer la instruccin) por lo !ue !uedar,a9C L 5$5< FFFP nuevo 9C L 5$5<M5$5( L 5$58 con lo !ue el 9C !uedar,a como 5$58.

Direccionamiento paginado " direccionamiento segmentado

#aginado: La memoria se encuentra actualmente dividida en pginas(blo!ues de igual longitud).

8n este caso para obtener las direcciones necesitamos- +ndicador de pgina (+9)- en un registro espec,fico o de propsito general de la m!uina. *irrecin de la palabra(*9)- en el campo C* de la instruccin. 's, concatenando ambas partes obtenemos la direccin completa.

$egmentado: 8n este caso la memoria se divide en porciones como en el tipo anterior pero en este caso los tama?os son variables. 's, para acceder a ellos se tiene una tabla de segmentos !ue contiene la direccin del comien3o y dle final de cada segmento en memoria. Usar este tipo de direccionamiento tiene como ventajas !ue se puede definir segmentos de tama?o arbitrario. 9or otro lado esta misma ventaja el fraccionamiento de memoria es uno de sus problemas. 'mbos modos de direccionamiento facilitan la multiprogramacin gracias a la tDcnica de la memoria virtual !ue permite !ue un proceso no tenga !ue estar cargado ,ntegramente en memoria si no !ue se cargan distintas pginas del mismo (o segmentos). ;i se intenta cargar una pgina o segmento !ue no se encuentra en la memoria principal se produce una e$cepcin de falta de pgina o segmento y se accede a la memoria para cargar la informacin re!uerida en la memoria principal.

Algunos modos de direccionamiento obsoletos


8stos modos fueron usados durante "4/5F"425 y ya no estn disponibles en los computadores modernos. 8sta lista no es completa puesto !ue =ubo otros muc=os modos de direccionamiento ms algunos ms interesantes y peculiares.

Indirecto de multinivel de memoria

;i la longitd de palabra era mayor !ue la direccin la palabra era referenciada por este direccionamiento indirecto de multinivel !ue pod,a tener una EbanderaE para indicar un ciclo indirecto de memoria. 8s necesario tener cuidado para asegurar !ue una cadena de direcciones indirectas no se refiera a ella misma si lo =iciera se llegar,a a un bucle infinito mientras trata de encontrar la direccin. 8l *8C 9*9F"5 con "2 bits de direccionamiento y palabras de (0 bits permit,an este modo de direccionamiento con la posibilidad de usar un registro principal para cada fase.

Indirecto de memoria con autoincremento

8n algunos minicomputadores =ab,a normalmente "0 locali3aciones especiales de memoria. Cuando se acced,a a memoria la direccin era automticamente incrementada y decrementada despuDs de su uso. 8sto =ac,a muy fcil acceder a memoria en bucles sin usar ningn registro.

%#gina cero

La familia 7otorola 0255 y la 7H; )ec=nology 0/5& fueron unas familias de pobres microprocesadores C+;C. Las instrucciones aritmDticas y lgicas estaban casi todas =ec=as en contra de los valores de memoria. Como resultado las instrucciones necesitaban incluir una locali3acin de dos bytes en memoria. Los dise?adores de estos procesadores inclu,an un EremedioE llamado direccionamiento Epgina ceroE. Los &/0 bytes iniciales de memoria pod,an ser accedidos usando un byte o una direccin de memoria inde$ada. 8sto reduc,a el tiempo de ejecucin de las instrucciones un ciclo de reloj. 'lmacenando datos en esta EregionE los programas pod,an ser ms pe!ue?os y ms rpidos. Como resultado la Epgina ceroE fue usada de forma parec,a a un arc=ivo de registro. 8n muc=os sistemas sin embargo provoc una gran utili3acin del rea de memoria de la pgina cero por el sistema operativo y por los usuarios de programas. 8sto limit su uso desde !ue el espacio libre fue limitado.

&ndice $iguiente Instrucci!n

8l 8lliott /5( el 8lliott 25( y el 'pollo Suidance Computer slo se utili3a direccionamiento absoluto y no ten,a ningn registro de ,ndice. 9or lo tanto saltos indirectos o salta a travDs de registros no se admiten en el conjunto de instrucciones. 8n su lugar puede ser instruido para agregar el contenido de la palabra de la memoria actual a la siguiente instruccin. 'dicin de un valor pe!ue?o a la siguiente instruccin a ejecutar podr,a por ejemplo cambiar un TU79 5 en un TU79 &5 creando as, el efecto de un salto inde$ado. )enga en cuenta !ue la instruccin se modifica sobre la marc=a y se mantiene sin cambios en la memoria es decir no es autoFmodificar el cdigo.

Direccionamiento absoluto vs Direccionamiento relativo

8n esta seccin vamos a resaltar las diferencias de estos dos tDcnicas de direccionamiento y aclarar las ventajas y desventajas !ue cada una de ellas conlleva.

Direccionamiento absoluto: Consiste en direccionar una posicin de memoria de forma directa esto es !ue la direccin =ace referencia directamente a dic=a posicin sin tener !ue reali3ar clculos adicionales para la 8'. Direccionamiento relativo: Cuando para direccionar una posicin de memoria se =ace referencia a otra sobre la cual se especifica un incremento o decremento es decir se re!uiere otro dato para el clculo de la direccin efectiva.

Seneralmente se usan los direccionamientos relativos ya !ue al ejecutar un cierto programa se cumple la pro$imidad espacial y temporal lo !ue implica !ue datos !ue ya =an sido usados o !ue se encuentran en posiciones cercanas al 9C tendrn una alta probabilidad de ser referenciados pr$imamente. Htras de las ventajas del direccionamiento relativo es !ue permite los cdigos reentrantes y cambiar ciertas direcciones sin tener !ue volver a compilar el programa. 8s tambiDn til por!ue nunca se sabe en !uD posicin de memoria se cargar un determinado programa. 9or ltimo reduce el nmero de bits para especificar las direcciones y se facilita la referencia a datos del programa a travDs de los registros base. 8l problema viene cuando !ueremos referenciar un dato al !ue no podemos acceder de forma relativa (p.e por!ue los registros base no puedan alcan3ar dic=a posicin aun con el incremento ms grande !ue podamos darle) en este caso se re!uiere el direccionamiento absoluto !ue s, es capa3 de acceder por lo general a cual!uier direccin de memoria.

'odos de direccionamiento secuencial


()ecuci!n secuencial
!!!!!! " nop " e#ecuta la siguiente instruccin !!!!!! $%ireccin Efectiva PC & direccin de la instruccin siguiente'

8l C9U despues de ejecutar una instruccin secuencial inmediatamente ejecuta la instrucin siguiente. La ejecucin secuencial no esta considerada un modo de direccionamiento en algunos computadores. La mayor,a de instrucciones en la mayor,a de las ar!uitecturas de C9U son instrucciones secuenciales. *ebido a !ue la mayor,a de las instrucciones son de tipo secuencial los dise?adores de la C9U a menudo a?aden caracter,sticas !ue deliberadamente sacrifican el rendimiento por un lado y por otro las instrucciones de la rama de instrucciones a fin de !ue estas instrucciones secuenciales corran ms rpido.

Las ramas condicionales cargan en el 9C varios resultados posibles muc=as de las ar!uitecturas C9U usan algn otro modo de direccionamiento para la EtomaE de rama y la ejecucin secuencial para la Eno tomaE de rama. 7uc=as caracter,sticas de las C9U:s modernas mantienen la ilusin de !ue cada instruccin termina antes de !ue la siguiente comien3e dando resultados finales iguales a pesar de !ue no es e$actamente lo !ue sucede internamente.

C#*+$ ,ue no utilizan la e)ecuci!n secuencial


Las C9U:s !ue no utili3an la ejecucin secuencial con un contador de programa son e$tremadamente raras. 8n algunos procesadores en cada instruccin siempre se especifica la direccin de la instruccin siguiente. 8sta C9U tiene un puntero de instruccin !ue sostiene la direccin especificada pero no tiene un programa completo mostrado. Las C9U:s incluyen algunas cajas de ritmos de la memoria la m!uina ;8C* y el 6)A (&9. Htras ar!uitecturas de computacin van muc=o ms all trantando de evitar el cuello de botella de von Ueumann usando una variedad de alternativas para el contador de programa.

()ecuci!n condicional
'lgunas ar!uitecturas de ordenador (por ejemplo '67) tienen instrucciones condicionales !ue en algunos casos puede obviar la nacesidad de saltos condicionales y evitar el lavado de la tuber,a de la instruccin. Una instruccin tal como EcompararE see utili3a para establecer un cdigo de condicin y las instrucciones posteriores incluyen una prueba de !ue el cdigo de condicin para ver si se cumplen o se ignoran.

$alto
!!!!!! !!!!! !!!!! "s(ipE)" reg*" reg+" ,alta a la siguiente instruccin si reg*&reg+ !!!!!! !!!!! !!!!! $E- PC & direccin de la instruccin siguiente *'

;altar abordar puede ser considerado como un tipo especial de modo de direccionamiento relativo al 9C con un fijo EunaE compensacin. 'l igual !ue en 9C direccionamiento relativo algunas C9U:s tienen versiones de este modo de direccionamiento !ue slo se refieren a un registro ( Esaltar si 68S"LL5E) o no =ay registros de manera impl,cita referente a algunos bits previamente establecidos en el registro del estado. Htras C9U:s tienen una versin !ue selecciona un byte espec,fico de prueba (Esaltar si el bit 1 de reg"& es 5E). ' diferencia de todas las ramas condicinales un EsaltoE no necesita instrucciones para vaciar la tuber,a de la instruccin a pesar de !ue puede necesitarlas para =acer !ue la siguiente instruccin sea ignorada.

'odos simples de direccionamiento de datos


Registro
!!!!!! !!!!! !!!!! !!!!! " mul " reg*" reg+" reg." !!!!!! !!!!! !!!!! !!!!! reg* :& reg+ / reg.0

8ste Emodo de direccionamientoE no tiene una direccin efectiva y no se considera como un modo de direccin en algunas computadoras. 8n este ejemplo todos los operandos estn en registros y el resultado se coloca en un registro.

-ase mas desplazamiento " variaciones


7uc=as veces nos referimos a Dl como Ebase ms despla3amientoE
!!!!!! !!!!! !!!!! !!!!!!!!!!!!!!!! " load " reg " 1ase" offset " reg :& 2-341ase offset5 !!!!!! !!!!! !!!!! !!!!!!!!!!!!!!!! $La direccin efectiva & despla6amiento contenidos de la 1ase especificada del registro'

8l despla3amiento suele ser un valor con signo de "0 bits (aun!ue la 25(20 se e$pandi a (& bits). ;i el despla3amiento es cero esto se convierte en un ejemplo de registro indirecto frente la direccin efectiva es slo el valor en el registro de base. 8n muc=as m!uinas 6+;C el registro 5 se fija en el valor cero. ;i el registro 5 se utili3a como el registro de base esto se convierte en un ejemplo de direccionamiento absoluto. ;in embargo slo una pe!ue?a parte de la memoria se puede acceder (0. Vilobytes si el despla3amiento es de "0 bits). 8l despla3amiento de "0 bits puede parecer muy pe!ue?o en relacin con el tama?o de la memoria de los e!uipos actuales (esta es la ra3n por la 25(20 se e$pandi a (& bits). 9odr,a ser peor ya !ue- los sevidores +<7 ;ystem/(05 slo tienen un signo de "& bits de despla3amiento. ;in embargo el principio de locali3acin se aplica en un corto espacio de tiempo la mayor,a de los elementos de datos !ue un programa !uiere acceder estan bastante cerca uno del otro. 8ste modo de direccionamiento est estrec=amente relacionado con el modo de direccionamiento absoluto. Ejemplo 1- *entro de una subrutina un programador estar principalmente interesados en los parmetros y las variables locales !ue rara ve3 superan 0. W< para lo !ue un registro

base es suficiente. ;i esta rutina es un mDtodo de clase en un lenguaje orientado a objetos entonces se necesita un segundo registro base con punteros en los atributos del objeto actual. Hbtenido de X=ttp-//es.>iVipedia.org/>iVi/7odosYdeYdireccionamientoZ

También podría gustarte