sábado, 31 de agosto de 2013

Modos de direccionamiento

INTRODUCCIÓN
- Definición de Modo de direccionamiento: mecanismo que permite conocer la ubicación de un dato o instrucción.
- Objeto: dato o instrucción que se desea direccionar.
Un computador dispone de varios modos de direccionamiento.
- Objetivos de los modos de direccionamiento:
• Reducir el espacio ocupado en memoria por las instrucciones.
• Permitir la reubicación del código.
• Facilitar el manejo de las estructuras de datos.

Modos de direccionamiento en las instrucciones
- Los operandos y resultado de una instrucción son accedidos a través de modos de direccionamiento.
- Cada campo de operando o resultado en una instrucción contiene información acerca del modo de direccionamiento empleado para acceder a él.
• Código de operación (CO) y modificador (MD)
• Operandos (OPi) y resultado (RES)
 
 
- Cada campo de operandos o resultado tendrá los siguientes subcampos:
• Mdir: especificador del modo de direccionamiento (ocupa pocos bits).
• CR: campo especificador del registro involucrado en el modo de direccionamiento (ocupa pocos bits).
• CD: campo que puede contener un operando inmediato, una dirección o un desplazamiento (suele ocupar bastante espacio).
 
 
DIRECCIONAMIENTO INMEDIATO
- La instrucción contiene al propio objeto.
- Se emplea cuando la instrucción contiene un valor constante.
- El tamaño del operando viene determinado por el espacio reservado para él en el formato de instrucción.
- Subcampos del campo de operando
 
- Esquema de funcionamiento
 
 
- Ejemplo M68000: MOVE.B #5,D0
 
DIRECCIONAMIENTO DIRECTO
Direccionamiento mediante registro
- El operando se encuentra contenido en un registro.
- Subcampos del campo de operando
 

- Esquema de funcionamiento
 
- Ejemplos M68000: MOVE.B #5,D0
                              MOVE.W #$23A0,A3
 
 
Direccionamiento directo absolute
- La instrucción contiene la dirección de memoria exacta donde se encuentra el operando.
- El operando se encuentra en memoria.
- Subcampos del campo de operando
 
 
 
• El rango de CD debe ser capaz de direccionar toda la memoria.
 
• Si no es capaz: direccionamiento de página base.
- Esquema de funcionamiento
 
 
 
- Ejemplo M68000: MOVE.B D0,$A61350
 
 
 
DIRECCIONAMIENTO RELATIVO A REGISTRO
- El operando se encuentra en memoria.
- La dirección del objeto ha de ser calculada a partir de la suma del contenido de un cierto registro (que funciona como un puntero) y un desplazamiento (contenido en la instrucción).
- Subcampos del campo de operando
 
 
 
Direccionamiento relativo a registro base
- Se emplea como puntero un registro base, que puede ser un registro específico o uno cualquiera de los del banco.
- El registro base utilizado se indica en el subcampo CR.
- Esquema de funcionamiento
 
 
 
- Ejemplo M68000: MOVE.W 5(A0),D1
 
 
 
Direccionamiento relativo a contador de programa
- Como puntero se emplea el contador de programa.
- Este direccionamiento se emplea para acceder a instrucciones (saltos relativos o bucles) o para referenciar datos cercanos al código.
- No es preciso introducir el subcampo CR.
- Esquema de funcionamiento
 
 
 
- Ejemplo M68000: MOVE.L 24(PC),D0


Direccionamiento relativo a puntero de pila
- Pila: estructura de tipo LIFO marcada por:
• el fondo de la pila
• el puntero de pila (*SP), registro que apunta a la última posición ocupada de la pila
- Como puntero del direccionamiento se emplea el puntero de pila.
- No es preciso incluir el subcampo CR, y a veces no lleva CD.
- Ejemplo M68000: MOVE.B D0,24(SP) MOVE.B D0,24(A7)



DIRECCIONAMIENTO INDEXADO
- Similar al direccionamiento relativo a registro base.
• El operando se encuentra en memoria.
• Registro índice: se modifica a menudo en la ejecución del programa.
 
- Subcampos del campo de operando
 
 
 
- El registro índice puede permitir incrementos o decrementos antes o después de obtenerse la dirección del objeto:
• Preincremento
• Predecremento
• Posincremento
• Posdecremento

- El incremento o decremento puede depender del tamaño del objeto referenciado.
- Ejemplos M68000 (sólo predecremento y posincremento):
MOVE.B D0,(A0)+ incrementa A0 en 1
MOVE.W D0,-(A2) decrementa A2 en 2
MOVE.L (A5)+,D3 incrementa A5 en 4

- Utilizado para recorrer tablas o vectores.
 
DIRECCIONAMIENTO INDIRECTO
- El operando se encuentra en memoria.
- La instrucción contiene una dirección que se emplea para leer en memoria una dirección intermedia que será la verdadera dirección del objeto buscado.
- Subcampos del campo de operando
 
 
- Esquema de funcionamiento
 
 

COMBINACIONES DE MODOS BÁSICOS DE DIRECCIONAMIENTO
Direccionamiento indirecto a registro
- Es similar al direccionamiento indirecto, pero la dirección intermedia está contenida en un registro, no en una posición de memoria.
- La instrucción contendrá la referencia al registro.
- Subcampos del campo de operando
 

- Coincide con el direccionamiento relativo a registro base sin usar desplazamiento.
- Ejemplo M68000: MOVE.L D0,(A4)


Combinación de modos indirecto e indexado
- Subcampos del campo de operando
 

- Preindexado: El contenido del registro índice se suma al de la dirección indirecta en el primer paso de la indirección.
 
 
- Posindexado: el contenido del registro índice se suma a la dirección intermedia en el segundo paso de la indirección.
 

- Puede haber preincremento o predecremento (total: 8 posibilidades).
Direccionamiento relativo a registro con índice y desplazamiento

- La dirección del objeto se obtiene sumando el contenido de un registro base, un
registro índice y un desplazamiento.
- Subcampos del campo de operando
 
 
- Ejemplo M68000: MOVE.L D0,12(A0,D2)
 
 
 

Fuentes:
 
 
 
 

No hay comentarios:

Publicar un comentario