Documentos de Académico
Documentos de Profesional
Documentos de Cultura
8. Modos de direccionamiento
Los llamados modos de direccionamiento son las diferentes maneras
de especificar en informtica un operando dentro de una instruccin en
lenguaje ensamblador. Son medios que facilitan la tarea de
programacin, permitiendo el acceso a los datos de una manera
natural y eficiente. Estos indican al procesador como calcular la
direccin absoluta (real o efectiva) donde se encuentran los datos.
Diversas arquitecturas de computadores estn en desacuerdo en gran
proporcin en cuanto al nmero de modos de direccionamiento que
los
objetivos
de
los
modos
de
Ejemplo:
ADD BX, CX
MOV BX, AX
SUB DX, BX
Direccionamiento indexado
El procesador calcula la direccin efectiva (real o absoluta sumando a
DS o a ES SI o DI respectivamente) ms un desplazamiento. Similar al
direccionamiento relativo a registro base: El operando se encuentra en
memoria y por ser un registro ndice: se modifica a menudo en la
ejecucin del programa.
Ejemplo:
MOV SI,2
MOV AX, DATO [SI]
Direccionamiento indirecto
El operando se encuentra en memoria. La instruccin contiene una
direccin que se emplea para leer en memoria una direccin
intermedia que ser la verdadera direccin del objeto buscado.
Ejemplo:
MOV BX, OFFSET DATO (LEA BX, DATO)
MOV AX,[BX]
9. Set de instrucciones del 8088
Inst. Operandos
Bytes Ciclos 8088 Ciclos 286 Ciclos
------ ----------------------------------- ------- --------------- ------------ ------------ -----------AAA
1
8
3
4
3
AAD
2
60
14
19
14
AAM
2
83
16
17
15
AAS
1
8
3
4
3
ADC
registro, registro
2
3
2
2
1
ADC
registro, memoria
2-4
9(13)+EA
7#
6
ADC
memoria, registro
2-4
16(24)+EA
7#
7
ADC
registro, inmediato
3-4
4
3
2
1
ADC
memoria, inmediato
3-6
17(25)+EA
7#
7
ADC
acumulador, inmediato
2-3
4
3
2
1
ADD
registro, registro
2
3
2
2
1
ADD
registro, memoria
2-4
9(13)+EA
7#
6
ADD
memoria, registro
2-4
16(24)+EA
7#
7
ADD
registro, inmediato
3-4
4
3
2
1
ADD
memoria, inmediato
3-6
17(25)+EA
7#
7
ADD
acumulador, inmediato
2-3
4
3
2
1
AND
registro, registro
2
3
2
2
1
AND
registro, memoria
2-4
9(13)+EA
7#
6
AND
memoria, registro
2-4
16(24)+EA
7#
7
AND
registro, inmediato
3-4
4
3
2
1
AND
memoria, inmediato
3-6
17(25)+EA
7#
7
AND
acumulador, inmediato
2-3
4
3
2
1
BOUND registro16, memoria16
2-4
(no existe)
13 #
10
BOUND registro32, memoria32
2-6
(no existe) (no existe)
10
386
2
3
3
2
3
3
2
3
3
7
Ciclos 486
BSF
registro16, registro16
3
(no existe) (no existe)
10+3*n
6-42
BSF
registro16, memoria16
5-7
(no existe) (no existe)
10+3*n
7-43
BSF
registro32, registro32
3
(no existe) (no existe)
10+3*n
6-42
BSF
registro32, memoria32
5-7
(no existe) (no existe)
10+3*n
7-43
BSR
registro16, registro16
3
(no existe) (no existe)
10+3*n
6-42
BSR
registro16, memoria16
5-7
(no existe) (no existe)
10+3*n
7-43
BSR
registro32, registro32
3
(no existe) (no existe)
10+3*n
6-42
BSR
registro32, memoria32
5-7
(no existe) (no existe)
10+3*n
7-43
BT
registro16, registro16
3
(no existe) (no existe)
3
3
BT
memoria16, registro16
5-7
(no existe) (no existe)
12
8
BT
registro32, registro32
3
(no existe) (no existe)
3
3
BT
memoria32, registro32
5-7
(no existe) (no existe)
12
8
BT
registro16, inmediato8
4
(no existe) (no existe)
3
3
BT
memoria16, inmediato8
6-8
(no existe) (no existe)
6
3
BT
registro32, inmediato8
4
(no existe) (no existe)
3
3
BT
memoria32, inmediato8
6-8
(no existe) (no existe)
6
3
BTC
registro16, registro16
3
(no existe) (no existe)
6
6
BTC
memoria16, registro16
5-7
(no existe) (no existe)
13
13
BTC
registro32, registro32
3
(no existe) (no existe)
6
6
BTC
memoria32, registro32
5-7
(no existe) (no existe)
13
13
BTC
registro16, inmediato8
4
(no existe) (no existe)
6
6
BTC
memoria16, inmediato8
6-8
(no existe) (no existe)
8
8
BTC
registro32, inmediato8
4
(no existe) (no existe)
6
6
BTC
memoria32, inmediato8
6-8
(no existe) (no existe)
8
8
BTR
registro16, registro16
3
(no existe) (no existe)
6
6
BTR
memoria16, registro16
5-7
(no existe) (no existe)
13
13
BTR
registro32, registro32
3
(no existe) (no existe)
6
6
BTR
memoria32, registro32
5-7
(no existe) (no existe)
13
13
BTR
registro16, inmediato8
4
(no existe) (no existe)
6
6
BTR
memoria16, inmediato8
6-8
(no existe) (no existe)
8
8
BTR
registro32, inmediato8
4
(no existe) (no existe)
6
6
BTR
memoria32, inmediato8
6-8
(no existe) (no existe)
8
8
BTS
registro16, registro16
3
(no existe) (no existe)
6
6
BTS
memoria16, registro16
5-7
(no existe) (no existe)
13
13
BTS
registro32, registro32
3
(no existe) (no existe)
6
6
BTS
memoria32, registro32
5-7
(no existe) (no existe)
13
13
BTS
registro16, inmediato8
4
(no existe) (no existe)
6
6
BTS
memoria16, inmediato8
6-8
(no existe) (no existe)
8
8
BTS
registro32, inmediato8
4
(no existe) (no existe)
6
6
BTS
memoria32, inmediato8
6-8
(no existe) (no existe)
8
8
CALL procedimiento near (intrasegmento) 3
23
7+m
7+m
3
CALL procedimiento far (intersegmento) 5
36
13+m
17+m
18
CALL intrasegmento indirecto a memoria 2-4
29+EA
11+m
10+m
5
CALL intrasegmento indirecto a registro 2
24
7+m
7+m
5
CALL intersegmento indirecto a memoria 2-4
57+EA
16+m
22+m
17
CBW
1
2
2
3
3
CDQ
1
(no existe) (no existe)
2
3
CLC
1
2
2
2
2
CLD
1
2
2
2
2
CLI
1
2
3
3
5
CMC
1
2
2
2
2
CMP
registro, registro
2
3
2
2
1
CMP
registro, memoria
2-4
9(13)+EA
6#
6
2
CMP
memoria, registro
2-4
9(13)+EA
7#
5
2
CMP
registro, inmediato
3-4
4
3
2
1
CMP
memoria, inmediato
3-6
10(14)+EA
6#
5
2
CMP
acumulador, inmediato
2-3
4
3
2
1
CMPS
1
22(30)
8
10
8
CMPS (REP)
1
9+22(30)*n
5+9*n
5+9*n 5 (CX=0) 7+7*n
CWD
1
5
2
2
3
CWDE
1
(no existe) (no existe)
3
3
DAA
1
4
3
4
2
DAS
1
4
3
4
2
DEC
registro byte
2
3
2
2
1
DEC
registro palabra
1
2
2
2
1
DEC
memoria
2-4
15(23)+EA
7#
6
3
DIV
registro byte
2
80-90
14
14
16
DIV
registro palabra
2
144-162
22
22
24
DIV
registro32
2
(no existe) (no existe)
38
40
DIV
byte de memoria
2-4
86-96+EA
17 #
17
16
DIV
palabra de memoria
2-4
154-172+EA
25 #
25
24
DIV
palabra32 de memoria
2-6
(no existe) (no existe)
41
40
ENTER constante16, 0
4
(no existe)
11
10
14
ENTER constante16, 1
4
(no existe)
15
12
17
ENTER constante16, nivel
4
(no existe) 12+4*(n-1)
15+4*(n-1)
17+3*n
ESC
inmediato, memoria
2-4
8(12)+EA
9-20 # (ver coproc.) (ver coproc.)
ESC
inmediato, registro
2
2
2
(ver coproc.) (ver coproc.)
HLT
1
2
2
5
4
IDIV registro byte
2
101-112
17
19
19
IDIV registro palabra
2
165-185
25
27
27
IDIV registro32
2
(no existe) (no existe)
43
43
IDIV byte de memoria
2-4
107-118+EA
20 #
19
20
IDIV palabra de memoria
2-4
175-194+EA
28 #
27
28
IDIV palabra32 de memoria
2-6
(no existe) (no existe)
43
44
IMUL registro byte
2
80-98
13
9-14
13-18
IMUL registro palabra
2
128-154
21
9-22
13-26
IMUL registro32
2
(no existe) (no existe)
9-38
13-42
IMUL byte de memoria
2-4
86-104+EA
16
12-17
13-18
IMUL palabra de memoria
2-4
138-164+EA
24 #
12-25
13-26
IMUL palabra32 de memoria
2-6
(no existe) (no existe)
12-41
13-42
IMUL registro16 destino, constante
3-4
(no existe)
21
9-22
13-26
IMUL registro16 destino, memoria
5-7
(no existe) (no existe)
12-25
13-26
IMUL registro32 destino, memoria
5-7
(no existe) (no existe)
12-41
13-42
IMUL registro destino, registro, cte. 2-4
(no existe)
21
9-22
13-26
IMUL registro destino, memoria, cte.
3-4
(no existe)
24 #
12-25
13-26
IN
acumulador, puerto fijo
2
10(14)
5
12(26)
14(27)
IN
acumulador, DX
1
8(12)
5
13(27)
14(27)
INC
registro byte
2
3
2
2
1
INC
registro palabra
1
2
2
2
1
INC
memoria
2-4
15(23)+EA
7#
6
3
INS
1
(no existe)
5
15(29)
17(30)
INS
(REP)
2
(no existe)
5+4*n 13(27)+6*n 16(29)+8*n
INT
3
1
52
23+m
33
26
INT
inmediato
2
51
23+m
37
30
INTO
1
53 4
24+m 3
35 3
28 3
IRET
1
32
17+m
22
15
JCXZ
2
18 6
8+m 4
9+m 5
31
JECXZ
2
(no existe)
(no existe) 9+m 5
31
JMP
short
2
15
7+m
7+m
3
JMP
near (intrasegmento)
3
15
7+m
7+m
3
JMP
far (intersegmento)
5
15
11+m
12+m
17
JMP
intrasegmento indirecto a memoria 2-4
18+EA
11+m #
10+m
5
JMP
intrasegmento indirecto a registro 2
11
7+m
7+m
5
JMP
intersegmento indirecto a memoria 2-4
24+EA
15+m
17+m
13
Jxxx inmediato8
2
16 4
7+m 3
7+m 3
31
Jxxx inmediato32
6
(no existe)
(no existe) 7+m 3
31
LAHF
1
4
2
2
3
LDS
2-4
24+EA
7#
7
6
LEA
2-4
2+EA
3#
2
1
LEAVE
1
(no existe)
5
4
5
LES
2-4
24+EA
7#
7
6
LFS
2-4
(no existe)
(no existe)
7
6
LGS
2-4
(no existe)
(no existe)
7
6
LSS
2-4
(no existe)
(no existe)
7
6
LOCK
1
2
0
0
1
LODS
1
12(16)
5
5
5
LODS (REP)
1
9+13(17)*n
5+4*n
5+6*n 5 (CX=0) 7+4*n
LOOP
2
17 5
8+m 4
11+m
26
LOOPE
2
18 6
8+m 4
11+m
96
LOOPNE
2
19 5
8+m 4
11+m
96
LOOPZ
2
18 6
8+m 4
11+m
96
LOOPNZ
2
19 5
8+m 4
11+m
96
MOV
memoria, acumulador
3
10(14)
3
2
1
MOV
acumulador, memoria
3
10(14)
5
4
1
MOV
registro, registro
2
2
2
2
1
MOV
registro, memoria
2-4
8(12)+EA
5#
4
1
MOV
memoria, registro
2-4
9(13)+EA
3#
2
1
MOV
registro, inmediato
2-3
4
2
2
1
MOV
memoria, inmediato
3-6
10(14)+EA
3#
2
1
MOV
registro de segmento, registro
2
2
2
2
3
MOV
registro, registro de segmento
2
2
2
2
3
MOV
registro de segmento, memoria
2-4
8(12)+EA
5#
5
9
MOV
memoria, registro de segmento
2-4
9(13)+EA
3#
2
3
MOVS
1
18(26)
5
7
7
MOVS (REP)
1
9+17(25)*n
5+4*n
5+4*n 5 (CX=0) 12+3*n
MOVSX registro16, registro8
3
(no existe)
(no existe)
3
3
MOVSX registro16, memoria8
5-7 (no existe)
(no existe)
6
3
MOVSX registro32, registro8
3
(no existe)
(no existe)
3
3
MOVSX registro32, memoria8
5-7 (no existe)
(no existe)
6
3
MOVSX registro32, registro16
3
(no existe)
(no existe)
3
3
MOVSX registro32, memoria16
5-7 (no existe)
(no existe)
6
3
MOVZX registro16, registro8
3
(no existe)
(no existe)
3
3
MOVZX registro16, memoria8
5-7 (no existe)
(no existe)
6
3
MOVZX registro32, registro8
3
(no existe)
(no existe)
3
3
MOVZX registro32, memoria8
5-7 (no existe)
(no existe)
6
3
MOVZX registro32, registro16
3
(no existe)
(no existe)
3
3
MOVZX registro32, memoria16
5-7 (no existe)
(no existe)
6
3
MUL
registro byte
2
70-77
13
9-14
13
MUL
registro palabra
2
118-133
21
9-22
13
MUL
registro32
2
(no existe) (no existe)
9-38
13
MUL
byte de memoria
2-4
76-83+EA
16 #
12-27
18
MUL
palabra de memoria
2-4
128-143+EA
24 #
12-25
26
MUL
palabra32 de memoria
2-6
(no existe) (no existe)
12-41
42
NEG
registro
2
3
2
2
1
NEG
memoria
2-4
16(24)+EA
7#
6
3
NOP
1
3
3
3
1
NOT
registro
2
3
2
2
1
NOT
memoria
2-4
16(24)+EA
7#
6
3
OR
registro, registro
2
3
2
2
1
OR
registro, memoria
2-4
9(13)+EA
7#
6
3
OR
memoria, registro
2-4
16(24)+EA
7#
7
3
OR
registro, inmediato
3-4
4
3
2
1
OR
memoria, inmediato
3-6
17(25)+EA
7#
7
3
OR
acumulador, inmediato
2-3
4
3
2
1
OUT
puerto fijo, acumulador
2
10(14)
3
10(24)
16(29)
OUT
DX, acumulador
1
8(12)
3
11(25)
16(29)
OUTS byte o palabra
1
(no existe)
5
14(28)
17(30)
OUTS (REP)
2
(no existe)
5+4*n
12(26)+5*n 17(31)+5*n
POP
registro normal
1
12
5
4
4
POP
registro de segmento
1
12
5
7
3
POP
memoria
2-4
25+EA
5#
5
6
POPA
1
(no existe)
19
24
9
POPAD
1
(no existe)
(no existe)
24
9
POPF
1
12
5
5
9
POPFD
1
(no existe)
(no existe)
5
9
PUSH registro
1
14
3
2
1
PUSH memoria
2-4
24+EA
5#
5
4
PUSH inmediato
2-3 (no existe)
3
2
1
PUSHA
1
(no existe)
17
18
11
PUSHAD
1
(no existe)
(no existe)
18
11
PUSHF
1
14
3
4
4
PUSHFD
1
(no existe)
(no existe)
4
4
RCL
registro,1
2
2
2
9
3
RCL
registro,CL
2
8+4*bits
5
9
8-30
RCL
registro, contador
3
(no existe)
5
9
8-30
RCL
memoria, contador
3-6 (no existe)
8#
10
9-31
RCL
memoria,1
2-4
15(23)+EA
7#
10
4
RCL
memoria,CL
2-4 20(28)+EA+4*bits
8#
10
9-31
RCR
registro,1
2
2
2
9
3
RCR
registro,CL
2
8+4*bits
5
9
8-30
RCR
registro, contador
3
(no existe)
5
9
8-30
RCR
memoria, contador
3-6 (no existe)
8#
10
9-31
RCR
memoria,1
2-4
15(23)+EA
7#
10
4
RCR
memoria,CL
2-4 20(28)+EA+4*bits
8#
10
9-31
REP
1
2
0
0
0
REPE
1
2
0
0
0
REPNE
1
2
0
0
0
REPZ
1
2
0
0
0
REPNZ
1
2
0
0
0
RET
intrasegmento
1
20
11+m
10+m
5
RET
intrasegmento con SP+inmediato
3
24
11+m
10+m
5
RET
intersegmento
1
32
15+m
18+m
13
RET
intersegmento con SP+inmediato
3
31
15+m
18+m
14
ROL
registro,1
2
2
2
3
3
ROL
registro,CL
2
8+4*bits
5
3
3
ROL
registro, contador
3
(no existe)
5
3
2
ROL
memoria, contador
3-6 (no existe)
8#
7
4
ROL
memoria,1
2-4
15(23)+EA
7#
7
4
ROL
memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
ROR
registro,1
2
2
2
3
3
ROR
registro,CL
2
8+4*bits
5
3
3
ROR
registro, contador
3
(no existe)
5
3
2
ROR
memoria, contador
3-6 (no existe)
8#
7
4
ROR
memoria,1
2-4
15(23)+EA
7#
7
4
ROR
memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SAHF
1
4
2
3
2
SAL
registro,1
2
2
2
3
3
SAL
registro,CL
2
8+4*bits
5
3
3
SAL
registro, contador
3
(no existe)
5
3
2
SAL
memoria, contador
3-6 (no existe)
8#
7
4
SAL
memoria,1
2-4
15(23)+EA
7#
7
4
SAL
memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SAR
registro,1
2
2
2
3
3
SAR
registro,CL
2
8+4*bits
5
3
3
SAR
registro, contador
3
(no existe)
5
3
2
SAR
memoria, contador
3-6 (no existe)
8#
7
4
SAR
memoria,1
2-4
15(23)+EA
7#
7
4
SAR
memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SBB
registro, registro
2
3
2
2
1
SBB
registro, memoria
2-4
9(13)+EA
7#
6
2
SBB
memoria, registro
2-4
16(24)+EA
7#
7
3
SBB
registro, inmediato
3-4
4
3
2
1
SBB
memoria, inmediato
3-6
17(25)+EA
7#
7
3
SBB
acumulador, inmediato
2-3
4
3
2
1
SCAS
1
15(19)
7
7
6
SCAS (REP)
1
9+15(19)*n
5+8*n
5+8*n 5 (CX=0) 7+5*n
SETcc registro8
2
(no existe) (no existe)
4
4
SETcc memoria8
4-6 (no existe) (no existe)
5
3
SHL
registro,1
2
2
2
3
3
SHL
registro,CL
2
8+4*bits
5
3
3
SHL
registro, contador
3
(no existe)
5
3
2
SHL
memoria, contador
3-6
(no existe)
8#
7
4
SHL
memoria,1
2-4
15(23)+EA
7#
7
4
SHL
memoria,CL
2-4 20(28)+EA+4*bits
8#
7
4
SHLD registro16, registro16, inmediato8 4
(no existe) (no existe)
3
2
SHLD memoria16, registro16, inmediato8 6-8 (no existe) (no existe)
7
3
SHLD registro32, registro32, inmediato8 4
(no existe) (no existe)
3
2
SHLD memoria32, registro32, inmediato8 6-8 (no existe) (no existe)
7
3
SHLD registro16, registro16, CL
3
(no existe) (no existe)
3
2
SHLD memoria16, registro16, CL
5-7 (no existe) (no existe)
7
3
SHLD registro32, registro32, CL
3
(no existe) (no existe)
3
2
SHLD memoria32, registro32, CL
5-7 (no existe) (no existe)
7
3
SHR
registro,1
2
2
2
3
3
SHR
registro,CL
2
8+4*bits
5
3
3
SHR
registro, contador
3
(no existe)
5
3
2
SHR
memoria, contador
3-6
(no existe)
8#
7
4
SHR
memoria,1
2-4
15(23)+EA
7#
7
4
SHR
memoria,CL
2-4 20(28)+EA+4*bits 8 #
7
4
SHRD registro16, registro16, inmediato8 4
(no existe) (no existe)
3
2
SHRD memoria16, registro16, inmediato8 6-8 (no existe) (no existe)
7
3
SHRD registro32, registro32, inmediato8 4
(no existe) (no existe)
3
2
SHRD memoria32, registro32, inmediato8 6-8 (no existe) (no existe)
7
3
SHRD registro16, registro16, CL
3
(no existe) (no existe)
3
2
SHRD memoria16, registro16, CL
5-7 (no existe) (no existe)
7
3
SHRD registro32, registro32, CL
3
(no existe) (no existe)
3
2
SHRD memoria32, registro32, CL
5-7 (no existe) (no existe)
7
3
STC
1
2
2
2
2
STD
1
2
2
2
2
STI
1
2
2
3
5
STOS
1
11(15)
3
4
5
STOS (REP)
1
9+10(14)*n
4+3*n
5+5*n 5 (CX=0) 7+4*n
SUB
registro, registro
2
3
2
2
1
SUB
registro, memoria
2-4
9(13)+EA
7#
6
2
SUB
memoria, registro
2-4
16(24)+EA
7#
7
3
SUB
registro, inmediato
3-4
4
3
2
1
SUB
memoria, inmediato
3-6
17(25)+EA
7#
7
3
SUB
acumulador, inmediato
2-3
4
3
2
1
TEST registro, registro
2
3
2
2
1
TEST registro, memoria
2-4
9(13)+EA
6#
5
2
TEST memoria, registro
2-4
16(24)+EA
6#
5
2
TEST registro, inmediato
3-4
4
3
2
1
TEST memoria, inmediato
3-6
17(25)+EA
6#
5
2
TEST acumulador, inmediato
2-3
4
3
2
1
WAIT
1
3
3
6
1-3
XCHG AX,registro16
1
3
3
3
3
XCHG registro, registro
2
4
3
3
3
XCHG memoria, registro
2-4
17(25)+EA
5#
5
5
XLAT
1
11
5
5
4
XOR
registro, registro
2
3
2
2
1
XOR
registro, memoria
2-4
9(13)+EA
7#
6
2
XOR
memoria, registro
2-4
16(24)+EA
7#
7
3
XOR
registro, inmediato
3-4
4
3
2
1
XOR
memoria, inmediato
3-6
17(25)+EA
7#
7
3
XOR
acumulador, inmediato 2-3
4
3
2
1