miércoles, 15 de abril de 2020

1.6 Modos de direccionamiento

La memoria de acceso aleatorio, o RAM, es la memoria principal de una computadora. Las aplicaciones son cargadas y ejecutadas en la memoria RAM. Los modos de direccionamiento asignan memoria RAM en porciones que pueden ser referenciadas individualmente para que la unidad central de procesamiento, o CPU, pueda determinar qué ubicación de memoria está siendo utilizada por una instrucción de la máquina.

Se les llama modos de direccionamiento a las distintas formas de combinar los operandos según el acceso que se hace a memoria.

Direccionamiento implícito

·         Depende solamente de la instrucción, es decir, la instrucción no lleva parámetros.
·         Particularmente en instrucciones que no accedan memoria, o bien que tienen una forma específica de accesarla.

Ejemplos: PUSHF, POPF, NOP

Modo registro

·         Usa solamente registros como operandos
·         Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del EU del CPU)

Ejemplo: MOV AX, BX

Modo inmediato

·         Tiene dos operandos: un registro y una constante que se usa por su valor.
·         El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el “fetch” de la instrucción.

Ejemplo: MOV AH, 9

Modo directo

·         Uno de los operandos involucra una localidad específica de memoria
·         El valor constante se tiene que buscar en memoria, en la localidad especificada.
·         Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya “sabe” la localidad, la toma de la instrucción y no la tiene que calcular.

Ejemplo: MOV AH, [0000]

Modo indirecto

·         Se usan los registros SI, DI como apuntadores
·         El operando indica una localidad de memoria, cuya dirección (sólo la parte desplazamiento) está en SI o DI.
·         Es más lento que los anteriores, pues tiene que “calcular” la localidad

Ejemplos: MOV AL, [SI]

Modo indexado de base

Formato: [ BX o BP + SI o DI (opcionales) + constante (opcional) ]

·         BX o BP indica una localidad base de la memoria
·         A partir de BX o BP, se puede tener un desplazamiento variable y uno constante
·         La diferencia es el segmento sobre el que trabajan por defecto:
·         BX por defecto en el segmento de datos
·         BP por defecto en el segmento de pila.

Ejemplos:
-       MOV AX, [BX]
-       MOV DX, [BX+2]
-        MOV CX, [BX+DI]
-       MOV DL, [BX+SI+3]

Absoluto

El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción. Y no se cancela.


Indirecto recursivo

Unos pocos sistemas como el PDP-6 o el PDP-10 tenían la posibilidad de direccionamiento indirecto recursivo. Tal dirección de memoria indirecta tenía un campo de registro para indexación y posiblemente un otro bit indirecto, de modo que el proceso de direccionamiento indirecto con indexación podría teóricamente repetirse cualquier número de veces hasta que se encontrara una dirección sin un bit indirecto en la cadena.

Indirecto mediante registros

El campo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando.
El control localiza la instrucción de la memoria y utiliza su parte de dirección para acceder a la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo: Dir. efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador.

De desplazamiento

Combina el modo directo e indirecto mediante registros.

De pila

Se utiliza cuando el operando está en memoria y en la cabecera de la pila.
Este direccionamiento se basa en las estructuras denominadas Pila (tipo LIFO), las cuales están marcados por el fondo de la pila y el puntero de pila (*SP). El puntero de pila apunta a la última posición ocupada. Así, como puntero de direccionamiento usaremos el SP.
El desplazamiento más el valor del SP nos dará la dirección del objeto al que queramos hacer referencia. En ocasiones, si no existe C. de desplazamiento solo se trabajará con la cima de la pila.

No hay comentarios.:

Publicar un comentario