MODOS DE DIRECCIONAMIENTO 1. Introduccin 2. Direccionamiento inmediato 3. Direccionamiento directo 4. Direccionamiento relativo a registro 5. Direccionamiento indexado 6. Direccionamiento indirecto 7. Combinaciones de modos bsicos de direccionamiento 8. Modos de direccionamiento del microprocesador M68000 9. Direccionamiento paginado y direccionamiento segmentado 1. INTRODUCCIN - Modo de direccionamiento: mecanismo que permite conocer la ubicacin de un dato o instruccin. - Objeto: dato o instruccin 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 reubicacin del cdigo. Facilitar el manejo de las estructuras de datos. Modos de direccionamiento en las instrucciones - Los operandos y resultado de una instruccin son accedidos a travs de modos de direccionamiento. - Cada campo de operando o resultado en una instruccin contiene informacin acerca del modo de direccionamiento empleado para acceder a l. Cdigo de operacin (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 direccin o un desplazamiento (suele ocupar bastante espacio). CO MD OP1 OP2 RES Mdir CR CD Estructura y Tecnologa de Computadores I Modos de direccionamiento -2- 2. DIRECCIONAMIENTO INMEDIATO - La instruccin contiene al propio objeto. - Se emplea cuando la instruccin contiene un valor constante. - El tamao del operando viene determinado por el espacio reservado para l en el formato de instruccin. - Subcampos del campo de operando - Esquema de funcionamiento - Ejemplo M68000: MOVE.B #5,D0 Mdir CD (operando inmediato) Estructura y Tecnologa de Computadores I Modos de direccionamiento -3- 3. 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 Mdir CR Estructura y Tecnologa de Computadores I Modos de direccionamiento -4- Direccionamiento directo absoluto - La instruccin contiene la direccin 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 pgina base. - Esquema de funcionamiento - Ejemplo M68000: MOVE.B D0,$A61350 Mdir CD (direccin) Estructura y Tecnologa de Computadores I Modos de direccionamiento -5- 4. DIRECCIONAMIENTO RELATIVO A REGISTRO - El operando se encuentra en memoria. - La direccin 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 instruccin). - Subcampos del campo de operando Direccionamiento relativo a registro base - Se emplea como puntero un registro base, que puede ser un registro especfico 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 Mdir CR CD (desplazamiento) Estructura y Tecnologa de Computadores I Modos de direccionamiento -6- 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 cdigo. - 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 posicin 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) Estructura y Tecnologa de Computadores I Modos de direccionamiento -7- 5. DIRECCIONAMIENTO INDEXADO - Similar al direccionamiento relativo a registro base. El operando se encuentra en memoria. Registro ndice: se modifica a menudo en la ejecucin del programa. - Subcampos del campo de operando - El registro ndice puede permitir incrementos o decrementos antes o despus de obtenerse la direccin del objeto: Preincremento Predecremento Posincremento Posdecremento - El incremento o decremento puede depender del tamao del objeto referenciado. - Ejemplos M68000 (slo 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. 6. DIRECCIONAMIENTO INDIRECTO - El operando se encuentra en memoria. - La instruccin contiene una direccin que se emplea para leer en memoria una direccin intermedia que ser la verdadera direccin del objeto buscado. - Subcampos del campo de operando - Esquema de funcionamiento Mdir CR CD (desplazamiento) Mdir CD (direccin indirecta) Estructura y Tecnologa de Computadores I Modos de direccionamiento -8- 7. COMBINACIONES DE MODOS BSICOS DE DIRECCIONAMIENTO Direccionamiento indirecto a registro - Es similar al direccionamiento indirecto, pero la direccin intermedia est contenida en un registro, no en una posicin de memoria. - La instruccin 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) Combinacin de modos indirecto e indexado - Subcampos del campo de operando - Preindexado: El contenido del registro ndice se suma al de la direccin indirecta en el primer paso de la indireccin. Mdir CR Mdir CR CD (direccin indirecta) Estructura y Tecnologa de Computadores I Modos de direccionamiento -9- - Posindexado: el contenido del registro ndice se suma a la direccin intermedia en el segundo paso de la indireccin. - Puede haber preincremento o predecremento (total: 8 posibilidades). Direccionamiento relativo a registro con ndice y desplazamiento - La direccin 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) Mdir CR 1 CR 2 CD (desplazamiento) Estructura y Tecnologa de Computadores I Modos de direccionamiento -10- 8. MODOS DE DIRECCIONAMIENTO DEL MICROPROCESADOR M68000 - Inmediato (slo operandos fuente): MOVE.B #$48,D3 - Mediante registro De datos: MOVE.B #$48,D3 De direcciones: MOVE.W #$4AE8,A5 - Absoluto directo: MOVE.W D2,$4AB12F0 - Relativo a registro de direcciones (indirecto a registro): MOVE.L $345A0A5F,(A6) - Relativo a registro de direcciones con desplazamiento: MOVE.L $345A0A5F,3(A6) - Relativo a registro de direcciones con desplazamiento e ndice: MOVE.L $345A0A5F,4(A1,A2) MOVE.L $345A0A5F,4(A4,D7) - Relativo a registro de direcciones con predecremento: MOVE.W D0,-(A7) - Relativo a registro de direcciones con posincremento: MOVE.W D0,(A7)+ - Relativo a contador de programa con desplazamiento (slo operando fuente): MOVE.L 4(PC),$345A0A5F - Relativo a contador de programa con desplazamiento e ndice (slo operando fuente): MOVE.L 4(PC,A2),$345A0A5F MOVE.L 4(PC,D7),$345A0A5F Estructura y Tecnologa de Computadores I Modos de direccionamiento -11- 9. DIRECCIONAMIENTO PAGINADO Y DIRECCIONAMIENTO SEGMENTADO Direccionamiento paginado - La memoria se encuentra dividida en pginas (bloques de igual longitud). - Las direcciones se componen de dos partes: Indicador de pgina (IP): en un registro especfico o de propsito general de la mquina. Direccin de palabra (DP): en el campo CD de la instruccin. - Concatenando IP y DP se obtiene la direccin completa. - Esquema de funcionamiento Direccionamiento segmentado - La memoria se divide en porciones de tamao variable llamadas segmentos. - Tabla de segmentos: contiene la direccin del comienzo y del final de cada segmento en memoria. - Problemas: fraccionamiento de memoria. - Ventajas: se pueden definir segmentos de tamao arbitrario.