Вы находитесь на странице: 1из 29

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:
Basic
Instruction
Set
Basic +
Extended
Instruction
Set
Basic +
Extended+
80386 specific
Instruction
Set
System control
Instruction set
System control
Instruction set
8086/8088
80286
80386
Protected Mode
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

ABCD
Direccionamiento por Registro
0000 IP
CS
DS
SS
ES
FS
GS
AX
BX
CX
DX
SP
BP
SI
DI
Direccin Contenido
Memoria
Instruccin
80386
uP
0100
XXXX
ABCD
01000 89 MOV AX, BX
01001 D8
01002 XX
Direccionamiento Inmediato
0000 IP
CS
DS
SS
ES
FS
GS
AX
BX
CX
DX
SP
BP
SI
DI
Direccin
Contenido
de
Memora
Instruccin
80386
MPU
0100
01000 B0 MOV AL, 15H
01001 15
01002 XX
XX 15
Direccionamiento InDirecto

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]
MOV BX, [1234H]
IP
CS
DS
SS
ES
FS
GS
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
01004

8B
0E
34
12
XX
0000
0100
0200
XXXX
03234 ED
03235 BE
BEED
Direccionamiento Indirecto por Registro
Ejemplo
Segmento Base : Direccin Indirecta {BX,BP,SI,DI}
Ejemplo : MOV AX, [SI]
MOV AX,[SI]
IP
CS
DS
SS
ES
FS
GS
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
01004

8B
04
XX
XX
XX
0000
0100
0200
XXXX
03234 ED
03235 BE
BEED
1234
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
MOV [BX]+1234H, AL
IP
CS
DS
SS
ES
FS
GS
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
01004

88
07
34
12
XX
0000
0100
0200
04234
04235
1234
ED
1000
Desplazamiento
Registro Base
+
Elemento 0
Elemento 1
Elemento n-1
Arreglo de
datos
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
Indice
Desplazamiento
+
Element 0
Element 1
Arreglo de datos
Element n-1
8A
44
34
12
XX
0000
0100
0200
05234
05235
2000
XX
1000
IP
CS
DS
SS
ES
FS
GS
AX
BX
CX
DX
SP
BP
SI
DI
01000
01001
01002
01003
01004

MOV AL, [SI]+1234H
BE
.
.
.
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)
Elemento (m, 1)
.
.
.
Elemento (m, 0
Elemento (l, n)
.
.
.
Elemento (1, 1)
Elemento (1, 0)
Elemento (0, n)
.
.
.
Elemento (0, 1)
Elemento (0, 0)
Registro ndice
Registro base
Desplazamiento
+
+
Ejemplo: MOV AH, [BX][SI]+1234H

M0V AH,[BX][SI]+1234H
0200
0100
0000
01000 8A
01001 A0
01002 34
01003 12
01004 xx
02000 xx
02001 xx
Direccin Contenido Instruccin
.
.
.
.
.
.
.
.
06234 BE Operando Fuente
xx xx
1000
2000
IP
SI
CS
DS
AX
BX
ANTES
Ejemplo: MOV AH, [BX][SI]+1234H

M0V AH,[BX][SI]+1234H
0200
0100
0004
01000 8A
01001 20
01002 34
01003 12
01004 xx
02000 xx
02001 xx
Direccin Contenido Instruccin
.
.
.
.
.
.
.
.
06234 BE Operando Fuente
xx BE
1000
2000
IP
SI
CS
DS
AX
BX
DESPUES
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










)
`

=
nt displaceme bit - 32
nt displaceme bit 8
8
4
2
1
DI
SI
BP
DX
CX
BX
AX
DI
SI
BP
SP
DX
CX
BX
AX
:
GS
FS
ES
DS
SS
CS
PA
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
Ejemplos de direccionamiento Base +Indice
Este direccionamiento se usa para accesar los elementos de un arreglo de datos en
memoria. Veamos la siguiente secuencia de instrucciones en lenguaje ensamblador.


ARREGLO DB 16 DUP(?) ;arreglo de 32 bytes en memoria


MOV BX, OFFSET ARREGLO
MOV DI, 10H
MOV AL, [BX+DI]
MOV DI, 2OH
MOV [BX+DI], AL

Asuma que el dato en la localidad 10H en ARREGLO es 29H.
Ejemplos de direccionamiento relativo por Registro
MOV AX, [DI+100H]
MOV ARREGLO [SI], BL
MOV LISTA [SI+2], CL
MOV DI, TABLA [BX]
MOV DI,[EAX+10H]
MOV TABLA1 [EBX], EAX
;A continuacin tenemos un ejemplo del uso del direccionamiento relativo por registro

MOV DI, 10H
MOV AL, ARREGLO [DI]
MOV DI, 20H
MOV ARREGLO [DI], AL


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.
MOV AX,27
MOV AL,97F
MOV DS,9BF2
MOV CX,397
MOV SI,9516
MOV CS,3490
MOV DS,BX
MOV BX,CS
MOV CS,BX
MOV CS,BH
MOV AX,12345
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.

Вам также может понравиться