MODOS DE DIRECCIONAMIENTO

 

Tiene 12 modos de direccionamiento básicos. Estos pueden clasificarse en 5 grupos:

1. Direccionamientos accesando dato inmediato y registro de datos (modos inmediato y de registro).

2. Direccionamiento accesando datos en memoria (modo memoria)

3. Direccionamiento accesando puertos E/S. (modo E/S)           

4. Direccionamiento relativo

5. Direccionamiento implícito.

 

1. DIRECCIONAMIENTO ACCESANDO DATO Y REGISTRO INMEDIATO

1.1 Direccionamiento de registro.

 

Especifica el operando fuente y el operando destino. Los registros deben ser del mismo tamaño. ej. MOV DX, CX

MOV CL, DL.

 

1.2 Direccionamiento inmediato.

 

Un dato de 8 o 16 bits se especifica como parte de la instrucción. p.ej. MOV CL, 03H. Aquí el operando fuente está en modo inmediato y el destino en modo registro.

 

2. DIRECCIONAMIENTO ACCESANDO DATOS EN MEMORIA

2.1 Direccionamiento directo.

 

La dirección efectiva (EA) de 16 bits se toma directamente del campo de desplazamiento de la instrucción. El desplazamiento se coloca en la localidad siguiente al código de operación. Esta EA o desplazamiento es la distancia de la localidad de memoria al valor actual en el segmento de datos (DS) en el cual el dato está colocado. Ej. MOV CX, START. START puede definirse como una localidad de memoria usando las pseudoinstrucciones DB o DW.

 

2.2 Direccionamiento de registro indirecto.

 

La dirección efectiva EA está especificada en un registro apuntador o un registro índice. El apuntador puede ser el registro base BX o el apuntador base BP; el registro índice puede ser el Indice Fuente (SI) o el Indice Destino (DI).

Ej. MOV (DI),BX.

 

2.3 Direccionamiento base

 

EA se obtiene sumando un desplazamiento (8 bits con signo o 16 bits sin signo) a los contenidos de BX o BP. Los segmentos usados son DS y SS. Cuando la memoria es accesada, la dirección física de 20 bits es calculada de BX y DS, por otra parte, cuando la pila es Accesada, la dirección es calculada de BP y SS.

Ej. MOV AL, START (BX). el operando fuente está en modo base, y la EA se obtiene sumando los valores de START y BX.

 

2.4 Direccionamiento indexado.

 

EA se calcula sumando un desplazamiento (8 o 16 bits) a los contenidos de SI o DI. Ej. MOV BH,START (SI).

 

2.5 Direccionamento base indexado.

 

EA se calcula sumando un registro base (BX o BP), un registro índice (DI o SI), y un desplazamiento (8 o 16 bits).

Ej. MOV ALPHA (SI)(BX),CL.

Este direccionamiento proporciona una forma conveniente para direccionar un arreglo localizado en la pila.

 

2.6 Direccionamiento (cadena?)

 

Este modo usa registros índice. La cadena de instrucciones automáticamente asume que SI apunta al primer byte o palabra del operando destino. Los contenidos de SI y DI son incrementados automáticamente (poniendo a 0 DF mediante la instrucción CLD) o decrementados (poniendo a 1 DF mediante la instrucción STD) para apuntar al siguiente byte o palabra. El segmento del operando fuente es DS y puede ser encimado.

El segmento del operando destino debe ser ES y no puede ser encimado. Ej. MOVS BYTE.

 

3. DIRECCIONAMIENTO ACCESANDO PUERTOS (E/S)

 

Hay dos tipos de direccionamiento usando puertos: directo e indirecto.

En el modo directo, el número de puerto es el operando inmediato de 8 bits, lo cual permite accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.

En el modo indirecto, el número de puerto se toma de DX, permitiendo así 64K puertos de 8 bits o 32K puertos de 16 bits.

Las transferencias E/S de 8 y 16 bits deben hacerse vía AX y AL, respectivamente.

 

4. DIRECCIONAMIENTO RELATIVO.

 

En este modo el operando se especifica como un desplazamiento de 8 bits con signo, relativo al PC.  Ej. JNC START. Si C=0, entonces el PC se carga con PC+el valor de START.

 

5. DIRECCIONAMIENTO IMPLICITO.

 

Las instrucciones que usan esta modo no tienen operandos. Ej. CLC.