Introducción
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.
Supongamos una arquitectura de pila, las operaciones aritméticas no
requieren direccionamiento 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 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 parámetro implícito y este
es el AC.
Para finalizar y dejar este modo de direccionamiento generalizado para
las arquitecturas más usuales, remarcamos que también podemos encontrarlo en la
arquitectura con registros de propósito general, por ejemplo con órdenes como
setc, que pone a 1 el registro c (acarreo).
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
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.
Ejemplo: MOV A,17H
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
De registro
Sirve para especificar operandos que están en registros.
Ejemplo: MOV A,R0
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:
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.
COMBINACIÓN
DIRECTA DE MODOS BÁSICOS:
a) Combinación “mediante registro” e “indirecto” El registro utilizado
contiene la dirección
b) “Indirecto” e “indexado”
No hay comentarios:
Publicar un comentario