Professional Documents
Culture Documents
ADD
Add
AND
Logical AND
CALL
Call procedure
destination :=
destination +
source + carry_flag
0x100x15,
0x80/20x83/2
CBW
CLC
CLD
CLI
CMC
CMP
Compare operands
CMPSB
CF = 0;
DF = 0;
IF = 0;
0x98
0xF8
0xFC
0xFA
0xF5
0x380x3D,
0x80/70x83/7
0xA6
Decrement by 1
DIV
Unsigned divide
ESC
HLT
IDIV
Signed divide
IMUL
Signed multiply
DX:AX = DX:AX /
r/m; resulting DX ==
remainder
INC
Increment by 1
INT
INTO
IRET
Call to interrupt
Call to interrupt if overflow
Return from interrupt
Jcc
Jump if condition
JCXZ
Jump if CX is zero
JMP
Jump
LAHF
LDS
LEA
LES
LOCK
0x27
0x2F
0x48, 0xFE/1,
0xFF/1
0xF6/6, 0xF7/6
0xF4
DX:AX = DX:AX /
r/m; resulting DX ==
remainder
(1) DX:AX = AX *
r/m; (2) AX = AL *
r/m
IN
Opcode
0xA7
0x99
0xF6/7, 0xF7/7
0x69, 0x6B,
0xF6/5, 0xF7/5,
0x0FAF
(1) AL = port[imm];
0xE4, 0xE5,
(2) AL = port[DX];
0xEC, 0xED
(3) AX = port[DX];
0x40, 0xFE/0,
0xFF/0
0xCD
0xCE
0xCF
(JA, JAE, JB, JBE,
JC, JE, JG, JGE,
JL, JLE, JNA, JNAE,
JNB, JNBE, JNC,
JNE, JNG, JNGE,
JNL, JNLE, JNO,
JNP, JNS, JNZ, JO,
JP, JPE, JPO, JS,
JZ)
(for multiprocessing)
0x700x7F,
0xE3, 0x0F83,
0x0F87
0xE3
0xE90xEB,
0xFF/4, 0xFF/5
0x9F
0xC5
0x8D
0xC4
0xF0
MOVSB
MOVSW
MUL
Unsigned multiply
NEG
if (DF==0)
*(byte*)DI++ =
*(byte*)SI++;
else
*(byte*)DI-- =
*(byte*)SI--;
if (DF==0)
*(word*)DI++ =
*(word*)SI++;
else
*(word*)DI-- =
*(word*)SI--;
0xA4
0xA5
(1) DX:AX = AX *
r/m; (2) AX = AL *
r/m;
r/m *= -1;
NOP
No operation
opcode equivalent to
XCHG EAX, EAX, but it
is never optimized to
0x90
"nothing happens",
always using a fixed
number of processor
ticks
NOT
r/m ^= -1;
OR
Logical OR
OUT
Output to port
POP
SBB
SCASB
SCASW
SHL
SHR
STC
STD
STI
STOSB
alternative 1-byte
encoding of
SBB AL, AL is
available via
undocumented SALC
instruction
0xAE
0xAF
0xF9
DF = 1;
0xFD
IF = 1;
0xFB
if (DF==0) *ES:DI++ 0xAA
CF = 1;
Instruction
Opcode
= AL;
STOSW
if (DF==0) *ES:DI++
= AX; else *ES:DI-- 0xAB
= AX;
SUB
Subtraction
TEST
WAIT
XCHG
Exchange data
XLAT
XOR
Exclusive OR
r -= m/imm;
& m/imm;
r ^= m/imm;