1.6 Modos de direccionamiento.
Los modos de direccionamiento son las
diferentes formas de definir la ubicación de un operando en memoria, para que
de esta forma el programa sea capaz de
encontrarlo durante el tiempo de ejecución. Es necesario mencionar que al
realizar una operación, es posible realizarla entre registros o entre registros
y memoria, pero no es posible realizarla entre memoria y memoria.
Los modos de direccionamiento son los
siguientes:
֎ Implícito: Este modo
de direccionamiento se utiliza sin declarar ninguna dirección, ya que las
operaciones que lo utilizan ya conocen la dirección en la cual se encuentra el
operando que se va a utilizar.
֎ Inmediato: En este
modo de direccionamiento se declara directamente el valor del operando en la
instrucción.
Ejemplo:
mov ah,02h
-> El valor del operando (02h) se
especifica directamente.
֎ Directo: En el
direccionamiento directo, el operando hace referencia a un dato almacenado en
la dirección especificada en la instrucción, la cual puede estar escrita de dos
formas, como un registro o como una posición en memoria.
Para utilizar un registro basta con
escribir el nombre del registro como operando para la operación, para utilizar
una posición en memoria es necesario escribir el valor de la posición entre
corchetes [], de esta forma TASM lo interpretara como una dirección y no como
un valor.
Ejemplos:
mov ax, bx
->
Se establece el dato en la dirección de bx
como operando.
mov ax, [021BH]
-> Se
establece el dato en la dirección 021BH como operando.
֎ Indirecto: Al
utilizar direccionamiento indirecto, el operando se utiliza como una referencia
a un dato que se encuentra almacenado en una posición de memoria, para esto el
operando debe especificar un registro entre corchetes, el cual contiene la
dirección de memoria a la que se desea acceder.
Ejemplo:
mov bx,[ax]
-> ax contiene la dirección a
la que se desea acceder y este valor se
asigna a bx.
֎ Indexado: En el
direccionamiento indexado el operando hace referencia a una posición en
memoria, la cual puede ser expresada utilizando un numero el cual es sumado a
un registro que funciona como un índice respecto a la dirección de memoria.
mov ax, [1324h+12]
-> En este caso 1324h es la
dirección base y 12 es el registro
utilizado como índice.
֎ Relativo: En el
direccionamiento relativo se declara el operando como el valor de un registro
entre corchetes, al cual se le aplica un desplazamiento, es decir, se le suma
un valor que indicara el desplazamiento a partir de la dirección indicada por
el registro.
Ejemplo:
Mov ax,[bx+2]
->
En este ejemplo bx contiene la dirección base y 2 es el
desplazamiento que se utilizará.
Ejemplo:
Estos son los únicos registros que pueden
usarse de modo dual (en 8 o 16 bits) Los registros de la CPU son conocidos por
sus nombres propios, que son:
• AX (acumulador)
• BX (registro base)
• CX (registro contador)
• DX (registro de datos)
• DS (registro del segmento de datos)
• ES (registro del segmento extra)
• SS (registro del segmento de pila)
• CS (registro del segmento de código)
• BP (registro de apuntadores base)
• SI (registro índice fuente)
• DI (registro índice destino)
• SP (registro del apuntador de pila)
• IP (registro del apuntador de siguiente
instrucción)
• F (registro de banderas)
El registro AX se usa para almacenar
resultados, lectura o escritura desde o hacia los puertos. El BX sirve como
apuntador base o índice. El CX se utiliza en operaciones de iteración, como un
contador que automáticamente se incrementa o decrementa de acuerdo con el tipo
de instrucción usada. El DX se usa como puente para el acceso de datos.
Comentarios
Publicar un comentario