Ensambladores
Las instrucciones de 16 bits tienen el siguiente formato:
Código de
operación
1 a 2 bytes
Especificador de Desplazamiento
Dirección
0 a 2 bytes
0 a 1 byte
Dato Inmediato
0 a 2 bytes
Dentro del código de operación, pueden estar incluidos campos de
operación menores que definen tamaño de desplazamiento, codificación
de registros o extensión de signo (w, d,s, reg, regs2).
El especificador de dirección define el modo de direccionamiento y puede
incluir también la codificación de registros (mod r/m, reg, regs2, regs3).
Las siguientes tablas definen los valores de codificación para los campos
del código de operación y del especificador de dirección.
VALOR DE w
1
0
N/P
AX
AL
AX
CX
CL
CX
DX
DL
DX
BX
BL
BX
SP
AH
SP
BP
CH
BP
SIDH
SI
DI
BH
DI
reg
000
001
010
011
100
101
110
111
REGISTRO
ES
CS
SS
DS
REGISTRO
ES
CS
SS
DS
DIRECCION DE LA OPERACIÓN
Reg a Reg/Mem
El campo “reg” indica el operando fuente; “mod r/m”
indica operando destino.
Reg/Mem a Reg
El campo “reg” indica el operando destino; “mod r/m”
indica operando fuente.
s
regs2
00
01
10
11
regs3
000
001
010
011
d
01
Efecto sobre dato inmediato de Efecto sobre dato inmediato de
8 bits
16 bits
0 Ninguno
Ninguno
1 Extensión de signo del dato de 8 Ninguno
bits hasta completar los 16 bits
mod
00
00
00
00
00
00
00
00
r/m
000
001
010
011
100
101
110
111
Dir. Efec.
DS:[BX+SI]
DS:[BX+DI]
SS:[BP+SI]
SS:[BP+DI]
DS:[SI]
DS:[DI]
DS:DIRECTA
DS:[BX]
mod
10
10
10
10
10
1010
10
r/m
000
001
010
011
100
101
110
111
01
01
01
01
01
01
01
01
000
001
010
011
100
101
110
111
DS:[BX+SI+d8]
DS:[BX+DI+d8]
SS:[BP+SI+d8]
SS:[BP+DI+d8]
DS:[SI+d8]
DS:[DI+d8]
DS:[BP+d8]
DS:[BX+d8]
11
11
11
11
11
11
11
11
000
001
010
011
100
101
110
111
Dir. Efec.
DS:[BX+SI+d16]
DS:[BX+DI+d16]
SS:[BP+SI+d16]
SS:[BP+DI+d16]DS:[SI+d16]
DS:[DI+d16]
DS:[BP+d16]
DS:[BX+d16]
w=0
w=1
AL
AX
CL
CX
DL
DX
BL
BX
AH
SP
CH
BP
DH
SI
BH
DI
• Instrucciones de Transferencia de Datos
INSTRU
-CCION
MOV
DIRECCIONA-MIENTO
Reg a Reg/Mem
Reg/Mem a Reg
Inm a Reg/Mem
Inm a Reg (corta)
Mem a Acum (corta)
Acum a Mem (corta)
Reg a Regs
Regs a Reg
MOVSB Sin operandos
MOVSW Sin operandos
LEA
Mem a RegLDS
Mem a Reg
LES
Mem a Reg
LAHF
Sin operandos
LODSB Sin operandos
LODSW Sin operandos
PUSH
Reg/Mem
Reg (corta)
Inmediato
Regs (corta)
POP
Reg/Mem
Reg (corta)
Regs (corta)
PUSHA Sin operandos
CODIFICACION
Código
1000100w
1000101w
1100011w
1011w reg
1010000w
1010001w
10001110
10001100
10100100
10100101
10001101
11000101
11000100
10011111
10101100
1010110111111111
01010 reg
011010s0
000 regs2 110
10001111
01011 reg
000 regs2 111
01100000
Dirección
mod reg r/m
mod reg r/m
mod 000 r/m
Desp.
0a2
0a2
0a2
Inm.
1o2
1o2
0a2
0a2
mod regs3 r/m
mod regs3 r/m
mod reg r/m
mod reg r/m
mod reg r/m
0a2
0a2
0a2
mod 110 r/m
0a2
1o2
mod 000 r/m
0a2
POPA
XCHG
•
ADD
ADC
SUB
SBB
MUL(ss)
IMUL
DIV(ss)
IDIV
INC
CMP
•
01100001
1000011w
10010 reg
mod reg r/m
STD
STI
PUSHF
POPF
0a2
•
Instrucciones Aritméticas
INSTRU
-CCION
DEC
Sin operandos
Reg/Mem con Reg
Reg con Acum (corta)
DIRECCIONAMIENTO
Reg con Reg
Reg con Mem
Mem con Reg
Inm con Reg/Mem
Inm con Acum
Reg con Reg
Reg con Mem
Mem con Reg
Inm con Reg/Mem
Inm con Acum
Reg de Reg
Regde Mem
Mem de Reg
Inm de Reg/Mem
Inm de Acum
Reg de Reg
Reg de Mem
Mem de Reg
Inm de Reg/Mem
Inm de Acum
Acum con Reg/Mem
Acum con Reg/Mem
Código
000000dw
0000000w
0000001w
100000sw
0000010w
000100dw
0001000w
0001001w
100000sw
0001010w
001010dw
0010100w
0010101w
100000sw
0010110w
000110dw
0001100w
0001101w
100000sw
0001110w
1111011w
1111011w
Dirección
mod...
Regístrate para leer el documento completo.