You are on page 1of 12

Arquitectura de Ordenadores

Modos de Direccionamiento del Intel Pentium


Abelardo Pardo abel@it.uc3m.es

Universidad Carlos III de Madrid


Departamento de Ingenier a Telem atica

Modos de Direccionamiento
Las operaciones deben de obtener sus operados, ya sea de los registros o de la memoria. Para acceder a estos operandos se precisa especicar un modo de obtenerlos. Los procesadores permiten especicar la posici on de un operando de m ultiples maneras.

ADM-1

Modo de Direccionamiento: Dado uno o varios campos de la instrucci on, calcular la direcci on efectiva (de) de un operando. La Direcci on Efectiva no tiene por qu e ser una direcci on en memoria.

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Cu antos modos de direccionamiento existen?


Hay innidad de formas de calcular la direcci on de un operando.

ADM-2

Cada procesador implementa un subconjunto de formas posibles.

Tanto los operandos involucrados en el c alculo como las diferentes formas de calcular esta direcci on est an todos codicados en la instrucci on.

Cuanto m as compleja sea la tarea de c alculo de la direcci on efectiva, o m as operandos incluya, m as compleja ser a la decodicaci on y ejecuci on de la instrucci on.

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Terminolog a
Existen dos espacios posibles de direcci ones de operandos: 1. Direcci on de Registro: Para aquellos operandos que est an almacenados en registro. 2. Direcci on de Memoria: Para aquellos operandos que est an almacenados en memoria.

ADM-3

Nos referiremos a los diferentes campos de la instrucci on como ci1, ci2, etc. La expresi on (ci1) signica el contenido del campo ci1 de la instrucci on, o lo que es lo mismo, el n umero codicado en dicho campo. La expresi on (Ri), donde Ri es el nombre de un registro, signica el contenido del registro. La expresi on dato R signica que se carga en el registro R el dato dato.

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Registro
Los registros pueden almacenar operandos.

ADM-4

La direcci on de registro es diferente a la direcci on de memoria.

de = (ci)

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Registro: Ejemplo


Ejemplo: ADD %ebx, %edx Los campos que especican los registros est an en el byte ModR/M.

ADM-5

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Registro Indirecto


La direcci on efectiva est a contenida en un registro codicado en la instrucci on. para acceder a un array de elementos. Util de = ((ci))

ADM-6

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Registro Indirecto: Ejemplo


Ejemplo: ADD %ebx, ( %edx) Los campos que especican los registros est an en el byte ModR/M y en el c odigo de operaci on.

ADM-7

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Autoincremento
El registro involucrado en el c alculo de la direcci on efectiva se incrementa despu es de ser utilizado.

ADM-8

del incremento (1, 2, 4, etc) est del operando (8, 16, 32 bits, etc) El tamano a relacionado con el tamano de = ((ci)); (Ri) + {1, 2, 4} Ri, donde Ri es el registro codicado en el campo ci.

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Autoincremento: Ejemplo


Ejemplo: POP %eax Como el tama no del operando es 4 bytes el incremento es de 4.

ADM-9

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Autodecremento
El registro involucrado en el c alculo de la direcci on efectiva se decrementa antes de ser utilizado.

ADM-10

del decremento (1, 2, 4, etc) est del operando (8, 16, 32 bits, etc) El tamano a relacionado con el tamano de = ((ci)) {1, 2, 4}; (Ri) {1, 2, 4} Ri, donde Ri es el registro codicado en el campo ci.

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Autodecremento: Ejemplo


Ejemplo: PUSH %eax Como el tama no del operando es 4 bytes el decremento es de 4.

ADM-11

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Absoluto
La direcci on efectiva se encuentra en el campo de la propia instrucci on. para acceder a constantes de un programa. Util de = (ci)

ADM-12

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Absoluto: Ejemplo


Ejemplo: MOV mistring, %ebx Instrucci on que carga el contenido en memoria con etiqueta mistring en el registro %ebx. El lenguaje ensamblador nos permite denir y utilizar estas etiquetas.

ADM-13

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Base + Desplazamiento


La direcci on se obtiene sumando el contenido de un registro y un valor codicado en la instrucci on. para acceder a un campo de un record de datos. Util de = (ci1) + ((ci2))

ADM-14

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Base + Desplazamiento: Ejemplo


Supongamos un record almacenado en una direcci on contenida en %ebx y con campos: boolean a; /* 4 bytes */ int b; /* 4 bytes */ int c; /* 4 bytes */ C omo cargamos el valor del campo c en el registro %eax?

ADM-15

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Base + Indice


La direcci on se obtiene sumando el contenido de dos registros.

ADM-16

para acceder a los elementos de un array secuencialmente, pues se conserva la direcci Util on de inicio de los datos y el ndice. de = ((ci1)) + ((ci2))

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Base + Indice: Ejemplo


Supongamos el array de enteros almacenado en la posici on contenida en el registro %ebx.

ADM-17

C omo podemos iterar sobre todos los elementos del array?

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Indice Escalado + Desplazamiento


La direcci on se obtiene sumando el registro ndice escalado al valor codicado en la instrucci on.

ADM-18

para acceder a arrays que est Util an en posiciones jas y que contienen elementos de tama nos 1, 2, 4 u 8 bytes. de = (ci1) + ((ci2)) (ci3); tal que (ci3) {1, 2, 4, 8}

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Indice Escalado + Desplazamiento: Ejemplo


Supongamos un array de enteros como variable global del programa con la siguiente estructura: tabla 100 200 300 . . .

ADM-19

Para iterar sobre los elementos de la tabla no necesitamos almacenar la direcci on base en un registro.

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Base + Indice Escalado + Desplazamiento


Combinaci on de los modos base + ndice e ndice escalado + desplazamiento.

ADM-20

La direcci on se obtiene sumando el desplazamiento, el registro base y el registro ndice multiplicado por el factor de escala pertinente. de = (ci1) + ((ci2)) + ((ci3)) (ci4); tal que (ci4) {1, 2, 4, 8}

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Modo Base + Indice escalado + Desplazamiento: Ejemplo


Supongamos un array de dos dimensiones (una matriz) con elementos de 4 bytes.

ADM-21

Para acceder a un elemento se precisan ndices de la y columna. La direcci on del elemento en la posici on (i, j ) es: base + (i tama noFila) + (j tama noElemento).

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Circuito de c alculo de la direcci on efectiva

ADM-22

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

Resumen de Modos de Direccionamiento


Registro: Operando en regisro. de = (ci). Registro Indirecto: Operando en direcci on de memoria en registro. de = ((ci)).

ADM-23

Autoincremento: Como el Registro indirecto, pero el registro se incrementa despu es de ser usado. de = ((ci)); (Ri)+ {1, 2, 4} Ri, donde Ri es el registro codicado en el campo ci. Autodecremento: Como el Registro indirecto, pero el registro se decrementa antes de ser usado. de = (Ri) {1, 2, 4}; ((ci)) {1, 2, 4} Ri, donde Ri es el registro codicado en el campo ci. Absoluto: La direcci on est a codicada en la propia instrucci on. de = (ci). Modo Base + Indice escalado + Desplamiento: La direcci on se puede codicar hasta con cuatro operandos, permitiendose todas las combinaciones ( ndice y escala se tratan como un par ametro). de = (Registro Base) + [(Registro Indice) Escala] + Desplazamiento

Modos de Direccionamiento del Intel Pentium

Abelardo Pardo

c Universidad Carlos III de Madrid

You might also like