Vous êtes sur la page 1sur 5

Tipos de Direccionamiento

=== Implcito === En este modo de direccionamiento no es necesario poner ninguna direccin
de forma explcita, ya que en el propio cdigo de operacin se conoce la direccin del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere operar. Supongamos una arquitectura de pila, las operaciones aritmticas no requieren direccionamiento explcito por lo que se ponen como: - add - sub ... Por qu? Porque cuando se opera con dos datos en esta arquitectura se sabe que son los dos elementos del tope de la pila: Ejemplo de una pila 1 2 3 4 5 6 <- pila top() es 1 ntop() es 2 donde top() representa el tope de la pila y ntop() el siguiente al tope de la pila y son estos argumentos con los que se opera al llamar a una orden en concreto. Otro ejemplo de este tipo de direccionamiento lo podemos encontrar en la arquitectura de acumulador (AC) donde siempre hay un parmetro implcito y este es el AC. Para finalizar y dejar este modo de direccionamiento generalizado para las arquitecturas ms usuales, remarcamos que tambin podemos encontrarlo en la arquitectura con registros de propsito general, por ejemplo con rdenes como setc, que pone a 1 el registro c (acarreo).

Inmediato
En la instruccin est incluido directamente el operando. En este modo el operando es especificado en la instruccin misma. En otras palabras, una instruccin de modo inmediato tiene un campo de operando en vez de un campo de direccin. El campo del operando contiene el operando actual que se debe utilizar en conjunto con la operacin especificada en la instruccin. Las instrucciones de modo inmediato son tiles para inicializar los registros en un valor constante. Cuando el campo de direccin especifica un registro del procesador, la instruccin se dice que est en el modo de registro.

ejemplo:MOV A,#17H

Directo
El campo de operando en la instruccin contiene la direccin en memoria donde se encuentra el operando. En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside en la memoria y su direccin es dada directamente por el campo de direccin de la instruccin. En 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 que son contenidos en la instruccin. Un procesador de 16 bits suma la direccin efectiva al contenido del segmento de datos previamente desplazado en 4 bits para producir la direccin fsica del operando.

Ejemplo: MOV A,17H

Indirecto
El campo de operando contiene una direccin de memoria, en la que se encuentra la direccin efectiva del operando.

Ejemplo: MOV A,@17H

Absoluto
El campo de operando contiene una direccin en memoria, en la que se encuentra la instruccin.

De registro
Sirve para especificar operandos que estn en registros.

Ejemplo: MOV A,R0

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. En este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva se almacena en la memoria. El control localiza la instruccin de la memoria y utiliza su parte de direccin para acceder a la memoria de nuevo para leer una direccin efectiva. Unos pocos modos de direccionamiento requieren que 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: Dir. efectiva = Dir. de la parte de la instruccin + Contenido del registro del procesador...

Ejemplo: MOV A,@R0

De desplazamiento
Combina el modo directo e indirecto mediante registros

De pila
Se utiliza cuando el operando est en memoria y en la cabecera de la pila. Este direccionamiento se basa en las estructuras denominadas Pila(tipo LIFO), las cuales estn marcados por el fondo de la pila y el puntero de pila (*SP), El puntero de pila apunta a la ltima posicin ocupada. As, como puntero de direccionamiento usaremos el SP. El desplazamiento ms el valor del SP nos dar la direccin del objeto al que queramos hacer referencia. En ocasiones, si no existe C. de desplazamiento solo se trabajara con la cima de la pila. Este tipo de direccionamiento nos aporta flexibilidad pero por el contrario, es mucho ms complejo que otros tipos estudiados ms arriba.

Respecto a un registro base


Este 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 que el indirecto a travs de registro, en calcular la EA (Effective Address) como la suma del contenido del registro base y un cierto desplazamiento (u offset) que siempre ser positivo. Esta tcnica permite cdigos reentrantes y acceder de forma fcil y rpida a posiciones cercanas de memoria. EA = RB+offset RB = registro base offset = desplazamiento -> RB se comporta como una direccin de memoria a la que se le sumar el desplazamiento

Respecto a un registro ndice


Es similar al anterior, lo nico que es el contenido del registro ndice el que indica el desplazamiento que se produce a partir de una direccin de memoria que se pasa tambin como argumento a la orden que utiliza este modo de direccionamiento. Aunque en esencia son dos modos equivalentes. La EA se calcula como la suma del contenido del registro ndice y una direccin de memoria: EA = RI+DM RI = registro ndice DM = direccin de memoria -> RI se comporta como un offset

Indexado respecto a una base


Se trata de una combinacin de los dos anteriores y consiste en calcular la direccin efectiva como: EA = RI+RB+DM -> Las siglas significan lo mismo que en el caso anterior

Respecto al contador de programa

Consiste en direccin una posicin de memoria usando como registro base al contador de programa (PC), el funcionamiento es anlogo al direccionamiento respecto a registro base con la salvedad de que, en este caso, el offset puede ser tambin 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: -> Indexado con autopreincremento: Incrementa el registro ndice primero (se incrementa un valor, segn el tamao del objeto direccionado) y luego calcula la EA al igual que el direccionamiento indexado. -> Indexado con autoposincremento: Calcula la direccin efectiva y despus incrementa esta. -> Indexado con autopredecremento: Decrementa el registro ndice y despus calcula la direccin efectiva. -> Indexado con autoposdecremento: Calcula la direccin efectica y despus decrementa esta.

Instruccin de salto con direccionamiento absoluto


Consiste en cargar en el PC el valor que se especifica en la orden de salto, p.e: jmp 0xAB ----> Carga 0xAB en PC

Instruccin de salto con direccionamiento relativo


Es parecida a la especificada anteriormente la diferencia es que el salto es relativo al PC, pongamos un ejemplo: Supongamos que PC vale = 0x0A, si nosotros interpretamos la instruccin jr +03, saltaremos tres posiciones posteriores a PC (tambin podra ser -03 y seran posiciones anteriores). Pero, cuidado! si esa instruccin estaba en la posicin 0x0A la direccin de PC a incrementar ser la inmediatamente posterior (ya que PC se incrementa automticamente despus de leer la instruccin), por lo que quedara: PC = 0x0B ---> nuevo PC = 0x0B+0x03 = 0x0E, con lo que el PC quedara como 0x0E.

Vous aimerez peut-être aussi