Está en la página 1de 6

lOMoARcPSD|17325709

Modos Direccionamiento Ensamblador

Arquitectura de Computadores
lOMoARcPSD|17325709

UCASAL – Cátedra ARQUITECTURA DE COMPUTADORES

Í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 ............................................................................ 3

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

Modo de direccionamiento RELATIVO................................................................................. 4

BIBLIOGRAFIA......................................................................................................................... 5
lOMoARcPSD|17325709

UCASAL – Cátedra ARQUITECTURA DE COMPUTADORES

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 máquina 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
lOMoARcPSD|17325709

UCASAL – Cátedra ARQUITECTURA DE COMPUTADORES


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.

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 AX, [0150]

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


AX.
Lenguaje nemotécnico: 06B3:0100 A1
06B3:0101 50
06B3:0102 01
Ocupa 3 bytes

En este ejemplo la instrucción cuyo código de operación es A1 está en la celda de memoria cuya
dirección es 06B3:0100, en las celdas siguientes 06B3:0101 y 06B3:0102 está la dirección del
operando 0150, nótese que la dirección del operando o dato tiene primero en la celda
06B3:0101 el contenido 50 que es la parte menos significativa de la dirección del dato y en la
celda siguiente 06B3:0102 01 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 0150.

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 32 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.
lOMoARcPSD|17325709

UCASAL – Cátedra ARQUITECTURA DE COMPUTADORES

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 por asignar 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]

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
para ejecutar luego de la de salto.
El número por 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 cuyo 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 (0109 + 7 =
0110 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
lOMoARcPSD|17325709

UCASAL – Cátedra ARQUITECTURA DE COMPUTADORES

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 que debe ser
asignado al registro AX, está en la dirección contenida en el registro BX (nótese que acá 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).

Según Ginzburg 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. Y agrega que las instrucciones en modo de direccionamiento
indirecto por registro permiten solucionar el problema de recorrer uno tras otros datos contenidos
en posiciones sucesivas de memoria, como es el caso de una lista o vector.

BIBLIOGRAFIA

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

También podría gustarte