1.6 Modos de Direccionamiento

13
MODOS DE DIRECCIONAMIENTO EQUIPO 6 Alumnos: Cristian Iván Martínez González Ocaña Martínez Nerelyn Olazarán Gómez Kevin Daryl Lenguajes de interfaz Ing. Ted Echevarría Dionisio G&G: 6 B Instituto tecnológico superior de Coatzacoalcos

Transcript of 1.6 Modos de Direccionamiento

Page 1: 1.6 Modos de Direccionamiento

modos de direccionamiento

EQUIPO 6

Alumnos:

Cristian Iván Martínez González

Ocaña Martínez Nerelyn

Olazarán Gómez Kevin Daryl Lenguajes de interfaz

Ing. Ted Echevarría Dionisio

G&G: 6 B

Instituto tecnológico superior de Coatzacoalcos

Page 2: 1.6 Modos de Direccionamiento

Contenido1.6 MODOS DE DIRECCIONAMIENTO.................................................................................................2

TIPOS DE DIRECCIONAMIENTO..........................................................................................................2

Implícito.........................................................................................................................................2

Inmediato......................................................................................................................................2

Directo...........................................................................................................................................3

Indirecto........................................................................................................................................4

Absoluto........................................................................................................................................5

De registro....................................................................................................................................5

Indirecto mediante registros.......................................................................................................5

De desplazamiento......................................................................................................................6

De pila...........................................................................................................................................6

Respecto a un registro base......................................................................................................6

Respecto a un registro índice....................................................................................................7

Indexado con autoincremento/autodecremento......................................................................7

Instrucción de salto con direccionamiento absoluto...............................................................8

Instrucción de salto con direccionamiento relativo.................................................................8

Page 3: 1.6 Modos de Direccionamiento

1.6 MODOS DE DIRECCIONAMIENTO

Los llamados modos de direccionamiento son las diferentes maneras de

especificar en informática un operando dentro de una instrucción en lenguaje

ensamblador

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 parte.

TIPOS DE DIRECCIONAMIENTO

Implícito

En este modo de direccionamiento no es necesario poner ninguna dirección de

forma explí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.

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 de dirección. El campo del operando contiene el operando actual que

se debe utilizar en conjunto con la operación especificada en la instrucción. Las

instrucciones de modo inmediato son útiles para inicializar los registros en un valor

constante.

Cuando el campo de dirección especifica un registro del procesador, la instrucción

se dice que está en el modo de registro.

Page 4: 1.6 Modos de Direccionamiento

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. El operando reside en la memoria y su dirección es dada directamente

por el campo de dirección de la instrucción. En una instrucción de tipo ramificación

el campo de dirección especifica la dirección de la rama actual.

Con este tipo de direccionamiento, la dirección efectiva es contenida en la misma

instrucción, tal como los valores de datos inmediatos que son contenidos en la

instrucción. Un procesador de 16 bits suma la dirección efectiva al contenido del

segmento de datos previamente desplazado en 4 bits para producir la dirección

física del operando.

Page 5: 1.6 Modos de Direccionamiento

Indirecto

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

la dirección efectiva del operando.

Page 6: 1.6 Modos de Direccionamiento

Absoluto

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

la instrucción.

De registro

Sirve para especificar operandos que están en registros.

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 la memoria y utiliza su parte de dirección para acceder a la memoria de nuevo

para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren

que el campo de direcció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...

Page 7: 1.6 Modos de Direccionamiento

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 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

direccionamiento usaremos el SP. El desplazamiento más el valor del SP nos dará

la dirección 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 más

complejo que otros tipos estudiados más 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 parámetros apilados en la pila, valga la

redundancia). Consiste, al igual que el indirecto a través de registro, en calcular la

Page 8: 1.6 Modos de Direccionamiento

EA (Effective Address) como la suma del contenido del registro base y un cierto

desplazamiento (u offset) que siempre será positivo. Esta técnica permite códigos

reentrantes y acceder de forma fácil y rápida a posiciones cercanas de memoria.

EA = RB+offset RB = registro base offset = desplazamiento -> RB se comporta

como una dirección 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 dirección de memoria que se

pasa también 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 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 dos

anteriores y consiste en calcular la dirección efectiva como:

EA = RI+RB+DM

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

Indexado con autoincremento/autodecremento

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

La única diferencia es que permite un incremento o decremento de la dirección

final o el registro índice según

los siguientes casos:

-> Indexado con autopreincremento: Incrementa el registro índice primero (se

incrementa un valor, según el tamaño del objeto direccionado) y luego calcula la

EA al igual que el direccionamiento indexado.

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

incrementa esta.

Page 9: 1.6 Modos de Direccionamiento

-> Indexado con autopredecremento: Decrementa el registro índice y después

calcula la dirección efectiva.

-> Indexado con autoposdecremento: Calcula la dirección efectica y después

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

Instrucción 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 instrucción jr +03,

saltaremos tres posiciones posteriores a PC (también podría ser -03 y serían

posiciones anteriores). Pero, ¡cuidado! si esa instrucción estaba en la posición

0x0A la dirección de PC a incrementar será la inmediatamente posterior (ya que

PC se incrementa automá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.

Direccionamiento paginado y direccionamiento segmentado

Paginado: La memoria se encuentra actualmente dividida en páginas(bloques

de igual longitud).

Para obtener las direcciones necesitamos:

Indicador de página (IP): en un registro específico o de propósito general de la

máquina.

Dirección de la palabra (DP): en el campo CD de la instrucción.

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

Page 10: 1.6 Modos de Direccionamiento

Segmentado: La memoria se divide en porciones cuyos tamaños son variables.

Así, para acceder a ellos se tiene una tabla de segmentos que contiene la

dirección del comienzo y del final de cada segmento en memoria.

Usar este tipo de direccionamiento tiene como ventajas que se puede definir

segmentos de tamaño arbitrario. Por otro lado, esta misma ventaja, el

fraccionamiento de memoria es uno de sus problemas.

Ambos modos de direccionamiento facilitan la multiprogramación gracias a la

técnica de 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 (o segmentos). Si se intenta cargar una página o segmento que no se

encuentra en la memoria principal se produce una excepción de falta de página o

segmento y se accede a la memoria para cargar la información requerida en la

memoria principal.

Direccionamiento absoluto vs Direccionamiento relativo

En esta sección vamos a resaltar las diferencias de estos dos técnicas de

direccionamiento y aclarar las ventajas y desventajas que cada una de ellas

conlleva.

Direccionamiento absoluto: Consiste en direccionar una posición de

memoria de 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.

Page 11: 1.6 Modos de Direccionamiento

Direccionamiento relativo: Cuando para direccionar una posición de

memoria se 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 ya han 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 del direccionamiento relativo es que permite los códigos reentrantes y

cambiar ciertas direcciones sin tener que volver a compilar el programa. Es

también útil porque nunca se sabe en qué posición de memoria se cargará un

determinado programa. Por último reduce el número de bits para especificar las

direcciones y se facilita la referencia a datos del programa a través 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

posición aun con el incremento más grande que podamos darle), en este caso se

requiere el direccionamiento absoluto que sí es capaz de acceder, por lo general,

a cualquier dirección de memoria.