8088 Instruction Set

DATA TRANSFER

MOV
PUSH, POP
IN, OUT

XCHG
XLAT

PUSHF, POPF
LAHF, SAHF

CBW - convert byte to word
CWD - convert word to double-word

LDS - load pointer using DS
LES - load pointer using ES

LEA - load effective address

ARITHMETIC

ADD, SUB
MUL, DIV
IMUL, IDIV - integer division and multiplication
CMP
NEG

INC, DEC

ADC,SBB - using carry (or borrow)

CONVERSION

AAA - ASCII adjust for addition
AAD - ASCII adjust for division
AAM - ASCII adjust for multiplication
AAS - ASCII adjust for subtraction
DAA - decimal adjust for addition
DAS - decimal adjust for subtraction

LOGICAL

AND, OR, NOT, XOR

TEST

SAR,SAL
SHL, SHR
ROL, ROR
RCR, RCL

STRING

MOVS, LODS, STOS
CMPS
SCAS

PROGRAM CONTROL

CALL, RET
INT, IRET, INTO

JMP

JCXZ - jump when register cx is zero

JC, JNC - jumping based on carry flag
JS, JNS - jumping based on sign flag
JO, JNO - jumping based on overflow flag
JP(JPE), JNP(JPO) - jumping based on parity flag
JZ(JE), JNZ(JNE) - jumping based on zero flag

JL(JNGE) - jumps if sign flag not equal to overflow flag
JNL(JGE) - jumps if sign flag equals overflow flag

JLE(JNG) - jumps if sign flag not equal to overflow flag OR zero flag is one
JNLE(JG) - jumps if sign flag equals overflow flag OR zero flag is zero

JAE(JNB) - jumps if carry flag is zero
JB(JNAE) - jumps if carry flag is one

JA(JNBE) - jumps if carry flag and zero flag are both zero
JBE(JNA) - jumps if carry flag OR zero flag are one

LOOP, LOOPE(LOOPZ), LOOPNE(LOOPNZ)

REP, REPNE(REPNZ), REPE(REPZ)

NOP, HLT, WAIT, ESC, LOCK

FLAGS - setting and clearing

STC, CLC - carry flag      CMC - complement carry flag
STD, CLD - direction flag
STI, CLI - interupt enable flag


Homepage