Está en la página 1de 27

Modos de Direccionamiento

Conjunto de Instrucciones 386


Conjunto de Instrucciones Bsico conjunto de
instrucciones del 8086/8088
Conjunto de Instrucciones Extendido : 80286; algunas
instrucciones nuevas y modos de direccionamiento
adicionales
Conjunto de instrucciones especfico del 80386:
80386
8086/8088 80286 Protected Mode
System control System control
Instruction set Instruction set

Basic Basic + Basic +


Instruction Extended Extended+
80386 specific
Set Instruction Instruction
Set Set

Real Mode
Conjunto de Instrucciones 386
Modos de Direccionamiento de Datos del 80386DX
Modos de direccionamiento: mtodos para especificar operandos
Operandos : en registro, dentro de instruccin, memoria,
puertos E/S
* Control de puertos : direccionamiento directo, indirecto
Modos de Direccionamiento disponibles:
Direccionamiento por Registro : registro
Direccionamiento inmediato: dentro de instruccin
Direccionamiento directo
Direccionamiento indirecto por Registro
Direccionamiento Base
Direccionamiento Indexado
Direccionamiento Indexado Base
MEM o E/S
Modos de Direccionamiento
Direccionamiento por registro
Puede accesarse por bytes, palabras, palabras dobles.
MOV AX, BX
Byte: AL, AH, BL, BH, CL, CH, DL, DH
Palabra: AX, BX, CX, DX, SP, BP, SI, DI, CS, DS, SS,
ES, FS, GS
Palabra doble: EAX, EBX, ECX, EDX, ESP, EBP, ESI,
EDI

Direccionamiento Inmediato
Un operando es parte de la instruccin
MOV AL, 15H
8 bits, 16 bits, y 32 bits
Direccionamiento por Registro
Direccin Contenido
Instruccin
80386 Memoria
0000 IP
uP
0100 CS 01000 89 MOV AX, BX
DS 01001 D8
SS 01002 XX
ES
FS
GS

XXXX
ABCD AX
ABCD BX
CX
DX

SP
BP
SI
DI
Direccionamiento Inmediato
Contenido
Direccin
de Instruccin
80386 0000 IP Memora
MPU
0100 CS 01000 B0 MOV AL, 15H
DS 01001 15
SS 01002 XX
ES
FS
GS

15
XX AX
BX
CX
DX

SP
BP
SI
DI
Direccionamiento Directo

Operandos de 16 y 32 bits en memoria


Direccin del dato = Segmento : EA (direccin efectiva)
Direccin Segmento Base : localidad inicial del
segmento
EA : desplazamiento (offset)del operando desde el
inicio del segmento
EA = Base + Index + Desplazamiento
Base = BX or BP, Index = SI o DI,
desplazamiento = 8-bits o 16-bits
Direccionamiento Directo
Ejemplo
PA = Segmento Base*16 + EA del dato
Ejemplo: MOV BX, [1234H]
01000 8B MOV BX, [1234H]
01001 0E
0000 IP 01002 34
01003 12
0100 CS 01004 XX
0200 DS
SS
ES
FS
GS
AX
XXXX BX
CX 03234 ED
DX 03235 BE
SP
BP
SI BEED
DI
Direccionamiento Indirecto por Registro
Ejemplo
Segmento Base : Direccin Indirecta {BX,BP,SI,DI}
Ejemplo : MOV AX, [SI]
01000 8B
01001 04
MOV AX,[SI]
0000 IP 01002 XX
01003 XX
0100 CS 01004 XX
0200 DS
SS
ES
FS
GS
XXXX AX
BX
CX 06321 ED
DX 06322 BE
SP
BP
4321 SI BEED
DI
Direccionamiento Base
PA = Segmento*16 + {BX o BP} + {desplazamiento de 8-bit o 16-bit}
Registro Base : comienzo de la estructura de datos
Example: MOV [BX]+1234H, AL 88 MOV [BX]+1234H, AL
01000
01001 07
0000 IP 01002 34
01003 12
0100 CS 01004 XX
0200 DS
SS
Arreglo de
ES
FS datos
GS
ED AX
1000 BX Desplazamiento Elemento n-1
CX
DX 04234
04235
SP +
BP
1234 SI Elemento 1
Registro Base
DI Elemento 0
Direccionamiento Indexado
PA = Segmento*16 + {SI, DI} + {desplazamiento 8-bit o 16-
bit}
Desplazamiento : direccin inicial de un arreglo
Indice: selecciona elemento especfico en el arreglo
Ejemplo: MOV AL, [SI]+1234H
01000 8A MOV AL, [SI]+1234H
01001 44
0000 IP 01002 34
01003 12
0100 CS 01004 XX Arreglo de datos
0200 DS
SS
ES Element n-1
FS Indice
GS
.
XX AX +
1000 BX .
CX 05234 BE . 1
Element
DX 05235 Desplazamiento Element 0
SP
BP
2000 SI
DI
Direccionamiento Base+ Indice
Caractersticas:
PA= Segmento*16 +{BX, BP}+{SI,DI}+{desplazamiento
8-bit o 16-bit}
Usado para accesar estructuras complejas de datos
Ver figura en la pgina siguiente
El desplazamiento (valor fijo) ubica el arreglo en
memoria
El registro base especifica la coordenada m
El registro ndice especifica la coordenada n
Ejemplo: MOV AH, [BX][SI]+1234H
opcode : 8A 44 34 12
Direccionamiento Base+Indice de un
arreglo de dos dimensiones
Arreglo de datos de dos dimensiones.
Elemento (m, n)
.
Registro ndice .
.
Elemento (m, 1)
Elemento (m, 0
Elemento (l, n)
+ .
.
.
Elemento (1, 1)
Elemento (1, 0)
Registro base Elemento (0, n)
.
.
+
.
Elemento (0, 1)
Desplazamiento Elemento (0, 0)
Ejemplo: MOV AH, [BX][SI]+1234H
ANTES Direccin Contenido Instruccin
01000 8A M0V AH,[BX][SI]+1234H
01001 A0

0000 IP 01002 34
01003 12
CS
0100 01004 xx
0200 DS

02000 xx
02001 xx

xx xx AX .
1000 BX .
.
.
.
.
.
2000 SI
.
06234 BE Operando Fuente
Ejemplo: MOV AH, [BX][SI]+1234H
DESPUES Direccin Contenido Instruccin
01000 8A M0V AH,[BX][SI]+1234H
01001 20

0004 IP 01002 34
01003 12
CS
0100 01004 xx
0200 DS

02000 xx
02001 xx

BE xx AX .
1000 BX .
.
.
.
.
.
2000 SI
.
06234 BE Operando Fuente
Direccionamiento Indice Escalado

Exclusivo de los microprocesadores 80386 hasta Pentium 4


Factor de escala afecta a la direccin efectiva solamente
EA = Registro Base + (Registro Indice x factor de escala) +
desplazamiento
PA = Segmento Base*16 + EA
AX
BX AX

CS
SS CX BX 1

CX

DS DX 2 8 bit displaceme nt
PA :
DX
ES
SP BP 4 32 - bit displaceme nt
FS BP 8

SI

GS SI DI
DI

Ejemplos de Direccionamiento
Inmediato
MOV BL,44
MOV AX,44H
MOV SI,0
MOV CH,100
MOV AL,A
MOV AX,64H
MOV CL,11001110B
MOV EBX,12340000H
MOV ESI,12
MOV EAX,100H
Ejemplos de direccionamiento por
Registro
MOV AL, BL
MOV CH, CL
MOV AX, CX
MOV SP, BP
MOV DS, AX
MOV SI, DI
MOV BX, ES
MOV ECX, EBX
MOV ESP, EDX
MOV ES, DS ;?? NO se permite segmento a segmento
MOV BL, DX ;?? NO se permite tipos de datos distintos
MOV CS, AX ;?? NO se permite CS como destino.
Ejemplos de Direccionamiento
Directo
MOV AL, NUMERO
MOV AX, ALGO
MOV EAX, AGUA
MOV NOTICIAS, AL
MOV ALLA, AX
MOV CASA, EAX
MOV ES:[2000H],AL
MOV [2000H], AL
MOV AL, [1234H]
MOV CX, DATO+5
MOV TABLA1, AX
MOV AL, DATO1
Ejemplos de direccionamiento Indirecto por
Registro
MOV CX, [BX]
MOV [BP], DL
MOV [DI], BH
MOV AL, [EDX]
MOV ECX, [EBX]
MOV [DI], [BX] ;?? NO se permite transferencia de
memoria a memoria, excepto con instrucciones que
manejan cadenas de caracteres.
Ejemplos de direccionamiento Base
+Indice
MOV CX, [BX+DI]
MOV CH, [BP+SI]
MOV [BX+SI], SP
MOV [BP+DI], AH
MOV CL, [EDX+EDI]
MOV [EAX+EBX], ECX
EJERCICIO 1
Asuma que DS=1512H. Encontrar la
direccion fisica y su contenido de la
localidad de memoria despues de
ejecutar:

MOV AL,99H
MOV [3518],AL
EJERCICIO 2
Asuma que DS=1120H, SI=2498H, y
AX=17FEH. Muestre graficamente el
contenido de las localidades de memoria
despues de ejecutar:

MOV [SI],AX
EJERCICIO 3
Asuma que DS=4500, SS=2000, BX=2100,
SI=1486, DI=8500, BP=7814, y AX=2512.
Muestre las direcciones fsicas donde se
almacena el contenido de AX en cada uno de
los casos siguientes:
1. MOV [BX]+20,AX
2. MOV [SI]+10,AX
3. MOV [DI]+4,AX
4. MOV [BP]+12,AX
NOTA: Todos los valores son hexadecimales.
EJERCICIO 4
De las instrucciones siguientes cuantas no codifican en
lenguaje ensamblador, d la razn por qu NO.
1. MOV AX,27
2. MOV AL,97F
3. MOV DS,9BF2
4. MOV CX,397
5. MOV SI,9516
6. MOV CS,3490
7. MOV DS,BX
8. MOV BX,CS
9. MOV CS,BX
10.MOV CS,BH
11.MOV AX,12345
12.MOV CS,DS
Ejemplos de instrucciones con
direccionamiento relativo base+ndice
MOV DH, [BX+DI+20H]
MOV AX, ARCHIVO [BX+DI]
MOV LISTA [BP+DI], CL
MOV LISTA1 [BP+SI+4], DH
MOV EAX, ARCHIVO1 [EBX+ECX+]
;Considere el siguiente segmento de programa. Asuma que un archivo de muchos arreglos de
datos existe en memoria, y que cada arreglo contiene muchos elementos.

MOV BX, OFFSET ARREGLOA


MOV DI, 0
MOV AL, ARCHIVO [BX+DI]
MOV BX, OFFSET ARREGLOC
MOV DI,2
MOV ARCHIVO [BX+DI], AL
Ejemplos de direccionamiento ndice
escalado
MOV EAX, [EBX+4*ECX]
MOV [EAX+2*EBX], CX
MOV AX, [EBP+2*EDI+100H]
MOV LISTA [EAX+2*EBX+10H],DX

Considere el ejemplo siguiente:


MOV EBX, OFFSET LISTA
MOV ECX, 2
MOV AX,[EBX+2*ECX]
MOV ECX,4
MOV [EBX+2*ECX], AX
MOV ECX,7
MOV [EBX+2*ECX], AX
Nota: LISTA es una variable tipo doble palabra.