1.6 Modos de Direccionamiento
-
Upload
kikeozman-dorobo-velazquez -
Category
Documents
-
view
440 -
download
4
Transcript of 1.6 Modos de Direccionamiento
![Page 1: 1.6 Modos de Direccionamiento](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/1.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/9.jpg)
-> 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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082405/557213d3497959fc0b931c90/html5/thumbnails/11.jpg)
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.