Beruflich Dokumente
Kultur Dokumente
Instruction Code
Description
8086
ARITHMETIC 76543210 76543210 76543210 76543210
ADD e Add (|ODITSZAPC| = |*---*****|)
Table 2 Instruction Set Summary RegMemory with Register to Either 000000dw mod reg rm
RegisterMemory tofrom Register 100010dw mod reg rm RegMemory with Register to Either 000100dw mod reg rm
Immediate to RegisterMemory 1100011w mod 0 0 0 rm data data if w e 1 Immediate to RegisterMemory 100000sw mod 0 1 0 rm data data if s w e 01
Immediate to Register 1 0 1 1 w reg data data if w e 1 Immediate to Accumulator 0001010w data data if w e 1
Segment Register to RegisterMemory 10001100 mod 0 reg rm AAA e ASCII Adjust for Add 00110111 (|ODITSZAPC| = |?---??*?*|)
DAA e Decimal Adjust for Add 00100111 (|ODITSZAPC| = |?---*****|)
PUSH e Push (|ODITSZAPC| = |---------|)
SUB e Subtract (|ODITSZAPC| = |*---*****|)
RegisterMemory 11111111 mod 1 1 0 rm
RegMemory and Register to Either 001010dw mod reg rm
Register 0 1 0 1 0 reg
Immediate from RegisterMemory 100000sw mod 1 0 1 rm data data if s w e 01
Segment Register 0 0 0 reg 1 1 0
Immediate from Accumulator 0010110w data data if w e 1
POP e Pop (|ODITSZAPC| = |---------|)
SBB e Subtract with Borrow: (|ODITSZAPC| = |*---*****|)
RegisterMemory 10001111 mod 0 0 0 rm
RegMemory and Register to Either 000110dw mod reg rm
Register 0 1 0 1 1 reg
Immediate from RegisterMemory 100000sw mod 0 1 1 rm data data if s w e 01
Segment Register 0 0 0 reg 1 1 1 Immediate from Accumulator 000111w data data if w e 1
Immediate Data and Accumulator 1010100w data data if w e 1 JBJNAE e Jump on BelowNot Above 01110010 disp
or Equal
JBEJNA e Jump on Below or Equal
OR e Or (|ODITSZAPC| = |*---**?**|) 01110110 disp
Not Above
RegMemory and Register to Either 000010dw mod reg rm JPJPE e Jump on ParityParity Even 01111010 disp
Immediate to RegisterMemory 1000000w mod 0 0 1 rm data data if w e 1 JO e Jump on Overflow 01110000 disp
RegMemory and Register to Either 001100dw mod reg rm JNLJGE e Jump on Not LessGreater 01111101 disp
or Equal
Immediate to RegisterMemory 1000000w mod 1 1 0 rm data data if w e 1 JNLEJG e Jump on Not Less or Equal 01111111 disp
Immediate to Accumulator 0011010w data data if w e 1 Greater
JNBJAE e Jump on Not BelowAbove 01110011 disp
or Equal
STRING MANIPULATION
JNBEJA e Jump on Not Below or 01110111 disp
REP e Repeat 1111001z (|ODITSZAPC| = |---------|) EqualAbove
JNPJPO e Jump on Not ParPar Odd 01111011 disp
MOVS e Move ByteWord 1010010w (|ODITSZAPC| = |---------|)
JNO e Jump on Not Overflow 01110001 disp
CMPS e Compare ByteWord 1010011w (|ODITSZAPC| = |*---*****|)
JNS e Jump on Not Sign 01111001 disp
SCAS e Scan ByteWord 1010111w (|ODITSZAPC| = |*---*****|)
LOOP e Loop CX Times 11100010 disp (|ODITSZAPC| = |---------|)
LODS e Load ByteWd to ALAX 1010110w (|ODITSZAPC| = |---------|)
LOOPZLOOPE e Loop While ZeroEqual 11100001 disp
STOS e Stor ByteWd from ALA 1010101w (|ODITSZAPC| = |---------|)
LOOPNZLOOPNE e Loop While Not 11100000 disp
CONTROL TRANSFER ZeroEqual
JCXZ e Jump on CX Zero 11100011 disp (|ODITSZAPC| = |---------|)
CALL e Call (|ODITSZAPC| = |---------|)
Direct within Segment 11101000 disp-low disp-high INT e Interrupt: (|ODITSZAPC| = |--00-----|)
Indirect within Segment 11111111 mod 0 1 0 rm Type Specified 11001101 type
Indirect Intersegment 11111111 mod 0 1 1 rm IRET e Interrupt Return 11001111 (|ODITSZAPC| = |*********|)
Mnemonic and
Instruction Code
Description Pin Diagram 8086 Registers
76543210 76543210
PROCESSOR CONTROL
ESC e Escape (to External Device) 11011xxx mod x x x rm (|ODITSZAPC| = |---------|)
NOTES: CF
SAR
Tabulated and Edited by Dr. Mohammed Hawa, University of Jordan.
Version 1.1, June, 2005.
Unsigned Comparisons
Instruction Description Condition Aliases Opposite
JA Jump if above (>) Carry = 0, Zero = 0 JNBE JNA
JNBE Jump if not below nor equal (not <=) Carry = 0, Zero = 0 JA JBE
JAE Jump if above or equal (>=) Carry = 0 JNC, JNB JNAE
JNB Jump if not below (not <) Carry = 0 JNC, JAE JB
JB Jump if below (<) Carry = 1 JC, JNAE JNB
JNAE Jump if not above nor equal (not >=) Carry = 1 JC, JB JAE
JBE Jump if below or equal (<=) Carry = 1 or Zero = 1 JNA JNBE
JNA Jump if not above (not >) Carry = 1 or Zero = 1 JBE JA Assembler Directives
JE Jump if equal (=) Zero = 1 JZ JNE ALIGN Align to word boundary
JNE Jump if not equal () Zero = 0 JNZ JE ASSUME sr:sy(,...) Assume segment register name(s)
ASSUME NOTHING Remove all former assumptions
DB e(,...) Define Byte(s)
DBS e Define Byte Storage
Signed Comparisons DD e(,...) Define Double Word(s)
Instruction Description Condition Aliases Opposite DDS e Define Double Word Storage
JG Jump if greater (>) Sign = Overflow or Zero = 0 JNLE JNG DW e(,...) Define Word(s)
DWS e Define Word Storage
JNLE Jump if not less than nor equal (not <=) Sign = Overflow or Zero = 0 JG JLE EXT (sr:)sy(t) External(s)(t=ABS/BYTE/DWORD/FAR/NEAR/WORD)
JGE Jump if greater than or equal (>=) Sign = Overflow JNL JGE LABEL t Label (t=BYTE/DWORD/FAR/NEAR/WORD)
JNL Jump if not less than (not <) Sign = Overflow JGE JL PROC t Procedure (t=FAR/NEAR, default NEAR)
JL Jump if less than (<) Sign Overflow JNGE JNL ABS Absolute value of operand
BYTE Byte type operation
JNGE Jump if not greater nor equal (not >=) Sign Overflow JL JGE DWORD Double Word operation
JLE Jump if less than or equal (<=) Sign Overflow or Zero = 1 JNG JNLE FAR IP and CS registers altered
JNG Jump if not greater than (not >) Sign Overflow or Zero = 1 JLE JG HIGH High-order 8 bits of 16-bit value
JE LENGTH Number of basic units
Jump if equal (=) Zero = 1 JZ JNE LOW Low-order 8 bit of 16-bit value
JNE Jump if not equal () Zero = 0 JNZ JE NEAR Only IP register need be altered
OFFSET Offset portion of an address
PTR Create a variable or label
SEG Segment of address
8086 Flags Register SHORT One byte for a JMP operation
SIZE Number of bytes defined by statement
|ODITSZAPC| Overflow Flag, Direction Flag, Interrupt Flag, Trap Flag, THIS Create a variable/label of specified type
Sign Flag, Zero Flag, Auxilary carry Flag, Parity Flag, TYPE Number of bytes in the unit defined
Carry Flag WORD Word operation