modos de direccionamiento

21
Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción ( lenguaje ensamblador ). Cómo se especifican e interpretan las direcciones de memoria según las instrucciones. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra part e. ¿Cuántos modos de direccionamiento existen? Diferentes arquitecturas de computadores varían mucho en cuanto al número de modos de direccionamiento que ofrecen desde el hardware. Eliminar los modos de direccionamiento más complejos podría presentar una serie de beneficios, aunque  podría requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseño de CPUs segmentadas es mucho más fácil si los únicos modo s de direccionamiento que pr oporcionan son simples. La mayoría de las máquinas RISC disponen de apenas cinco modos de direccionamiento simple, mientras que otras máquinas CISC tales como el DEC VAX tienen más de una docena de modos de direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 disponía únicamente de tres modos de direccionamiento; algunos más fueron añadidos posteriormente para el S ystem/390. Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia instrucción (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayoría de los RISC). Sin embargo, cuando hay demasiados modos, a menudo suele reservarse un campo específico en la propia instrucción, para especificar dicho modo de direccionamiento. El DEC VAX permitía múltiples 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. Incluso en computadores con muchos modos de direccionamiento, algunas medidas realizadas a programas indican que los modos más simples representan cerca del 90% o más de todos los modos de direccionamiento utilizados. Dado que la mayoría de estas medidas son obtenidas a partir de códigos de alto nivel generados a partir de compiladores, nos da una idea de las limitaciones que presentan los compiladores que se utilizan. Advertencia Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a los distintos modos de direccionamiento. En particular, los distintos autores y fabricantes de equipos pueden dar nombres diferentes para el modo de hacer frente al mismo, o los mismos nombres, a los diferentes modos de direccionamiento. Además, un modo de direccionamiento que en una determinada arquitectura se trata como un modo de direccionamiento, puede representar la funcionalidad que en otra arquitectura está cubierto por dos o más modos de direccionamiento.

Upload: daniel-enrique-lopez

Post on 06-Jul-2015

453 views

Category:

Documents


0 download

TRANSCRIPT

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 1/21

 

Los llamados modos de direccionamiento son las diferentes maneras de especificar eninformática un operando dentro de una instrucción (lenguaje ensamblador ). Cómo seespecifican e interpretan las direcciones de memoria según las instrucciones.

Un modo de direccionamiento especifica la forma de calcular la dirección de memoriaefectiva de un operando mediante el uso de la información contenida en registros y / o

constantes, contenida dentro de una instrucción de la máquina o en otra parte.

¿Cuántos modos de direccionamiento existen?

Diferentes arquitecturas de computadores varían mucho en cuanto al número de modosde direccionamiento que ofrecen desde el hardware. Eliminar los modos dedireccionamiento más complejos podría presentar una serie de beneficios, aunque

  podría requerir de instrucciones adicionales, e incluso de otro registro. Se hacomprobado que el diseño de CPUs segmentadas es mucho más fácil si los únicosmodos de direccionamiento que proporcionan son simples.

La mayoría de las máquinas RISC disponen de apenas cinco modos dedireccionamiento simple, mientras que otras máquinas CISC tales como el DEC VAXtienen más de una docena de modos de direccionamiento, algunos de ellos demasiadocomplejos. El mainframe IBM System/360 disponía únicamente de tres modos dedireccionamiento; algunos más fueron añadidos posteriormente para el System/390.

Cuando existen solo unos cuantos modos, estos van codificados directamente dentro dela propia instrucción (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayoríade los RISC). Sin embargo, cuando hay demasiados modos, a menudo suele reservarseun campo específico en la propia instrucción, para especificar dicho modo dedireccionamiento. El DEC VAX permitía múltiples operandos en memoria en lamayoría de sus instrucciones, y reservaba los primeros bits de cada operando para

indicar el modo de direccionamiento de ese operando en particular.

Incluso en computadores con muchos modos de direccionamiento, algunas medidasrealizadas a programas indican que los modos más simples representan cerca del 90% omás de todos los modos de direccionamiento utilizados. Dado que la mayoría de estasmedidas son obtenidas a partir de códigos de alto nivel generados a partir decompiladores, nos da una idea de las limitaciones que presentan los compiladores que seutilizan.

Advertencia

Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a losdistintos modos de direccionamiento. En particular, los distintos autores y fabricantes deequipos pueden dar nombres diferentes para el modo de hacer frente al mismo, o losmismos nombres, a los diferentes modos de direccionamiento. Además, un modo dedireccionamiento que en una determinada arquitectura se trata como un modo dedireccionamiento, puede representar la funcionalidad que en otra arquitectura estácubierto por dos o más modos de direccionamiento.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 2/21

 

El término "modo de direccionamiento" está sujeta a interpretaciones diferentes: o bien"dirección de memoria de modo de cálculo" o "modo de acceso operando". Bajo lasinstrucciones de la primera interpretación, que no puede leer o escribir de la memoria ala memoria (como "añadir literal de registro"), se considerará que no tienen un "modode direccionamiento". La segunda interpretación permite para las máquinas tales comoVAX, que utilizan bits de modo operando para permitir un operando literal.Sólo la

  primera interpretación se aplica a las instrucciones tales como "carga efectiva dedirección".

Las instrucciones que aparecen a continuación son meramente representativas a fin deilustrar los modos de direccionamiento, y no necesariamente reflejan los mnemónicosutilizado por cualquier equipo en particular.

Tipos de Direccionamiento

Implícito:

En este modo de direccionamiento no es necesario poner ninguna dirección de formaexplícita, ya que en el propio código de operación se conoce la dirección 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 aritméticas no requierendireccionamiento explícito por lo que se ponen como:

- add

- sub

...

¿Por qué? Porque cuando se opera con dos datos en esta arquitectura se sabe que son losdos 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 sonestos 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 arquitecturade acumulador (AC) donde siempre hay un parámetro implícito y este es el AC.

Para finalizar y dejar este modo de direccionamiento generalizado para las arquitecturasmás usuales, remarcamos que también podemos encontrarlo en la arquitectura con

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 3/21

 

registros de próposito general, por ejemplo con órdenes como setc, que pone a 1 elregistro c (acarreo).

[editar] Inmediato:

En la instrucción está incluido directamente el operando.

En este modo el operando es especificado en la instrucción misma. En otras palabras,una instrucción de modo inmediato tiene un campo de operando en vez de un campo dedirección. El campo del operando contiene el operando actual que se debe utilizar enconjunto con la operación especificada en la instrucción. Las instrucciones de modoinmediato son útiles para inicializar los registros en un valor constante.

Cuando el campo de dirección especifica un registro del procesador, la instrucción sedice que está en el modo de registro.

ejemplo:MOV A,#17H

[editar] Directo:

El campo de operando en la instrucción contiene la dirección en memoria donde se

encuentra el operando.

En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. Eloperando reside en la memoria y su dirección es dada directamente por el campo dedirección de la instrucción. En una instrucción de tipo ramificación el campo dedirección especifica la dirección de la rama actual.

Con este tipo de direccionamiento, la dirección efectiva es contenida en la mismainstrucción, tal como los valores de datos inmediatos que son contenidos en lainstrucción. Un procesador de 16 bits suma la dirección efectiva al contenido delsegmento de datos previamente desplazado en 4 bits para producir la dirección física deloperando.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 4/21

 

 

ejemplo:MOV A,17H

[editar] Indirecto:

El campo de operando contiene una dirección de memoria, en la que se encuentra ladirección efectiva del operando.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 5/21

 

ejemplo:MOV A,@17H

[editar] Absoluto:

El campo de operando contiene una dirección en memoria, en la que se encuentra lainstrucción.

[editar] De registro:

Sirve para especificar operandos que están en registros.

ejemplo:MOV A,R0

[editar] Indirecto mediante registros:

El campo de operando de la instrucción contiene un identificador de

registro en el que se encuentra la dirección efectiva del operando.

En este modo el campo de la dirección de la instrucción da la dirección en donde la

dirección efectiva se almacena en la memoria. El control localiza la instrucción de lamemoria y utiliza su parte de dirección para accesar la memoria de nuevo para leer unadirección efectiva. Unos pocos modos de direccionamiento requieren que el campo dedirección de la instrucción sea sumado al control de un registro especificado en el

 procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo:

Dir. efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador 

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 6/21

 

 

ejemplo:MOV A,@R0

[editar] De desplazamiento:

Combina el modo directo e indirecto mediante registros

[editar] 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), lascuales están marcados por el fondo de la pila y el puntero de pila (*SP), El puntero de

  pila apunta a la última posición ocupada. Así, como puntero de direccionamientousaremos el SP. El desplazamiento más el valor del SP nos dará la dirección del objetoal que queramos hacer referencia. En ocasiones, si no existe C. de desplazamiento solose trabajara con la cima de la pila. Este tipo de direccionamiento nos aporta flexibilidad

 pero por el contrario, es mucho más complejo que otros tipos estudiados más arriba.

[editar] Respecto a un registro base:

Este modo de direccionamiento es muy usado por los ensambladores cuando se llaman alas funciones (para acceder a los parámetros apilados en la pila, valga la redundancia).Consiste, al igual que el indirecto a través de registro, en calcular la EA (EffectiveAddress) como la suma del contenido del registro base y un cierto desplazamiento (uoffset) que siempre será positivo. Esta técnica permite códigos reentrantes y acceder deforma fácil y rápida a posiciones cercanas de memoria.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 7/21

 

EA = RB+offset

RB = registro base

offset = desplazamiento

-> RB se comporta como una dirección de memoria a la que se le sumará eldesplazamiento

[editar] Respecto a un registro índice:

Es similar al anterior, lo único que es el contenido del registro índice el que indica eldesplazamiento que se produce a partir de una dirección de memoria que se pasatambién como argumento a la orden que utiliza este modo de direccionamiento. Aunqueen esencia son dos modos equivalentes. La EA se calcula como la suma del contenidodel registro índice y una dirección de memoria:

EA = RI+DM

RI = registro índice

DM = dirección de memoria

-> RI se comporta como un offset

=== Indexado respecto a una base:=== Se trata de una combinación de los dosanteriores y consiste en calcular la dirección efectiva como:

EA = RI+RB+DM

-> Las siglas significan lo mismo que en el caso anterior 

[editar] Respecto al contador de programa:

Consiste en dirección una posición de memoria usando como registro base al contador de programa (PC), el funcionamiento es análogo al direccionamiento respecto a registro

 base con la salvedad de que, en este caso, el offset puede ser también negativo.

[editar] Indexado con autoincremento/autodecremento:

Es un modo de direccionamiento análogo al indexado, explicado

anteriormente. La única diferencia es que permite un incremento odecremento de la dirección final o el registro índice según los

siguientes casos:

-> Indexado con autopreincremento: Incrementa el registro índice primero (seincrementa un valor, según el tamaño del objeto direccionado) y luego calcula la EA aligual que el direccionamiento indexado.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 8/21

 

-> Indexado con autoposincremento: Calcula la dirección efectiva y después incrementaesta.

-> Indexado con autopredecremento: Decrementa el registro índice y después calcula ladirección efectiva.

-> Indexado con autoposdecremento: Calcula la dirección efectica y despuésdecrementa esta.

[editar] 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 0xAB ----> Carga 0xAB en PC

[editar] Instrucción de salto con direccionamiento relativo:

Es parecida a la especificada anteriormente la diferencia es que el salto es relativo alPC, pongamos un ejemplo:

Supongamos que PC vale = 0x0A, si nosotros interpretamos la instrucción jr +03,saltaremos tres posiciones posteriores a PC (también podría ser -03 y serían posicionesanteriores). Pero, ¡cuidado! si esa instrucción estaba en la posición 0x0A la dirección dePC a incrementar será la inmediatamente posterior (ya que PC se incrementaautomáticamente después de leer la instrucción), por lo que quedaría:

PC = 0x0B ---> nuevo PC = 0x0B+0x03 = 0x0E, con lo que el PC quedaría como 0x0E.

[editar] Direccionamiento paginado y direccionamientosegmentado

y  Paginado: La memoria se encuentra actualmente dividida en páginas(bloques deigual longitud).

En este caso, para obtener las direcciones necesitamos: Indicador de página (IP): en unregistro específico o de propósito general de la máquina. Dirreción de la palabra(DP):en el campo CD de la instrucción.

Así, concatenando ambas partes obtenemos la dirección completa.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 9/21

 

 

Segmentado: En este caso, la memoria se divide en porciones, como en el tipo anterior, pero en este caso los tamaños son variables. Así, para acceder a ellos se tiene una tablade segmentos que contiene la dirección del comienzo y dle final de cada segmento enmemoria.

Usar este tipo de direccionamiento tiene como ventajas que se puede definir segmentosde tamaño arbitrario. Por otro lado, esta misma ventaja, el fraccionamiento de memoriaes uno de sus problemas.

Ambos modos de direccionamiento facilitan la multiprogramación gracias a la técnicade la memoria virtual que permite que un proceso no tenga que estar cargadoíntegramente en memoria, si no que se cargan distintas páginas del mismo (osegmentos). Si se intenta cargar una página o segmento que no se encuentra en lamemoria principal se produce una excepción de falta de página o segmento y se accedea la memoria para cargar la información requerida en la memoria principal.

[editar] Algunos modos de direccionamiento obsoletos

Estos modos fueron usados durante 1950-1980 y ya no están disponibles en loscomputadores modernos. Esta lista no es completa, puesto que hubo otros muchosmodos de direccionamiento más, algunos más interesantes y peculiares.

y  Indirecto de multinivel de memoria 

Si la longitd de palabra era mayor que la dirección, la palabra era referenciada por estedireccionamiento indirecto de multinivel, que podía tener una "bandera" para indicar unciclo indirecto de memoria. Es necesario tener cuidado para asegurar que una cadena de

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 10/21

 

direcciones indirectas no se refiera a ella misma , si lo hiciera, se llegaría a un bucleinfinito mientras trata de encontrar la dirección.

El DEC PDP-10 con 18 bits de direccionamiento y palabras de 36 bits permitían estemodo de direccionamiento con la posibilidad de usar un registro principal para cadafase.

y  Indirecto de memoria con autoincremento 

En algunos minicomputadores había normalmente 16 localizaciones especiales dememoria. Cuando se accedía a memoria, la dirección era automáticamente incrementaday decrementada después de su uso. Esto hacía muy fácil acceder a memoria en buclessin usar ningún registro.

y  "Página cero 

La familia Motorola 6800 y la MOS Technology 6502 fueron unas familias de pobresmicroprocesadores CISC. Las instrucciones aritméticas y lógicas estaban casi todashechas en contra de los valores de memoria. Como resultado, las instruccionesnecesitaban incluir una localización de dos bytes en memoria.

Los diseñadores de estos procesadores incluían un "remedio" llamado direccionamiento"página cero". Los 256 bytes iniciales de memoria podían ser accedidos usando un byteo una dirección de memoria indexada. Esto reducía el tiempo de ejecución de lasinstrucciones un ciclo de reloj. Almacenando datos en esta "region" los programas

 podían ser más pequeños y más rápidos.

Como resultado, la "página cero" fue usada de forma parecía a un archivo de registro.En muchos sistemas, sin embargo, provocó una gran utilización del área de memoria de

la página cero por el sistema operativo y por los usuarios de programas. Esto limitó suuso desde que el espacio libre fue limitado.

y  ndice Siguiente Instrucción 

El Elliott 503, el Elliott 803, y el Apollo Guidance Computer sólo se utilizadireccionamiento absoluto, y no tenía ningún registro de índice. Por lo tanto, saltosindirectos, o salta a través de registros, no se admiten en el conjunto de instrucciones.En su lugar, puede ser instruido para agregar el contenido de la palabra de la memoriaactual a la siguiente instrucción. Adición de un valor pequeño a la siguiente instruccióna ejecutar podría, por ejemplo, cambiar un JUMP 0 en un JUMP 20, creando así elefecto de un salto indexado. Tenga en cuenta que la instrucción se modifica sobre la

marcha y se mantiene sin cambios en la memoria, es decir, no es auto-modificar elcódigo.

[editar] Direccionamiento absoluto vs

Direccionamiento relativo

En esta sección vamos a resaltar las diferencias de estos dos técnicas dedireccionamiento y aclarar las ventajas y desventajas que cada una de ellas conlleva.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 11/21

 

y  Direccionamiento absoluto: Consiste en direccionar una posición de memoriade forma directa, esto es, que la dirección hace referencia directamente a dicha

 posición sin tener que realizar cálculos adicionales para la EA.

y  Direccionamiento relativo: Cuando para direccionar una posición de memoriase hace referencia a otra sobre la cual se especifica un incremento o decremento,

es decir, se requiere otro dato para el cálculo de la dirección efectiva.

Generalmente se usan los direccionamientos relativos ya que, al ejecutar un cierto programa se cumple la proximidad espacial y temporal, lo que implica que datos que yahan sido usados o que se encuentran en posiciones cercanas al PC tendrán una alta

  probabilidad de ser referenciados próximamente. Otras de las ventajas deldireccionamiento relativo es que permite los códigos reentrantes y cambiar ciertasdirecciones sin tener que volver a compilar el programa. Es también útil porque nuncase sabe en qué posición de memoria se cargará un determinado programa. Por últimoreduce el número de bits para especificar las direcciones y se facilita la referencia adatos del programa a través de los registros base.

El problema viene cuando queremos referenciar un dato al que no podemos acceder deforma relativa (p.e porque los registros base no puedan alcanzar dicha posición aun conel incremento más grande que podamos darle), en este caso se requiere eldireccionamiento absoluto que sí es capaz de acceder, por lo general, a cualquier dirección de memoria.

Modos de direccionamiento secuencial

Ejecución secuencial

+------+

| nop | ejecuta la siguiente instrucción+------+

(Dirección Efectiva PC = dirección de la instrucción siguiente)

El CPU, despues de ejecutar una instrucción secuencial, inmediatamente ejecuta lainstrución siguiente.

La ejecución secuencial no esta considerada un modo de direccionamiento en algunoscomputadores.

La mayoría de instrucciones en la mayoría de las arquitecturas de CPU soninstrucciones secuenciales. Debido a que la mayoría de las instrucciones son de tipo

secuencial, los diseñadores de la CPU a menudo añaden características quedeliberadamente sacrifican el rendimiento por un lado, y por otro las instrucciones de larama de instrucciones a fin de que estas instrucciones secuenciales corran más rápido.

Las ramas condicionales cargan en el PC varios resultados posibles, muchas de lasarquitecturas CPU usan algún otro modo de direccionamiento para la "toma" de rama, yla ejecución secuencial para la "no toma" de rama.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 12/21

 

Muchas características de las CPU's modernas mantienen la ilusión de que cadainstrucción termina antes de que la siguiente comienze, dando resultados finales iguales,a pesar de que no es exactamente lo que sucede internamente.

CPU'S que no utilizan la ejecución secuencial

Las CPU's que no utilizan la ejecución secuencial con un contador de programa sonextremadamente raras. En algunos procesadores, en cada instrucción siempre seespecifica la dirección de la instrucción siguiente. Esta CPU tiene un puntero deinstrucción que sostiene la dirección especificada, pero no tiene un programa completomostrado. Las CPU's incluyen algunas cajas de ritmos de la memoria, la máquinaSECD, y el RTX 32P.

Otras arquitecturas de computación van mucho más allá, trantando de evitar el cuello de  botella de von Neumann, usando una variedad de alternativas para el contador de programa.

[editar] Ejecución condicional

Algunas arquitecturas de ordenador (por ejemplo, ARM) tienen instruccionescondicionales que en algunos casos puede obviar la nacesidad de saltos condicionales yevitar el lavado de la tubería de la instrucción. Una instrucción tal como "comparar" seeutiliza para establecer un código de condición, y las instrucciones posteriores incluyenuna prueba de que el código de condición para ver si se cumplen o se ignoran.

[editar] Salto

+------+-----+-----+

|skipEQ| reg1| reg2| Salta a la siguiente instrucción si

reg1=reg2

+------+-----+-----+

(EA PC = dirección de la instrucción siguiente + 1)

Saltar abordar puede ser considerado como un tipo especial de modo dedireccionamiento relativo al PC con un fijo "una" compensación. Al igual que en PCdireccionamiento relativo, algunas CPU's tienen versiones de este modo dedireccionamiento que sólo se refieren a un registro ( "saltar si REG1==0") o no hayregistros, de manera implícita, referente a algunos bits previamente establecidos en elregistro del estado. Otras CPU's tienen una versión que selecciona un byte específico de

 prueba ("saltar si el bit 7 de reg12 es 0").

A diferencia de todas las ramas condicinales, un "salto" no necesita instrucciones paravaciar la tubería de la instrucción, a pesar de que puede necesitarlas para hacer que lasiguiente instrucción sea ignorada.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 13/21

 

 

Modos simples de direccionamiento de datos

Registro

+------+-----+-----+-----+

| mul | reg1| reg2| reg3| reg1 := reg2 * reg3;

+------+-----+-----+-----+

Este "modo de direccionamiento" no tiene una dirección efectiva y no se consideracomo un modo de dirección en algunas computadoras.

En este ejemplo, todos los operandos están en registros, y el resultado se coloca en unregistro.

[editar] Base mas desplazamiento y variaciones

Muchas veces nos referimos a él como "base más desplazamiento"

+------+-----+-----+----------------+

| load | reg | base| offset | reg := RAM[base + offset]

+------+-----+-----+----------------+

(La dirección efectiva = desplazamiento + contenidos de la base

especificada del registro)

El desplazamiento suele ser un valor con signo de 16 bits (aunque la 80386 se expandióa 32 bits).

Si el desplazamiento es cero, esto se convierte en un ejemplo de registro indirectofrente, la dirección efectiva es sólo el valor en el registro de base.

En muchas máquinas RISC, el registro 0 se fija en el valor cero. Si el registro 0 seutiliza como el registro de base, esto se convierte en un ejemplo de direccionamientoabsoluto. Sin embargo, sólo una pequeña parte de la memoria se puede acceder (64kilobytes, si el desplazamiento es de 16 bits).

El desplazamiento de 16 bits puede parecer muy pequeño en relación con el tamaño dela memoria de los equipos actuales (esta es la razón por la 80386 se expandió a 32 bits).Podría ser peor ya que: los sevidores IBM System/360 sólo tienen un signo de 12 bits dedesplazamiento. Sin embargo, el principio de localización se aplica en un corto espacio

de tiempo, la mayoría de los elementos de datos que un programa quiere acceder estan bastante cerca uno del otro.

Este modo de direccionamiento está estrechamente relacionado con el modo dedireccionamiento absoluto.

 Ejemplo 1: Dentro de una subrutina, un programador estará principalmente interesadosen los parámetros y las variables locales, que rara vez superan 64 KB, para lo que unregistro base es suficiente. Si esta rutina es un método de clase en un lenguaje orientado

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 14/21

 

a objetos, entonces se necesita un segundo registro base con punteros en los atributosdel objeto actual.

MODOS DE DIRECCIONAMIENTO Tiene 12 modos de direccionamiento básicos. Estos pueden clasificarse en 5 grupos: 1. Direccionamientos accesando dato inmediato y registro de datos (modos inmediato y deregistro). 2. Direccionamiento accesando datos en memoria (modo memoria) 3. Direccionamiento accesando puertos E/S. (modo E/S)4. Direccionamiento relativo 5. Direccionamiento implícito. 1. DIRECCIONAMIENTO ACCESANDO DATO Y REGISTRO INMEDIATO 1.1 Direccionamiento de registro. Especifica el operando fuente y el operando destino. Los registros deben ser del mismotamaño. ej. MOV DX, CX MOV CL, DL.1.2 Direccionamiento inmediato. Un dato de 8 o 16 bits se especifica como parte de la instrucción. p.ej. MOV CL, 03H.Aquí el operando fuente está en modo inmediato y el destino en modo registro. 2. DIRECCIONAMIENTO ACCESANDO DATOS EN MEMORIA 2.1 Direccionamiento directo.

 La dirección efectiva (EA) de 16 bits se toma directamente del campo de desplazamientode la instrucción. El desplazamiento se coloca en la localidad siguiente al código deoperación. Esta EA o desplazamiento es la distancia de la localidad de memoria al valor actual en el segmento de datos (DS) en el cual el dato está colocado. Ej. MOV CX,START. START puede definirse como una localidad de memoria usando las

 pseudoinstrucciones DB o DW. 2.2 Direccionamiento de registro indirecto. La dirección efectiva EA está especificada en un registro apuntador o un registro índice. Elapuntador puede ser el registro base BX o el apuntador base BP; el registro índice puede

ser el Indice Fuente (SI) o el Indice Destino (DI).Ej. MOV (DI),BX. 2.3 Direccionamiento base EA se obtiene sumando un desplazamiento (8 bits con signo o 16 bits sin signo) a loscontenidos de BX o BP. Los segmentos usados son DS y SS. Cuando la memoria esaccesada, la dirección física de 20 bits es calculada de BX y DS, por otra parte, cuando la

 pila es Accesada, la dirección es calculada de BP y SS.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 15/21

 

Ej. MOV AL, START (BX). el operando fuente está en modo base, y la EA se obtienesumando los valores de START y BX. 2.4 Direccionamiento indexado. EA se calcula sumando un desplazamiento (8 o 16 bits) a los contenidos de SI o DI. Ej.MOV BH,START (SI).

2.5 Direccionamento base indexado. EA se calcula sumando un registro base (BX o BP), un registro índice (DI o SI), y undesplazamiento (8 o 16 bits).Ej. MOV ALPHA (SI)(BX),CL. Este direccionamiento proporciona una forma conveniente para direccionar un arreglolocalizado en la pila. 2.6 Direccionamiento (cadena?) Este modo usa registros índice. La cadena de instrucciones automáticamente asume que SIapunta al primer byte o palabra del operando destino. Los contenidos de SI y DI sonincrementados automáticamente (poniendo a 0 DF mediante la instrucción CLD) o

decrementados (poniendo a 1 DF mediante la instrucción STD) para apuntar al siguiente byte o palabra. El segmento del operando fuente es DS y puede ser encimado. El segmento del operando destino debe ser ES y no puede ser encimado. Ej. MOVSBYTE. 3. DIRECCIONAMIENTO ACCESANDO PUERTOS (E/S) Hay dos tipos de direccionamiento usando puertos: directo e indirecto. En el modo directo, el número de puerto es el operando inmediato de 8 bits, lo cual

 permite accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL. En el modo indirecto, el número de puerto se toma de DX, permitiendo así 64K puertos de8 bits o 32K puertos de 16 bits. Las transferencias E/S de 8 y 16 bits deben hacerse vía AX y AL, respectivamente. 4. DIRECCIONAMIENTO RELATIVO. En este modo el operando se especifica como un desplazamiento de 8 bits con signo,relativo al PC. Ej. JNC START. Si C=0, entonces el PC se carga con PC+el valor deSTART. 5. DIRECCIONAMIENTO IMPLICITO. Las instrucciones que usan esta modo no tienen operandos. Ej. CLC.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 16/21

 

 

MODOS DE DIRECCIONAMIENTO 

-Un modo de direccionamiento permite determinar un operando , o la ubicación de unoperando en una instrucción. Estos operandos pueden residir en diversas partes:

1.-La propia instrucción

2.-Memoria principal

3.-Registros internos de la CPU

-Los programas utilizan varios MD motivados por:

1.- Ahorro de espacio

2.- Código reubicable : se puede almacenar el programa en diversas zonas de memoria

 sin q afecte a la ejecución del código 

3.-Estructuras de datos.

1) DIRECCIONAMIENTO INMEDIATO 

a) El operando está presente en la propia instrucción, por lo tanto, esta opera con unvalor constante.

 b) El direccionamiento de una sola palabra: MAS RAPIDO >> el operando se encuentraya en IR al fin de la fase de búsqueda. 2 palabras: lectura de mem adicional.

-VENTAJA:  N o referencia a memoria. 

-DESVENTAJA: Operandos limitados por la instr. 

2) DIRECCIONAMIENTO DIRECTO 

a) La instrucción contiene la dirección real del operando.

 b) dos tipos:

2.1) Direccionamiento absoluto: 

a) La instrucción contiene la dirección de memoria donde se encuentra el objeto, q sehalla en una posición de mem principal.

 b) Rango de posiciones limitado por CO.

c) Formato de 2 palabras >> MAYOR CAPACIDAD DE DIRECCIONAMIENTO >>lectura adicional.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 17/21

 

2.2) Direccionamiento mediante registro 

a) Operando almacenado en un registro de la CPU. La instrucción indica de q registro setrata.

 b) Registros limitados.

c) CARACTERISTICAS:

1.- Lectura MAS RAPIDA q en memoria >> ninguna lectura adicional.

2.- Solo necesita CD pequeño.

3.- Rango operando = Rango registro >> LIMITA espacio de direcciones.

-VENTAJA: S olo una referencia a memoria sin cálculos previos. 

-DESVENTAJA: Espacio de direcciones reducido. 

3) DIRECCIONAMIENTO RELATIVO A REGISTRO 

a)La instrucción NO contiene la dirección del operando >> debe ser calculada.

-La instr contiene un DESPLAZAMIENTO q hay q añadir a la dirección marcada por un puntero para obtener la dirección final del operando>> RETRASO ADICIONAL.

-El puntero suele estar en un registro.

 b) Permite acceder a un conjunto de direcciones de memoria a partir de una considerada

como referencia.>> en el CD emplea un nº de bits pequeño

c) Varios tipos:

3.1) Direccionamiento relativo al registro contador del programa (PC) 

a) puntero : PC; almacena la dirección de la siguiente instr.

 b) Para direccionar instr cercanas a la instr en curso, para bucles...

3.2) Direccionamiento relativo al registro base 

a) puntero: REGISTRO BASE.

 b) la instr contiene la identificación del registro y el desplazamiento

c) Conveniente para zonas de datos (como listas).

3.3) Direccionamiento relativo a pila (LIFO) 

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 18/21

 

a) puntero : SP (stack pointer); apunta a la dirección de mem donde se encuentra la cimade la pila.

 b) DESPL. + valor SP = DIRECCIÓN DEL OBJETO

c) Si no existe C. de despl. >> solo se trabaja con la cima de la pila.

d) Permite instrucciones muy compactas.

-VENTAJA : flexibilidad. 

-DESVENTAJA: complejidad. 

4) DIRECCIONAMIENTO INDEXADO 

a) Un registro índice contiene la dirección de referencia y actúa de puntero.

  b) Similar al relativo a registro base; pero el valor del reg indice se modifica confrecuencia en la ejecución del programa.

c) Para:

-operaciones iterativas

- recorrer estructuras de datos (tablas, vectores...).Permite realizar incrementos ydecrementos de una cierta magnitud >> AUTO-INDEXADO

*PREAUTOINCREMENTO y PREAUTODECREMENTO:

1.-el reg indice se incrementa (o decrementa)

2.- se obtiene la dirección = REG INDICE + DESPL..

*POSTAUTOINCREMENTO :

1.-dirección = REG INDICE +DESPL..

2.- el reg indice se incrementa

-VENTAJA : flexibilidad. 

-DESVENTAJA: complejidad. 

 

) DIRECCIONAMIENTO INDIRECTO 

a) El CD referencia la dirección de una palabra, q a su vez contiene la direccióncompleta del operando.

 b) Para aplicaciones q utilizan datos situados en posiciones distantes en memoria

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 19/21

 

-VENTAJAS: 1) espacio de dirección grande; para  N bits >> 2 N espacio de direcc.

2) se puede combinar con los direccionamientos relativos 

-DESVENTAJA: referencia extra a memoria

c) Variante : Direccionamiento indirecto con registro 

-En el CD, hace referencia a un registro q contiene la dirección completa del operando.

-Emplea una referencia a memoria menos

http://www.slideshare.net/gbermeo/modos-de-direccionamiento-presentation 

MODOS DE DIRECCIONAMIENTO 

Son tecnicas que nos permiten averiguar la direccion fisica de los datos.

1.- Direccionamiento implicito: la instruccion no se refiere explicitamente aloperando sobre el que trabaja. No hay que dar direccion, porque va implicito. Ocupanmenos, procesandose mas rapido.

Ej: CPL=> calcula el C-1 del acumulador.

2.- Direccionamiento inmediato. El campo de direccion contiene ya los datos.

Ej: ADD A, 1BH (Suma al acumulador el valor 1B enhexadecimal).

3.- Direccionamiento absoluto. El campo de direccion contiene la direccionfisica del dato.

Ej: LD (F805H), A (Carga el contenido del acumulador en F805).

4.- Direccionamiento relativo. El campo de direccion contiene undesplazamiento con relacion a un punto de referencia (direccion base). La direccion

 base, normalmente es la que halla en el contador.

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 20/21

 

Ej: JR  NC , 37 (Le sumamos 37 al contador de programas. JR esinstruccion de salto, y NC provoca que no haya acarreo).

5.- Direccionamiento indexado. El campo de direccion contiene una direccionde referencia y la direccion real se calcula sumando a la de referencia el contenido de unregistro especial, llamado registro indice.

Ej: ADD A; @60

Reg. indice:4

Acumulador (antes): 8

Posicion de memoria 60+4=64 =>13

Acumulador (despues): 21

6.- Direccionamiento indirecto. El campo de direccion contiene una direccionen la que esta la direccion de los datos.

Ej: ADD A; *45

Acumulador (antes): 357

Posicion de memoria 45 => 79

Posicion de memoria 79 => 210

Acumulador (despues): 567

7.- Direccionamiento indexado indirecto (combinacion):

Ej:

Posicion Contenido

40 50 LDA @*40

60 80 D. indexado: 40+20=60

70 185 D. indirecto: posicion 60 => 80

80 323 posicion 80 => 323

RI 20 Carga 323 en el acumulador.

8.- Direccionamiento indirecto indexado (combinacion):

Ej: LDA *@40

5/6/2018 MODOS DE DIRECCIONAMIENTO - slidepdf.com

http://slidepdf.com/reader/full/modos-de-direccionamiento-559aba119b1b7 21/21

 

Indireccion: posicion 40 => 50

Direccion indexada: 50 + 20 = 70

- en la posicion 70 => 185 (se cargaria en elacumulador)