80x86 instruction set

This document contains general informations about the Intel 8086 family architecture and complete (I hope) instruction set of this processors up to 80486. I rewrote the file intel.doc from the PC Games Programmers Encyclopedia 1.0 to a html format. You can find PCGPE at ftp://teeri.oulu.fi/pub/msdos/programming/gpe.

Discaimer
No warranty is provided nor implied with this document. Use all informations at your own risk.

Table of Contents

  1. Registers
  2. Instruction Clock Cycle Calculation
  3. Task State Calculation
  4. FLAGS - Intel 8086 Family Flags Register
  5. MSW - Machine Status Word (286+ only)
  6. AAA - Ascii Adjust for Addition
  7. AAD - Ascii Adjust for Division
  8. AAM - Ascii Adjust for Multiplication
  9. AAS - Ascii Adjust for Subtraction
  10. ADC - Add With Carry
  11. ADD - Arithmetic Addition
  12. AND - Logical And
  13. ARPL - Adjusted Requested Privilege Level of Selector (286+ PM)
  14. BOUND - Array Index Bound Check (80188+)
  15. BSF - Bit Scan Forward (386+)
  16. BSR - Bit Scan Reverse (386+)
  17. BSWAP - Byte Swap (486+)
  18. BT - Bit Test (386+)
  19. BTC - Bit Test with Compliment (386+
  20. BTR - Bit Test with Reset (386+)
  21. BTS - Bit Test and Set (386+)
  22. CALL - Procedure Call
  23. CBW - Convert Byte to Word
  24. CDQ - Convert Double to Quad (386+)
  25. CLC - Clear Carry
  26. CLD - Clear Direction Flag
  27. CLI - Clear Interrupt Flag (disable)
  28. CLTS - Clear Task Switched Flag (286+ privileged).
  29. CMC - Complement Carry Flag
  30. CMP - Compare
  31. CMPS - Compare String (Byte, Word or Doubleword)
  32. CMPXCHG - Compare and Exchange
  33. CWD - Convert Word to Doubleword
  34. CWDE - Convert Word to Extended Doubleword (386+)
  35. DAA - Decimal Adjust for Addition
  36. DAS - Decimal Adjust for Subtraction
  37. DEC - Decrement.
  38. DIV - Divide
  39. ENTER - Make Stack Frame (80188+)
  40. ESC - Escape
  41. HLT - Halt CPU
  42. IDIV - Signed Integer Division
  43. IMUL - Signed Multiply
  44. IN - Input Byte or Word From Port
  45. INC - Increment
  46. INS - Input String from Port (80188+)
  47. INT - Interrupt
  48. INTO - Interrupt on Overflow
  49. INVD - Invalidate Cache (486+)
  50. INVLPG - Invalidate Translation Look-Aside Buffer Entry (486+)
  51. IRET/IRETD - Interrupt Return.
  52. Jxx - Jump Instructions Table.
  53. JCXZ/JECXZ - Jump if Register (E)CX is Zero
  54. JMP - Unconditional Jump
  55. LAHF - Load Register AH From Flags
  56. LAR - Load Access Rights (286+ protected)
  57. LDS - Load Pointer Using DS
  58. LEA - Load Effective Address
  59. LEAVE - Restore Stack for Procedure Exit (80188+)
  60. LES - Load Pointer Using ES
  61. LFS - Load Pointer Using FS (386+)
  62. LGDT - Load Global Descriptor Table (286+ privileged)
  63. LIDT - Load Interrupt Descriptor Table (286+ privileged)
  64. LGS - Load Pointer Using GS (386+)
  65. LLDT - Load Local Descriptor Table (286+ privileged)
  66. LMSW - Load Machine Status Word (286+ privileged)
  67. LOCK - Lock Bus
  68. LODS - Load String (Byte, Word or Double)
  69. LOOP - Decrement CX and Loop if CX Not Zero
  70. LOOPE/LOOPZ - Loop While Equal / Loop While Zero
  71. LOOPNZ/LOOPNE - Loop While Not Zero / Loop While Not Equal
  72. LSL - Load Segment Limit (286+ protected)
  73. LSS - Load Pointer Using SS (386+)
  74. LTR - Load Task Register (286+ privileged)
  75. MOV - Move Byte or Word
  76. MOVS - Move String (Byte or Word)
  77. MOVSX - Move with Sign Extend (386+)
  78. MOVZX - Move with Zero Extend (386+)
  79. MUL - Unsigned Multiply
  80. NEG - Two's Complement Negation
  81. NOP - No Operation (90h)
  82. NOT - One's Compliment Negation (Logical NOT)
  83. OR - Inclusive Logical OR
  84. OUT - Output Data to Port.
  85. OUTS - Output String to Port (80188+)
  86. POP - Pop Word off Stack
  87. POPA/POPAD - Pop All Registers onto Stack (80188+)
  88. POPF/POPFD - Pop Flags off Stack
  89. PUSH - Push Word onto Stack
  90. PUSHA/PUSHAD - Push All Registers onto Stack (80188+)
  91. PUSHF/PUSHFD - Push Flags onto Stack
  92. RCL - Rotate Through Carry Left.
  93. RCR - Rotate Through Carry Right
  94. REP - Repeat String Operation
  95. REPE/REPZ - Repeat Equal / Repeat Zero
  96. REPNE/REPNZ - Repeat Not Equal / Repeat Not Zero
  97. RET/RETF - Return From Procedure
  98. ROL - Rotate Left.
  99. ROR - Rotate Right
  100. SAHF - Store AH Register into FLAGS
  101. SAL - Shift Arithmetic Left / Shift Logical Left
  102. SAR - Shift Arithmetic Right
  103. SBB - Subtract with Borrow/Carry
  104. SCAS - Scan String (Byte, Word or Doubleword)
  105. SETAE/SETNB - Set if Above or Equal / Set if Not Below (386+)
  106. SETB/SETNAE - Set if Below / Set if Not Above or Equal (386+)
  107. SETBE/SETNA - Set if Below or Equal / Set if Not Above (386+)
  108. SETE/SETZ - Set if Equal / Set if Zero (386+)
  109. SETNE/SETNZ - Set if Not Equal / Set if Not Zero (386+)
  110. SETL/SETNGE - Set if Less / Set if Not Greater or Equal (386+)
  111. SETGE/SETNL - Set if Greater or Equal / Set if Not Less (386+)
  112. SETLE/SETNG - Set if Less or Equal / Set if Not greater or Equal (386+)
  113. SETG/SETNLE - Set if Greater / Set if Not Less or Equal (386+)
  114. SETS - Set if Signed (386+)
  115. SETNS - Set if Not Signed (386+)
  116. SETC - Set if Carry (386+)
  117. SETNC - Set if Not Carry (386+)
  118. SETO - Set if Overflow (386+)
  119. SETNO - Set if Not Overflow (386+)
  120. SETP/SETPE - Set if Parity / Set if Parity Even (386+)
  121. SETNP/SETPO - Set if No Parity / Set if Parity Odd (386+)
  122. SGDT - Store Global Descriptor Table (286+ privileged)
  123. SIDT - Store Interrupt Descriptor Table (286+ privileged)
  124. SHL - Shift Logical Left
  125. SHR - Shift Logical Right
  126. SHLD/SHRD - Double Precision Shift (386+)
  127. SLDT - Store Local Descriptor Table (286+ privileged)
  128. SMSW - Store Machine Status Word (286+ privileged)
  129. STC - Set Carry
  130. STD - Set Direction Flag
  131. STI - Set Interrupt Flag (Enable Interrupts)
  132. STOS - Store String (Byte, Word or Doubleword)
  133. STR - Store Task Register (286+ privileged)
  134. SUB - Subtract
  135. TEST - Test For Bit Pattern
  136. VERR - Verify Read (286+ protected)
  137. VERW - Verify Write (286+ protected)
  138. WAIT/FWAIT - Event Wait
  139. WBINVD - Write-Back and Invalidate Cache (486+)
  140. XCHG - Exchange
  141. XLAT/XLATB - Translate
  142. XOR - Exclusive OR
  143. Leoš Literák alias Winston
    literakl@risc.upol.cz
    Planiska 1249
    Frenštát p.R. 74401
    Czech Republic