Direccionamiento Implícito.
No necesita recibir la dirección del
operando, esta se encuentra implícita en la operación.
Ej.:
MUL BX
Ventaja:
Acceso rápido.
Desventaja:
Conocer perfectamente la operación.
Direccionamiento Inmediato.
Recibe el operando y no la dirección
de este.
Ej.:
MOV AX, 4
Ventaja: no requiere memoria extra
para traer el operando.
Desventaja: Solo puede utilizar
constantes.
Direccionamiento Directo.
Recibe la dirección en memoria del
operando.
Ej.:
MOV AX, [10]
Ventaja: Acceso rápido para variables
globales.
Desventajas: La instrucción siempre
accesará la misma localidad de memoria.
Solo puede cambiar el valor del
operando pero no su dirección.
Direccionamiento Indirecto.
Recibe la dirección de la palabra en
memoria (apuntador) que contiene la
dirección del operando.
Ej.:
MOV AX, [[10]]
Ventaja: La dirección en memoria puede
apuntar a distintas localidades de memoria.
Desventaja: La ejecución de la
instrucción requiere de dos referencias a memoria para traer el operando (una
para obtener su dirección y la otra para obtener su valor).
Direccionamiento de Registro (directo).
Similar al direccionamiento directo.
Recibe un registro en lugar de una
dirección en memoria.
Ej.:
MOV AX, BX
Ventaja: No necesita referencias a
memoria.
Desventaja: Número limitado de
registros en el CPU -> usar este direccionamiento para operandos muy
utilizados.
Este es el modo de direccionamiento
más común.
Direccionamiento de Registro
Indirecto.
Similar al direccionamiento indirecto.
Recibe un registro que contiene la
dirección (apuntador) en memoria del operando.
Ej.:
MOV AX, [BX]
Ventaja: La dirección en el registro
puede apuntar a distintas localidades de memoria (misma indirecta).
Utiliza una referencia menos a memoria
en comparación con el direccionamiento indirecto.
Utilizado para apuntadores de uso
frecuente.
Direccionamiento de Desplazamiento.
Combina los modos de direccionamiento
directo y de registro indirecto.
Se requiere que la dirección del
operando sea calculada en base a una dirección fija más otra dirección de
desplazamiento.
Dirección
= Fija + Desplazamiento.
Tanto la dirección fija como la de
desplazamiento pueden ser referenciadas de manera directa o indirecta.
La dirección fija puede estar
ímplicita en la instrucción.
Relativo.
Indexado.
Base.
·
Relativo.
La dirección fija es el registro PC y
se encuentra implícita en la instrucción.
Ej.:
MOVPC AX, BX (BX = 5, PC = 10)
·
Indexado.
La dirección fija referencia a la
memoria.
El desplazamiento contiene un número
positivo para calcular la dirección del operando.
Ventaja: Eficiente para operaciones
ciclicas.
Desventaja: dos accesos a memoria.
Dos tipos principales:
- Preindexado.
- Postindexado.
Preindexado (indexamiento previo)
La dirección fija es sumada al
desplazamiento.
El resultado es usado como una
dirección en memoria donde se encuentra la dirección del operando.
Ej.:
MOV AX, [BX,CX]
Postindexado (indexamiento posterior)
La dirección fija contiene la
dirección en memoria que a su vez contiene la dirección a ser utilizada para obtener el operando.
A la dirección obtenida a partir de la
dirección fija se le suma el desplazamiento para obtener la dirección del
operando.
Ej.:
MOV AX, [BX]CX
________________________________________________________________________________
Direccionamiento
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.
ejemplo:MOV A,#17H
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.
Ejemplo: MOV A,17H
Direccionamiento
Indirecto
El campo de operando contiene una dirección de memoria, en
la que se encuentra la dirección efectiva del operando.
Ejemplo: MOV A,@17H
Direccionamiento
Absoluto
El campo de operando contiene una dirección en memoria, en
la que se encuentra la instrucción. Y no se cancela.
Direccionamiento De registro
Sirve para especificar operandos que están en registros. En
este modo, los operandos están en registros que residen dentro de la CPU
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...
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.
Relativo a un
registro base
Consiste, al igual que el indirecto a través de registro, en
calcular la dirección efectiva (EA, effective address) como la suma del
contenido del registro base y un cierto desplazamiento (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. Este modo de direccionamiento
es muy usado por los ensambladores cuando se llaman a las funciones (para
acceder a los parámetros almacenados en la pila).
Relativo a un
registro índice
Es similar al anterior, excepto 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:
Indexado respecto
a una base
Se trata de una combinación de los dos anteriores y consiste
en calcular la dirección efectiva como:
Relativo 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.
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.
-> 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, 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.
http://es.wikipedia.org/wiki/Modos_de_direccionamiento
________________________________________________________________________________
1) DIRECCIONAMIENTO INMEDIATO
a) El operando está presente en la
propia instrucción, 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 búsqueda. 2 palabras: lectura de mem adicional.
-VENTAJA: No 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 se halla 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.
2.2) Direccionamiento mediante
registro
a) Operando almacenado en un registro
de la CPU. La instrucción 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 pequeño.
3.- Rango operando = Rango registro
>> LIMITA espacio de direcciones.
-VENTAJA: Solo 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)
a) puntero : SP (stack pointer);
apunta a la dirección de mem donde se encuentra la cima de 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 con frecuencia en la ejecución
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 dirección = REG
INDICE + DESPL..
*POSTAUTOINCREMENTO :
1.-dirección = REG INDICE +DESPL..
2.- el reg indice se incrementa
-VENTAJA : flexibilidad.
-DESVENTAJA: complejidad.
5) DIRECCIONAMIENTO INDIRECTO
a) El CD referencia la dirección de
una palabra, q a su vez contiene la dirección completa del operando.
b) Para aplicaciones q utilizan datos
situados en posiciones distantes en memoria
-VENTAJAS: 1) espacio de dirección
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 dirección completa del operando.
-Emplea una referencia a memoria menos
No hay comentarios:
Publicar un comentario