Publicado el 20 de Febrero del 2021
619 visualizaciones desde el 20 de Febrero del 2021
247,7 KB
26 paginas
Creado hace 11a (07/01/2014)
DEPARTAMENTO DE ELECTRONICA
Microprocesadores
1121060
Tema 3
Modos de Direccionamiento.
Microprocesadores 1121060
Tema 3.
Modos de Direccionamiento.
1. Modos de direccionamiento
2. Formato de Instrucción
3. Ejemplo de Aplicaciones con todos los modos
de direccionamiento
Tema 3. Modos de Direccionamiento
Los Modos de Direccionamiento son las diversas formas con las
que se puede indicar a un µP donde debe encontrar o depositar un
dato, en una instrucción. Identifica los operandos de la operación a
realizar, fuente y destino de los datos sobre los que se operará.
Los operandos se pueden especificar por: un registro de la CPU,
una localidad de memoria, un puerto de Entrada/Salida o un dato
inmediato.
Existen dos grupos principales según los operandos se encuentren
en registros o en memoria: modos de Registro, y modos de
Memoria.
La dirección física de memoria o registro donde se encuentra
realmente el operando se llama Dirección Efectiva, y se representa
< ea >. Según el modo de direccionamiento utilizado, la CPU
tendrá que realizar unos cálculos distintos hasta obtener el valor
de dicha dirección efectiva.
Las instrucciones pueden contener hasta dos operandos que se
denominan Operando Fuente, el del lado derecho, y Operando
Destino, el del lado izquierdo. En estos casos, cada operando
tendrá su propio modo de direccionamiento.
Tema 3. Modos de Direccionamiento
Direccionamiento Inmediato.
Transfiere un byte o palabra de datos inmediato hacia
el operando destino. Este modo es usado para
inicializar registros o localidades de memoria y para
operara sobre ellos con valores constantes de datos.
Ej: MOV AX,0ABCDH
MOV BL,12H
Las instrucciones que usan el modo de
direccionamiento inmediato obtienen el dato como
parte de la instrucción.
B8 00 10 MOV AX,1000H
Este modo no opera con registros de segmento, por lo
que no se puede cargar un registro de segmento de
manera inmediata.
Tema 3. Modos de Direccionamiento
Direccionamiento por Registro.
Transfiere un byte o palabra desde un registro fuente
hasta un registro destino.
Ej. MOV AX,CX
El operando no requiere ninguna referencia de memoria.
INC BX
Nota: Los dos operandos no pueden ser registros de
segmento.
El registro de segmento de código (CS) nunca puede
utilizarse como destino.
No se permite el acceso entre registros de segmento ni de
distintos tamaños.
Tema 3. Modos de Direccionamiento
Direccionamiento Directo.
Transfiere un byte o palabra contenido en una
localidad de memoria en el segmento DS a un registro
de 8 o 16 bits. La localidad de memoria puede ser el
operando fuente o destino.
Ej: MOV AL,[1234H]
En el modo de direccionamiento directo, la dirección
de memoria se proporciona directamente como parte
de la instrucción (Puede ser a través de etiquetas, en
las cuales el programador no necesita conocer la
dirección numérica)
MOV AH, MEMBDS
8A 00 10 MOV AH,[MEMBDS]
AH[1000H]
Tema 3. Modos de Direccionamiento
Direccionamiento Indirecto.
El modo de direccionamiento directo se usa para acceder
localidades de memoria de manera no frecuente. Sin embargo
cuando una localidad de memoria debe ser leída o escrita
varias veces dentro de un programa, la búsqueda repetida de
la dirección lógica hace este modo ineficiente. El modo de
direccionamiento indirecto resuelve este problema
almacenando esta dirección de memoria en un registro base
(BX,BP)o un registro índice (SI o DI)
MOV [DI],BH
MOV [BP],DL
8B 04
FF 25
FE 46 00
FF 0F
MOV AX, [SI] AL[SI]; AH[SI+1]
JMP [DI] IP[DI+1:DI]
INC BYTE PTR[BP] [BP][BP] + 1
DEC WORD PTR[BX]b [BX+1:BX][BX+1:BX]-1
Tema 3. Modos de Direccionamiento
Direccionamiento Base mas Indice.
Transfiere un byte o palabra entre un registro y una
localidad de memoria direccionada por la suma de un
registro base más un registro índice.
Este modo es usado para el acceso a tablas.
Ej. MOV AX,[BX+DI]
En muchos casos, el registro base retiene la dirección
de inicio de un arreglo de memoria, y el registro índice
retiene la posición relativa de un dato en un arreglo.
AH[BX+SI+1], AL[BX+SI];
8B 00 MOV AX,[BX+SI]
IP[BX+DI+1:BX+DI];
FF 21 JMP [BX+DI]
FE 02 INC BYTE PTR[BP+SI] [BP+SI][BP+SI]+1 ;
FF 0B DEC WORD PTR[BP+DI] [BP+DI+1:BP+DI][BP+DI+1:BP+DI]-1
Tema 3. Modos de Direccionamiento
Ej. Si se desea direccionar
los elementos en un
arreglo de datos
localizados en el segmento
de datos en la localidad
ARRAY. Se requiere cargar
BX con la dirección ARRAY
y DI con el número del
elemento del arreglo que
se desea acceder.
MOV BX, OFFSET ARRAY
MOV DI,3
MOV AL,[BX+DI]
DI
Elemento
+
BX
ARRAY
ARRAY + 5
ARRAY + 4
ARRAY + 3
ARRAY + 2
ARRAY + 1
ARRAY
MOV AL,[BX+DI]
Tema 3. Modos de Direccionamiento
Direccionamiento Relativo a Registro
Transfiere un byte o palabra entre un registro y una localidad de
memoria direccionada por un registro base o un registro índice
más un desplazamiento.
Si la localidad de memoria se direcciona por la suma de un
registro base y un desplazamiento, también se conoce como
direccionamiento basado.
Ej. MOV AX,[BX+10H]
Si la localidad de memoria se direcciona por la suma de un
registro índice y un desplazamiento, también se conoce
como direccionamiento indexado.
Ej. MOV AX,[SI+500H]
MOV AX,[BX+4]
MOV AX,ARRAY [SI]
MOV LIST[BP],CL
MOV ARRAY[DI],AL
Tema 3. Modos de Direccionamiento
Direccionamiento Relativo Base más
índice.
Transfiere un byte o palabra entre un
registro y la localidad de memoria
direccionada por un registro base más un
registro índice más un desplazamiento.
Ej. MOV AX, [BX+SI+100H]
MOV AX, ARRAY[BX+DI]
MOV LIST[BP+DI],CL
Tema 3. Modos de Direccionamiento
Este tipo de
direccionamiento es
usado comúnmente para
direccionar arreglos de
datos en memoria de dos
dimensiones (matrices).
MOV BX, OFFSET MATRIZ
MOV DI,8
MOV AL,[BX+DI+2]
2
columna
+
DI=8
Renglón
+
a2,3
a2,2
a2,1
a2,0
a1,3
a1,2
a1,1
a1,0
a0,3
a0,2
a0,1
a 0,0
BX
MATRIZ
Renglón 2
Renglón 1
Renglón 0
MOV AL,[BX+DI+2]
Selecciona elemento a2,2
a0,0 a0,1 a0,2 a0,3
a1,0 a1,1 a1,2 a1,3
a2,0 a2,1 a2,2 a2,3
Tema 3. Modos de Direccionamiento
Modo de direccionamiento de string
En computación un string (cadena) es una secuencia
de bytes o palabras almacenadas en memoria. Una
tabla de datos es un ejemplo de string. Debido a su
importancia el 8086 tiene algunas instrucciones
diseñadas específicamente para manejar strings
(cadenas) de caracteres.
Estas instrucciones tienen un modo de
direccionamiento especial y usan a DS:SI para
apuntar al string fuente y a ES:DI para apuntar al
string destino.
MOVSB mueve el byte del dato fuente a la localidad
destino. SI y DI se incrementan o decrementan
automáticamente dependiendo del valor de la bandera
D.
Tema 3. Modos de Direccionamiento
Mnemónico
general
Op-code
Operando
STOSB
STOSW
LODSB
LODSW
Instrucciones de Cadena (string)
Código
Objeto
Mnemónico
Segmento
de memoria
Operación
simbólica
Descripción
AA
AB
AC
AD
STOSB
Extra
STOSW
Extra
LODSB
Datos
LODSW
Datos
ES:[DI]AL
Si DF=0, DIDI+1
Si DF=1, DIDI-1
ES:[DI] AL
ES:[DI+1] AH
Si DF=0, DIDI+2
Si DF=1, DIDI-2
AL DS:[SI]
Si DF=0,SISI+1
Si DF=1, SISI-1
ALDS:[SI]
AHDS:[SI+1]
Si DF=0, SISI+2
Si DF=1, SISI-2
Transfiere un byte o palabra del registro
AL o AX a la cadena direccionada por
DI en el segmento extra; Si DF=0,
incrementa DI,
contrario
decrementa DI; las banderas no son
afectadas.
de
lo
Transfiere un byte o palabra de la
cadena direccionada por SI en el
segmento de datos al registro AL o AX;
Si DF=0, incrementa SI, de lo contrario
decrementa SI; las banderas no son
afectadas.
Tema 3. Modos de Direccionamiento
Direccionamiento
Inmediato
Registro
Directo
Indirecto a registro
Indexado
Basado
Base mas índice
Relativo base mas
índice
String
Cod. Ob.
B8 00 10
8B D1
8A 00 10
8B 04
FF 25
FE 46 00
FF 0F
8B 44 06
FF 65 06
8B 46 02
FF 67 02
8B 00
FF 21
FE 02
FF 0B
8B 40 05
FF 61 05
FE 42 05
FF 4B 05
A4
Mnemónico
MOV AX,1000H
MOV DX,CX
MOV AH,[MEMBDS]
MOV AX, [SI]
JMP [DI]
INC BYTE PTR[BP]
DEC WORD PTR[BX]
MOV AX,[SI+6]
JMP [DI+6]
MOV AX,[BP+2]
JMP [BX+2]c
MOV AX,[BX+SI]
JMP [BX+DI]
INC BYTE PTR[BP+SI]
DEC WORD PTR[BP+DI]
MOV AX,[BX+SI+5]
JMP [BX+DI+5]
INC BYTE PTR[BP+SI+5]
DEC WORD PTR[BP+DI+5]
MOVSB
Segmento
Código
Dentro del CPU
Datos
Datos
Datos
Stack
Datos
Datos
Datos
Stack
Datos
Datos
Datos
Stack
Stack
Datos
Datos
Stack
Stack
Extra, Datos
Operación simbólica
AH10H; AL 00
DXCX
AH[1000H]
AL[SI]; AH[SI+1]
IP[DI+1:DI]
[BP][BP] + 1
[BX+1:BX][BX+1:BX]-1
AL[SI+6]; AH[SI+7]
IP [DI+7:DI+6]
AL[BP+2]; AH[BP+3]
IP[BX+3:BX+2]
AL[BX+SI]; AH[BX+SI+1]
IP[BX+DI+1:BX+DI]
[BP+SI][BP+SI]+1
[BP+DI+1:BP+DI][BP+DI+1:BP+DI]-1
AL[BX+SI+5]; AH[BX+SI+6]
IP[BX+DI+6:BX+DI+5]
[BP+SI+5][BP+SI+5]+1
[BP+DI+6:BP+DI+5][BP+DI+6:BP+DI+5]-1
ES:[DI]DS:[SI]
Si DF=0, entonces SISI+1; DIDI+1
Si DF=1, entonces SI(cid:
Comentarios de: Tema 3 Modos de Direccionamiento - Microprocesadores (0)
No hay comentarios