Sunteți pe pagina 1din 21

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 mquina o en otra parte.

Cuntos modos de direccionamiento existen?


Diferentes arquitecturas de computadores varan mucho en cuanto al nmero de modos de direccionamiento que ofrecen desde el hardware. Eliminar los modos de direccionamiento ms complejos podra presentar una serie de beneficios, aunque podra requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseo de CPUs segmentadas es mucho ms fcil si los nicos modos de direccionamiento que proporcionan son simples. La mayora de las mquinas RISC disponen de apenas cinco modos de direccionamiento simple, mientras que otras mquinas CISC tales como el DEC VAX tienen ms de una docena de modos de direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 dispona nicamente de tres modos de direccionamiento; algunos ms fueron aadidos posteriormente para el System/390. Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia instruccin (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayora de los RISC). Sin embargo, cuando hay demasiados modos, a menudo suele reservarse un campo especfico en la propia instruccin, para especificar dicho modo de direccionamiento. El DEC VAX permita mltiples operandos en memoria en la mayora 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 ms simples representan cerca del 90% o ms de todos los modos de direccionamiento utilizados. Dado que la mayora de estas medidas son obtenidas a partir de cdigos 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. Adems, 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 ms modos de direccionamiento.

El trmino "modo de direccionamiento" est sujeta a interpretaciones diferentes: o bien "direccin de memoria de modo de clculo" o "modo de acceso operando". Bajo las instrucciones de la primera interpretacin, que no puede leer o escribir de la memoria a la memoria (como "aadir literal de registro"), se considerar que no tienen un "modo de direccionamiento". La segunda interpretacin permite para las mquinas tales como VAX, que utilizan bits de modo operando para permitir un operando literal.Slo la primera interpretacin se aplica a las instrucciones tales como "carga efectiva de direccin". Las instrucciones que aparecen a continuacin son meramente representativas a fin de ilustrar los modos de direccionamiento, y no necesariamente reflejan los mnemnicos utilizado por cualquier equipo en particular.

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 prposito general, por ejemplo con rdenes como setc, que pone a 1 el registro c (acarreo).

[editar] 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

[editar] 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

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

ejemplo:MOV A,@17H

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

[editar] De registro:
Sirve para especificar operandos que estn en registros.

ejemplo:MOV A,R0

[editar] 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 accesar 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

[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), 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.

[editar] 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

[editar] 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

[editar] 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.

[editar] 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.

[editar] Instruccin de salto con direccionamiento absoluto:


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

jmp 0xAB ----> Carga 0xAB en PC

[editar] 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.

[editar] Direccionamiento paginado y direccionamiento segmentado


y

Paginado: La memoria se encuentra actualmente dividida en pginas(bloques de igual longitud).

En este caso, para obtener las direcciones necesitamos: Indicador de pgina (IP): en un registro especfico o de propsito general de la mquina. Dirrecin de la palabra(DP): en el campo CD de la instruccin. As, concatenando ambas partes obtenemos la direccin completa.

Segmentado: En este caso, la memoria se divide en porciones, como en el tipo anterior, pero en este caso los tamaos son variables. As, para acceder a ellos se tiene una tabla de segmentos que contiene la direccin del comienzo y dle final de cada segmento en memoria. Usar este tipo de direccionamiento tiene como ventajas que se puede definir segmentos de tamao arbitrario. Por otro lado, esta misma ventaja, el fraccionamiento de memoria es uno de sus problemas. Ambos modos de direccionamiento facilitan la multiprogramacin gracias a la tcnica de la memoria virtual que permite que un proceso no tenga que estar cargado ntegramente en memoria, si no que se cargan distintas pginas del mismo (o segmentos). Si se intenta cargar una pgina o segmento que no se encuentra en la memoria principal se produce una excepcin de falta de pgina o segmento y se accede a la memoria para cargar la informacin requerida en la memoria principal.

[editar] Algunos modos de direccionamiento obsoletos


Estos modos fueron usados durante 1950-1980 y ya no estn disponibles en los computadores modernos. Esta lista no es completa, puesto que hubo otros muchos modos de direccionamiento ms, algunos ms interesantes y peculiares.
y

Indirecto de multinivel de memoria

Si la longitd de palabra era mayor que la direccin, la palabra era referenciada por este direccionamiento indirecto de multinivel, que poda tener una "bandera" para indicar un ciclo indirecto de memoria. Es necesario tener cuidado para asegurar que una cadena de

direcciones indirectas no se refiera a ella misma , si lo hiciera, se llegara a un bucle infinito mientras trata de encontrar la direccin. El DEC PDP-10 con 18 bits de direccionamiento y palabras de 36 bits permitan este modo de direccionamiento con la posibilidad de usar un registro principal para cada fase.
y

Indirecto de memoria con autoincremento

En algunos minicomputadores haba normalmente 16 localizaciones especiales de memoria. Cuando se acceda a memoria, la direccin era automticamente incrementada y decrementada despus de su uso. Esto haca muy fcil acceder a memoria en bucles sin usar ningn registro.
y

"Pgina cero

La familia Motorola 6800 y la MOS Technology 6502 fueron unas familias de pobres microprocesadores CISC. Las instrucciones aritmticas y lgicas estaban casi todas hechas en contra de los valores de memoria. Como resultado, las instrucciones necesitaban incluir una localizacin de dos bytes en memoria. Los diseadores de estos procesadores incluan un "remedio" llamado direccionamiento "pgina cero". Los 256 bytes iniciales de memoria podan ser accedidos usando un byte o una direccin de memoria indexada. Esto reduca el tiempo de ejecucin de las instrucciones un ciclo de reloj. Almacenando datos en esta "region" los programas podan ser ms pequeos y ms rpidos. Como resultado, la "pgina cero" fue usada de forma pareca a un archivo de registro. En muchos sistemas, sin embargo, provoc una gran utilizacin del rea de memoria de la pgina cero por el sistema operativo y por los usuarios de programas. Esto limit su uso desde que el espacio libre fue limitado.
y

ndice Siguiente Instruccin

El Elliott 503, el Elliott 803, y el Apollo Guidance Computer slo se utiliza direccionamiento absoluto, y no tena ningn registro de ndice. Por lo tanto, saltos indirectos, o salta a travs 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 memoria actual a la siguiente instruccin. Adicin de un valor pequeo a la siguiente instruccin a ejecutar podra, por ejemplo, cambiar un JUMP 0 en un JUMP 20, creando as el efecto de un salto indexado. Tenga en cuenta que la instruccin se modifica sobre la marcha y se mantiene sin cambios en la memoria, es decir, no es auto -modificar el cdigo.

Direccionamiento [editar] Direccionamiento relativo

absoluto

vs

En esta seccin vamos a resaltar las diferencias de estos dos tcnicas de direccionamiento y aclarar las ventajas y desventajas que cada una de ellas conlleva.

Direccionamiento absoluto: Consiste en direccionar una posicin de memoria de forma directa, esto es, que la direccin hace referencia directamente a dicha posicin sin tener que realizar clculos adicionales para la EA. Direccionamiento relativo: Cuando para direccionar una posicin de memoria se hace referencia a otra sobre la cual se especifica un incremento o decremento, es decir, se requiere otro dato para el clculo de la direccin 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 ya han sido usados o que se encuentran en posiciones cercanas al PC tendrn una alta probabilidad de ser referenciados prximamente. Otras de las ventajas del direccionamiento relativo es que permite los cdigos reentrantes y cambiar ciertas direcciones sin tener que volver a compilar el programa. Es tambin til porque nunca se sabe en qu posicin de memoria se cargar un determinado programa. Por ltimo reduce el nmero de bits para especificar las direcciones y se facilita la referencia a datos del programa a travs de los registros base. El problema viene cuando queremos referenciar un dato al que no podemos acceder de forma relativa (p.e porque los registros base no puedan alcanzar dicha posicin aun con el incremento ms grande que podamos darle), en este caso se requiere el direccionamiento absoluto que s es capaz de acceder, por lo general, a cualquier direccin de memoria.

Modos de direccionamiento secuencial


Ejecucin secuencial
+------+ | nop | ejecuta la siguiente instruccin +------+ (Direccin Efectiva PC = direccin de la instruccin siguiente)

El CPU, 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 mayora de instrucciones en la mayora de las arquitecturas de CPU son instrucciones secuenciales. Debido a que la mayora de las instrucciones son de tipo secuencial, los diseadores de la CPU a menudo aaden caractersticas que deliberadamente sacrifican el rendimiento por un lado, y por otro las instrucciones de la rama de instrucciones a fin de que estas instrucciones secuenciales corran ms rpido. Las ramas condicionales cargan en el PC varios resultados posibles, muchas de las arquitecturas CPU usan algn otro modo de direccionamiento para la "toma" de rama, y la ejecucin secuencial para la "no toma" de rama.

Muchas caractersticas de las CPU's modernas mantienen la ilusin de que cada instruccin 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 ejecucin secuencial


Las CPU's que no utilizan la ejecucin secuencial con un contador de programa son extremadamente raras. En algunos procesadores, en cada instruccin siempre se especifica la direccin de la instruccin siguiente. Esta CPU tiene un puntero de instruccin que sostiene la direccin especificada, pero no tiene un programa completo mostrado. Las CPU's incluyen algunas cajas de ritmos de la memoria, la mquina SECD, y el RTX 32P. Otras arquitecturas de computacin van mucho ms all, trantando de evitar el cuello de botella de von Neumann, usando una variedad de alternativas para el contador de programa.

[editar] Ejecucin condicional


Algunas arquitecturas de ordenador (por ejemplo, ARM) tienen instrucciones condicionales que en algunos casos puede obviar la nacesidad de saltos condicionales y evitar el lavado de la tubera de la instruccin. Una instruccin tal como "comparar" see utiliza para establecer un cdigo de condicin, y las instrucciones posteriores incluyen una prueba de que el cdigo de condicin para ver si se cumplen o se ignoran.

[editar] Salto
+------+-----+-----+ |skipEQ| reg1| reg2| Salta a la siguiente instruccin si reg1=reg2 +------+-----+-----+ (EA PC = direccin de la instruccin siguiente + 1)

Saltar abordar puede ser considerado como un tipo especial de modo de direccionamiento relativo al PC con un fijo "una" compensacin. Al igual que en PC direccionamiento relativo, algunas CPU's tienen versiones de este modo de direccionamiento que slo se refieren a un registro ( "saltar si REG1==0") o no hay registros, de manera implcita, referente a algunos bits previamente establecidos en el registro del estado. Otras CPU's tienen una versin que selecciona un byte especfico de prueba ("saltar si el bit 7 de reg12 es 0"). A diferencia de todas las ramas condicinales, un "salto" no necesita instrucciones para vaciar la tubera de la instruccin, a pesar de que puede necesitarlas para hacer que la siguiente instruccin sea ignorada.

Modos simples de direccionamiento de datos


Registro
+------+-----+-----+-----+ | mul | reg1| reg2| reg3| +------+-----+-----+-----+ reg1 := reg2 * reg3;

Este "modo de direccionamiento" no tiene una direccin efectiva y no se considera como un modo de direccin en algunas computadoras. En este ejemplo, todos los operandos estn en registros, y el resultado se coloca en un registro.

[editar] Base mas desplazamiento y variaciones


Muchas veces nos referimos a l como "base ms desplazamiento"
+------+-----+-----+---------------- + | load | reg | base| offset | reg := RAM[base + offset] +------+-----+-----+---------------- + (La direccin 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 indirecto frente, la direccin efectiva es slo el valor en el registro de base. En muchas mquinas RISC, el registro 0 se fija en el valor cero. S el registro 0 se i utiliza como el registro de base, esto se convierte en un ejemplo de direccionamiento absoluto. Sin embargo, slo una pequea parte de la memoria se puede acceder (64 kilobytes, si el desplazamiento es de 16 bits). El desplazamiento de 16 bits puede parecer muy pequeo en relacin con el tamao de la memoria de los equipos actuales (esta es la razn por la 80386 se expandi a 32 bits). Podra ser peor ya que: los sevidores IBM System/360 slo tienen un signo de 12 bits de desplazamiento. Sin embargo, el principio de localizacin se aplica en un corto espacio de tiempo, la mayora 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 de direccionamiento absoluto. Ejemplo 1: Dentro de una subrutina, un programador estar principalmente interesados en los parmetros y las variables locales, que rara vez superan 64 KB, para lo que un registro base es suficiente. Si esta rutina es un mtodo de clase en un lenguaje orientado

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

MODOS DE DIRECCIONAMIENTO Tiene 12 modos de direccionamiento bsicos. Estos pueden clasificarse en 5 grupos: 1. Direccionamientos accesando dato inmediato y registro de datos (modos inmediato y de registro). 2. Direccionamiento accesando datos en memoria (modo memoria) 3. Direccionamiento accesando puertos E/S. (modo E/S) 4. Direccionamiento relativo 5. Direccionamiento implcito. 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 mismo tamao. ej. MOV DX, CX MOV CL, DL. 1.2 Direccionamiento inmediato. Un dato de 8 o 16 bits se especifica como parte de la instruccin. 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 direccin efectiva (EA) de 16 bits se toma directamente del campo de desplazamiento de la instruccin. El desplazamiento se coloca en la localidad siguiente al cdigo de operacin. 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 direccin efectiva EA est especificada en un registro apuntador o un registro ndice. El apuntador 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 los contenidos de BX o BP. Los segmentos usados son DS y SS. Cuando la memoria es accesada, la direccin fsica de 20 bits es calculada de BX y DS, por otra parte, cuando la pila es Accesada, la direccin es calculada de BP y SS.

Ej. MOV AL, START (BX). el operando fuente est en modo base, y la EA se obtiene sumando 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 un desplazamiento (8 o 16 bits). Ej. MOV ALPHA (SI)(BX),CL. Este direccionamiento proporciona una forma conveniente para direccionar un arreglo localizado en la pila. 2.6 Direccionamiento (cadena?) Este modo usa registros ndice. La cadena de instrucciones automticamente asume que SI apunta al primer byte o palabra del operando destino. Los contenidos de SI y DI son incrementados automticamente (poniendo a 0 DF mediante la instruccin CLD) o decrementados (poniendo a 1 DF mediante la instruccin 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. MOVS BYTE. 3. DIRECCIONAMIENTO ACCESANDO PUERTOS (E/S) Hay dos tipos de direccionamiento usando puertos: directo e indirecto. En el modo directo, el nmero 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 nmero de puerto se toma de DX, permitiendo as 64K puertos de 8 bits o 32K puertos de 16 bits. Las transferencias E/S de 8 y 16 bits deben hacerse va 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 de START. 5. DIRECCIONAMIENTO IMPLICITO. Las instrucciones que usan esta modo no tienen operandos. Ej. CLC.

MODOS DE DIRECCIONAMIENTO -Un modo de direccionamiento permite determinar un operando , o la ubicacin de un operando en una instruccin. Estos operandos pueden residir en diversas partes: 1.-La propia instruccin 2.-Memoria principal 3.-Registros internos de la CPU -Los programas utilizan varios MD motivados por: 1.- Ahorro de espacio 2.- Cdigo reubicable : se puede almacenar el programa en diversas zonas de memoria sin q afecte a la ejecucin del cdigo 3.-Estructuras de datos. 1) DIRECCIONAMIENTO INMEDIATO a) El operando est presente en la propia instruccin, por lo tanto, esta opera con un valor constante. b) El direccionamiento de una sola palabra: MAS RAPIDO >> el operando se encuentra ya en IR al fin de la fase de bsqueda. 2 palabras: lectura de mem adicional. -VENTAJA: No referencia a memoria. -DESVENTAJA: Operandos limitados por la instr. 2) DIRECCIONAMIENTO DIRECTO a) La instruccin contiene la direccin real del operando. b) dos tipos: 2.1) Direccionamiento absoluto: a) La instruccin contiene la direccin de memoria donde se encuentra el objeto, q se halla en una posicin de mem principal. b) Rango de posiciones limitado por CO. c) Formato de 2 palabras >> MAYOR CAPACIDAD DE DIRECCIONAMIENTO >> lectura adicional.

2.2) Direccionamiento mediante registro a) Operando almacenado en un registro de la CPU. La instruccin indica de q registro se trata. b) Registros limitados. c) CARACTERISTICAS: 1.- Lectura MAS RAPIDA q en memoria >> ninguna lectura adicional. 2.- Solo necesita CD pequeo. 3.- Rango operando = Rango registro >> LIMITA espacio de direcciones. -VENTAJA: Solo una referencia a memoria sin clculos previos. -DESVENTAJA: Espacio de direcciones reducido. 3) DIRECCIONAMIENTO RELATIVO A REGISTRO a)La instruccin NO contiene la direccin del operando >> debe ser calculada. -La instr contiene un DESPLAZAMIENTO q hay q aadir a la direccin marcada por un puntero para obtener la direccin 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 pequeo c) Varios tipos: 3.1) Direccionamiento relativo al registro contador del programa (PC) a) puntero : PC; almacena la direccin 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 identificacin del registro y el desplazamiento c) Conveniente para zonas de datos (como listas). 3.3) Direccionamiento relativo a pila (LIFO)

a) puntero : SP (stack pointer); apunta a la direccin de mem donde se encuentra la cima de la pila. b) DESPL. + valor SP = DIRECCIN 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 direccin de referencia y acta de puntero. b) Similar al relativo a registro base; pero el valor del reg indice se modifica con frecuencia en la ejecucin del programa. c) Para: -operaciones iterativas - recorrer estructuras de datos (tablas, vectores...).Permite realizar incrementos y decrementos de una cierta magnitud >> AUTO-INDEXADO *PREAUTOINCREMENTO y PREAUTODECREMENTO: 1.-el reg indice se incrementa (o decrementa) 2.- se obtiene la direccin = REG INDICE + DESPL.. *POSTAUTOINCREMENTO : 1.-direccin = REG INDICE +DESPL.. 2.- el reg indice se incrementa -VENTAJA : flexibilidad. -DESVENTAJA: complejidad. ) DIRECCIONAMIENTO INDIRECTO a) El CD referencia la direccin de una palabra, q a su vez contiene la direccin completa del operando. b) Para aplicaciones q utilizan datos situados en posiciones distantes en memoria

-VENTAJAS: 1) espacio de direccin grande; para N bits >> 2N 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 direccin 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 al operando sobre el que trabaja. No hay que dar direccion, porque va implicito. Ocupan menos, procesandose mas rapido. Ej: CPL=> calcula el C-1 del acumulador. 2.- Direccionamiento inmediato. El campo de direccion contiene ya los datos. Ej: ADD hexadecimal). 3.- Direccionamiento absoluto. El campo de direccion contiene la direccion fisica del dato. Ej: LD (F805H), A (Carga el contenido del acumulador en F805). 4.- Direccionamiento relativo. El campo de direccion contiene un desplazamiento con relacion a un punto de referencia (direccion base). La direccion base, normalmente es la que halla en el contador. A, 1BH (Suma al acumulador el valor 1B en

Ej: JR NC , 37 (Le sumamos 37 al contador de programas. JR es instruccion de salto, y NC provoca que no haya acarreo). 5.- Direccionamiento indexado. El campo de direccion contiene una direccion de referencia y la direccion real se calcula sumando a la de referencia el contenido de un registro 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 direccion en 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 40 60 70 80 RI Contenido 50 80 185 323 20 LDA @*40 D. indexado: 40+20=60 D. indirecto: posicion 60 => 80 posicion 80 => 323 Carga 323 en el acumulador.

8.- Direccionamiento indirecto indexado (combinacion): Ej: LDA *@40

Indireccion: posicion 40 => 50 Direccion indexada: 50 + 20 = 70 - en la posicion 70 => 185 (se cargaria en el acumulador)

S-ar putea să vă placă și