The
following is a brief summary of the 8086 instruction set:
- Data copy/transfer Instructions
These
type of instruction are used to transfer data from source operand to
destination operand. All the store, move, load, exchange, input and
output instructions belong to this category.
a)
Memory/Register Transfers
LDS Load
pointer using data segment
LES Load
pointer using extra segment
MOV Move
byte or word to register or memory
XCHG Exchange
byte or word
XLAT Translate
byte using look-up table
b)
Stack Transfers
PUSH Push
data onto stack
PUSHF Push
flags onto stack
POP Pop
data onto stack
POPF Pop
flags off stack
c)
AH/Flags Transfers
LAHF Load
AH from flags
SAHF Store
AH into flags
d)
Address Transfer
LEA Load
effective address
- Arithmetic & Logical Instructions
All
the instruction performing arithmetic, logical,
increment,
decrement, compare and scan instructions belong to this category.
a)
Addition
ADD Add
byte or word
AAA ASCII
adjust for addition
INC Increment
byte or word
b)
Subtraction
SUB Subtract
byte or word
AAS ASCII
adjust for subtraction
DEC Decrement
byte or word
c)
Multiplication
MUL Multiply
byte or word (unsigned)
IMUL Integer
multiply byte or word (signed)
AAM ASCII
adjust for multiplication
d)
Division
DIV Divide
byte or word (unsigned)
IDIV Integer
divide byte or word (signed)
AAD ASCII
adjust for division
e)
Conversion
CBW Convert
byte to word
CWB Convert
word to byte
f)
Logical
AND Logical AND of byte or word
OR Logical
OR of byte or word
NOT Logical
NOT of byte or word (one's complement)
XOR Boolean
exclusive OR
TEST Test
byte or word (AND without storing)
- Branch Instructions
These
instructions transfer control of execution to the specified address.
All
the call, jump, interrupt and return instruction belong to this
class.
a)
Unconditional Transfers
CALL Call
for procedure
RET
Return from procedure
JMP Unconditional
jump
INT Software
interrupt
IRET Return
from interrupt
b)
Conditional Transfers
JA
(JNBE) Jump if above (not below or equal)
JAE
(JNB) Jump if above or equal (not below)
JB
(JNAE) Jump if below (not above or equal)
JBE
(JNA) Jump if below or equal (not above)
JE
(JZ) Jump if equal (zero)
JG
(JNLE) Jump if greater (not less or equal)
JGE
(JNL) Jump if greater or equal (not less)
JL
(JNGE) Jump if less (not greater nor equal)
JLE
(JNG) Jump if less or equal (not greater)
JCXZ
Jump if CX equals zero
- Loop Instructions
If
these instructions have REP prefix with CX used as count register,
they can be used to implement unconditional and coditional loops. The
LOOP, LOOPNZ and LOOPZ instructions belong to this category.
LOOP
Loop unconditional, count in CX
LOOPE
Loop if equal (zero), count in CX
LOOPNE Loop
if not equal (not zero), count in CX
- Machine Control Instructions
These
instructions control the machine status. NOP, HLT, WAIT and LOCK
instructions belong to this class.
HLT
Halt processor
LOCK
Lock bus during next instruction
NOP
No operation (do nothing)
WAIT Wait for signal on TEST
input
ESC Escape to external
processor interface
- Flag Manipulation Instructions
All
the instructions which directly affect the flag register, come under
this group of instruction. Instructions like CLD, STD, CLI, STI, etc.
belong to this category of instructions.
CLC
Clear Carry Flag
CMC
Compliment Carry Flag
STC
Set Carry Flag
CLD
Clear Direction Flag
STD
Set Direction Flag
CLI
Clear Interrupt Enable Flag
STI
Set Interrupt Enable Flag
- Shift & Rotate Instructions
These
instructions involve the bitwise shifting or rotation in either
direction with or without a count in CX.
SAL Arithmetic shift left byte
or word by 1 or CL
SAR Arithmetic
shift right byte or word by 1 or CL
SHL Logical
shift left byte or word by 1 or CL
SHR Logical
shift right byte or word by 1 or CL
RCL Rotate
left through carry byte or word by 1 or CL
RCR Rotate
right through carry byte or word by 1 or CL
ROL Rotate
left byte or word by 1 or CL
ROR Rotate
right byte or word by 1 or CL
- String Instructions
These
instructions involve various string manipulation operations like
load, move, scan, compare, store, etc. These instructions are only to
be operate upon the strings.
CMPSB Compare
string of bytes
CMPSW Compare
string of words
LODSB
Load string of bytes
LODSW
Load string of words
MOVSB
Move string of bytes
MOVSW
Move string of words
SCASB
Scan string of bytes
SCASW
Scan string of words
STOSB
Store string of bytes
STOSW
Store string of words
0 comments:
Post a Comment