ჱ
Conceptos
ჱ Tipos
Un 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 (OP1) y resultado (RES)
CO
|
MD
|
OP1
|
OP2
|
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).
Mdir
|
CR
|
CD
|
Tipos:
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.
DIRECCIONAMIENTO
DIRECTO
ჱ El operando se encuentra contenido en un
registro.
ჱ
Subcampos
del campo de operando.
Mdir
|
CR
|
DIRECCIONAMIENTO
DIRECTO ABSOLUTO
¤
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
Mdir
|
CD (dirección)
|
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.
Mdir
|
CR
|
CD (desplazamiento)
|
DIRECCIONAMIENTO
RELATIVO A REGISTRO BASE
·
Se
emplea como puntero un registro base, que puede ser un registro específico o
unocualquiera de los del banco.
·
El
registro base utilizado se indica en el subcampoCR.
·
Esquema
de funcionamiento.
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 subcampoCR.
ჱ
Esquema de funcionamiento.
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
Mdir
|
CR
|
CD (desplazamiento)
|
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
Mdir
|
CR
|
CD (desplazamiento)
|
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
Mdir
|
CR
|
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.
Mdir
|
CR1
|
CR2
|
CD (desplazamiento)
|
Ejemplo
M68000: MOVE.L D0,12(A0,D2)
No hay comentarios:
Publicar un comentario