Está en la página 1de 5

U.T.N.

FRC – Cátedra ARQUITECTURA DE COMPUTADORAS

Índice

MODOS DE DIRECCIONAMIENTO ................................................................................. 2

Modo de direccionamiento IMPLÍCITO ............................................................................. 2

Modo de direccionamiento INMEDIATO ........................................................................... 2

Modo de direccionamiento DIRECTO ............................................................................... 3

Modo de direccionamiento a REGISTRO ......................................................................... 4

Modo de direccionamiento INDIRECTO POR REGISTRO............................................. 4

Modo de direccionamiento RELATIVO ............................................................................. 5

BIBLIOGRAFIA .................................................................................................................... 5
U.T.N. FRC – Cátedra ARQUITECTURA DE COMPUTADORAS

MODOS DE DIRECCIONAMIENTO

La RAM es la memoria principal de una computadora y es de acceso aleatorio. Los Modos


de Direccionamiento de un procesador asignan memoria RAM que pueden ser referenciadas
individualmente para que la unidad central de procesamiento (CPU) pueda determinar qué
ubicación de memoria está siendo utilizada por una instrucción de la máquina.

Los Modos de Direccionamiento son las formas de especificar la ubicación de los datos y
modos para acceder a ellos. Los datos que maneja una instrucción maquina pueden estar
ubicados en la propia instrucción, en un registro de la CPU o en la memoria del computador.
La palabra Dirección se utiliza como localización del operando y NO como ubicación en
memoria.

Modos de direccionamiento simples:


 Implícito
 Inmediato
 Registro
 Directo
 Indirecto
 Relativo

Modo de direccionamiento IMPLÍCITO

Denominado Modo de Direccionamiento Implícito o Inherente el operando se especifica en


la misma definición de la instrucción o código de operación o puede no tener dato porque la
instrucción no lo necesita.

Ejemplo: INT 3

Objetivo de la instrucción: Finalizar una secuencia de instrucción o programa

Lenguaje nemotécnico: 06B3:0100 CC


Ocupa un 1 byte

En esta instrucción cuyo código de operación es CC como es una acción para terminar la
ejecución de un programa o grupo de acciones no hay dato u operando, por lo que el mismo
código de operación tiene todo lo necesario para ejecutarla.

Modo de direccionamiento INMEDIATO

En el Modo de Direccionamiento Inmediato el operando figura en la instrucción, es decir, el


campo del operando contiene en sí la información sobre la que hay que operar.

Ejemplo: MOV AX, A9E5

Objetivo de la instrucción: el operando A9E5 es asignado al registro AX

Lenguaje nemotécnico: 06B3:0100 B8


06B3:0101 E5
06B3:0102 A9
Ocupa 3 bytes
U.T.N. FRC – Cátedra ARQUITECTURA DE COMPUTADORAS

En este ejemplo el código de operación es B8 y está en la celda de memoria cuya dirección


es 06B3:0100, en las celdas siguientes 06B3:0101 y 06B3:0102 está el operando E5A9
(nótese que el operando o dato tiene primero en la celda 06B3:0101 el contenido E5 que es
la parte menos significativa del dato y en la celda siguiente 06B3:0102 A9 que es la parte
más significativa del dato).

Las instrucciones que ordenan pasar una constante a un registro están en modo de
direccionamiento inmediato [1], dicha constante es el dato A9E5.

O sea que si miramos con el comando D 0100 las celdas de memoria desde la dirección
0100 después de cargar la operación, podríamos verlas así:

06B3:0100 B8 E5 A9 00 00 00 00 00-00 00 00 00 00 00 00 00
06B3:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
06B3:0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

Direcciones de Memoria Primeros 4 bytes Últimos 4 bytes


06B3:0100 B8 E5 A9 00 00 00 00 00
06B3:0108 00 00 00 00 00 00 00 00
06B3:0110 00 00 00 00 00 00 00 00

Modo de direccionamiento DIRECTO

Este Modo no necesita transformación alguna para otorgar la dirección necesaria es decir
que la dirección del dato u operando está en las celdas de memoria siguientes al código de
operación de la instrucción.

Ejemplo: MOV BX, [A5F2]

Objetivo de la instrucción: el contenido de la dirección de memoria A5F2 es asignado al


registro BX.

Lenguaje nemotécnico: 06B3:0100 8B


06B3:0101 1E
06B3:0102 F2
06B3:0103 A5

Ocupa 4 bytes

En este ejemplo la instrucción cuyo código de operación es 8B1E está en la celdas de


memoria cuyas direcciones son06B3:0100 y 06B3:0101, en las celdas siguientes
06B3:0102 y 06B3:0103 está la dirección del operando A5F2, nótese que la dirección del
operando o dato tiene primero en la celda 06B3:0102 el contenido F2 que es la parte
menos significativa de la dirección del dato y en la celda siguiente 06B3:0103 A5 que es la
parte más significativa de la dirección del dato, además para indicar la dirección del dato
deben colocarse corchetes.

Si una instrucción tiene un número entre corchetes se dice que está en modo de
direccionamiento directo [1], dicho número es la dirección A5F2.

O sea que si miramos con el comando D 0100 las celdas de memoria desde la dirección
0100 después de cargar la operación, podríamos verlas así:

06B3:0100 8B 1E F2 A5 00 00 00 00-00 00 00 00 00 00 00 00
06B3:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
U.T.N. FRC – Cátedra ARQUITECTURA DE COMPUTADORAS

Direcciones de Memoria Primeros 4 bytes Últimos 4 bytes


06B3:0100 8B 1E F2 A5 00 00 00 00
06B3:0108 00 00 00 00 00 00 00 00
06B3:0110 00 00 00 00 00 00 00 00

Modo de direccionamiento a REGISTRO

En el Modo de direccionamiento a Registro el dato u operando está en un registro.

Ejemplo: MOV AX, BX

Objetivo de la instrucción: el contenido del registro BX es asignado al registro AX

Lenguaje nemotécnico: 06B3:0100 89


06B3:0101 D8
Ocupa 2 bytes

En esta instrucción el código de operación es 89D8 y está en las celdas de memoria cuya
dirección es 06B3:0100 y 06B3:0101. El dato u operando, que es el valor que debe ser
asignado al registro AX, está contenido en el registro BX.

Cuando el dato a operar no está en memoria sino en un registro de la CPU y el resultado va


también a un registro de la CPU, el modo de direccionamiento se denomina modo registro.
[1], esos registros de la CPU en el ejemplo son BX y AX respectivamente.

Modo de direccionamiento INDIRECTO POR REGISTRO

En este Modo de Direccionamiento el código de operación de la instrucción indica la


localización de la dirección efectiva del operando, el dato u operando está en una dirección
de memoria y dicha dirección está contenida en un registro.

Ejemplo: MOV AX, [BX]

Objetivo de la instrucción: el contenido de la dirección del registro BX es asignado al registro


AX

Lenguaje nemotécnico: 06B3:0100 8B


06B3:0101 07
Ocupa 2 bytes

En esta instrucción el código de operación es 8B07 y está en las celdas de memoria cuya
dirección es 06B3:0100 y 06B3:0101. El dato u operando que es el valor a ser asignado al
registro AX, está en la dirección contenida en el registro BX, nótese que también para
indicar que el registro BX contiene la dirección del dato y no el dato el registro BX se pone
entre corchetes.

Una instrucción de este tipo corresponde al modo de direccionamiento indirecto por registro.
Esto es la dirección de una celda de memoria se da indirectamente a través de un registro,
como SI, DI, o BX. Las instrucciones en modo de direccionamiento indirecto por registro
permiten solucionar el problema de recorrer uno tras otro los datos contenidos en posiciones
sucesivas de memoria, como es el caso de una lista o vector. [1]
U.T.N. FRC – Cátedra ARQUITECTURA DE COMPUTADORAS

Modo de direccionamiento RELATIVO

La instrucción JNZ como cualquier otra de salto condicional “short” (corto) está en modo de
direccionamiento relativo. El término “relativo” implica que la dirección de la instrucción a
la que se salta (si se cumple la condición) se calcula sumando un número a la dirección de
la instrucción que sigue a la instrucción de salto. O sea que la dirección hacia donde hay
que saltar está en relación con esta última dirección, la cual está apuntada por el IP, por ser
la próxima instrucción a ejecutar luego de la de salto.
El número a sumar a la dirección de la instrucción que sigue a la instrucción de salto, forma
parte de un byte de esta última. En un salto hacia atrás, como en el loop dicho número es
negativo, siendo positivo si el salto es hacia adelante. [1]

Ejemplo: en el siguiente programa podemos visualizar que en la dirección 06B3:0110 está la


instrucción JNZ 0109 cuya objetivo es saltar hacia atrás (LOOP) a la dirección 06B3:0109.
En este caso el número de posiciones de memoria que retrocede el registro IP es de 7 (0110
- 7 = 0109 en hexadecimal). Este es un programa que repite 5 veces (FOR de 1 a 5) la
acción de acumular en el registro AX las cantidades apuntadas sucesivamente por el
registro SI desde la dirección 0120 a la 0124.

06B3:0100 MOV AX,0 06B3:0100 B80000


06B3:0103 MOV BX,0 06B3:0103 BB0000
06B3:0106 MOV SI,0120 06B3:0106 BE2001
06B3:0109 ADD AX,[SI] 06B3:0109 0304
06B3:010B INC BX 06B3:010B 43
06B3:010C INC SI 06B3:010C 46
06B3:010D CMP BX,5 06B3:010D 83FB05
06B3:0110 JNZ 0109 06B3:0110 75F7
06B3:0112 INT 3 06B3:0112 CC

En esta instrucción el código de operación es 75F7 y está en las celdas de memoria cuya
dirección es 06B3:0110 y 06B3:0111. El dato u operando es la dirección a la que debe
saltar y está dada a continuación de la instrucción JNZ por el valor 0109.

O sea que si miramos con el comando D 0100 las celdas de memoria desde la dirección
0100 después de cargar el programa, veríamos esto:

06B3:0100 B8 00 00 BB 00 00 BE 20-01 03 04 43 46 83 FB 05
06B3:0110 75 F7 CC 00 00 00 00 00-00 00 00 00 00 00 00 00

Direcciones de Memoria Primeros 4 bytes Últimos 4 bytes


06B3:0100 B8 00 00 BB 00 00 BE 20
06B3:0108 01 03 04 43 46 83 FB 05
06B3:0110 75 F7 CC 00 00 00 00 00

Prepararon y revisaron: Profesora Brenda Meloni, Profesor Gustavo Motta.

BIBLIOGRAFIA

[1] Assembler desde cero e interrupciones. Mario Carlos Ginzburg. Biblioteca Técnica
Superior. 2a edición mejorada.

También podría gustarte