El termino dirección debe interpretarse en su sentido general de localización del operando, en cualquier lugar, y no en el sentido mas estricto de dirección de memoria.
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).
Tipos de direccionamiento mas usuales
Direccionamiento inmediato
Direccionamiento inmediato
Direccionamiento directo
Direccionamiento relativo a registro
Direccionamiento indexado
Direccionamiento indirecto
Combinaciones de modos básicos de direccionamiento
Direccionamiento inmediato
En este modo es el operando el que figura en la instrucción no su dirección En otras palabras el campo de operando contiene el mismo, sin transformación alguna, la información sobre la que hay que operar. Este modo es útil para inicializar registros o palabras de memoria con un valor constante.
Direccionamiento inmediato
En este modo es el operando el que figura en la instrucción no su dirección En otras palabras el campo de operando contiene el mismo, sin transformación alguna, la información sobre la que hay que operar. Este modo es útil para inicializar registros o palabras de memoria con un valor constante.
Ejemplo M68000: MOVE.B #5,D0
Direccionamiento directo
Este es el modo de direccionamiento mas sencillo. El campo de dirección no necesita transformación alguna para dar la dirección efectiva, es decir la función que transforma el campo de operando en la dirección efectiva es la identidad. Esto significa que el campo de operando es ya la dirección efectiva.
Este direccionamiento solo se usa en ordenadores pequeños en que el programa siempre se sitúa en la misma zona de memoria ya que dificulta la relocalizacion de los programas, es decir que el código de los programas no dependa de su situación en memoria. En ordenadores mas grandes, este modo esta reservado para acceder a direcciones del sistema, que normalmente se refieren a operaciones de entrada y salida, ya que estas direcciones no dependen del programa.
Ejemplos M68000: MOVE.B #5,D0
MOVE.W #$23A0,A3
Direccionamiento indirecto
En este modo el campo de operando de la instrucción indica la localización de la dirección efectiva del operando. El modo de direccionamiento indirecto puede adquirir diferentes formas según cual sea el lugar donde se encuentre la dirección del operando. En general, todos los modos de direccionamiento tienen su versión indirecta que añade un eslabón mas a la cadena del direccionamiento. Por ejemplo existe el direccionamiento indirecto por registro, en el que el registro especificado contiene la dirección del operando, no el operando mismo.
Este direccionamiento es útil cuando se trabaja con apuntadores ya que los apuntadores son variables que contienen las direcciones de los operandos, no los operandos mismos.
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).
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).
Ejemplo M68000: MOVE.W 5(A0),D1
Direccionamiento indexado
En este modo de direccionamiento, la direccion del operando tambien se calcula sumando un registro de la CPU al campo de operando, este registro es un registro especifico para este uso llamado registro indice.
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.
Coincide con el direccionamiento relativo a registro base sin usar desplazamiento.
Ejemplo M68000: MOVE.L D0,(A4)
Combinación de modos indirecto e indexado
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.
registro índice y un desplazamiento.
Ejemplo M68000: MOVE.L D0,12(A0,D2)
En este modo de direccionamiento, la direccion del operando tambien se calcula sumando un registro de la CPU al campo de operando, este registro es un registro especifico para este uso llamado registro indice.
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.
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 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.
Coincide con el direccionamiento relativo a registro base sin usar desplazamiento.
Ejemplo M68000: MOVE.L D0,(A4)
Combinación de modos indirecto e indexado
Preindexado: El contenido del registro índice se suma al de la dirección indirecta en el
primer paso de la indirección.
segundo paso de la indirección.
Direccionamiento relativo a registro con índice y desplazamiento
La dirección del objeto se obtiene sumando el contenido de un registro base, unregistro índice y un desplazamiento.
Ejemplo M68000: MOVE.L D0,12(A0,D2)
FUENTES:
http://dac.escet.urjc.es/~lrincon/uned/etc1/ModosDireccionamiento.pdf
http://www.infor.uva.es/~bastida/OC/modos.pdf
http://dac.escet.urjc.es/~lrincon/uned/etc1/ModosDireccionamiento.pdf
http://www.infor.uva.es/~bastida/OC/modos.pdf
No hay comentarios:
Publicar un comentario