Instrukcje procesorów 8086-Pentium

Podstawowe skróty stosowane w spisie:


acc = Akumulator (AL, AX lub EAX, chyba, że dokładnie określono który)
reg = Dowolny rejestr ogólny
r8 = Dowolny 8-bitowy rejestr
r16 = Dowolny 16-bitowy rejestr ogólny
r32 = Dowolny 32-bitowy rejestr ogólny
imm = Dane natychmiastowe (stała umieszczona w instrukcji)
imm8 = 8-bitowe dane natychmiastowe
imm16 = 16-bitowe dane natychmiastowe
mem = Adres w pamięci
mem8 = Adres 8-bitowej danej
mem16 = Adres 16-bitowej danej
mem32 = Adres 32-bitowej danej
mem48 = Adres 48-bitowej danej
dest = 16/32-bitowe miejsce przeznaczenia
short = 8-bitowe miejsce przeznaczenia

Czasy wykonywania instrukcji:


n - liczba powtarzanych operacji
m - w skoku lub wywołaniu procedury:
  286 - liczba bajtów w następnej instrukcji
  386/486 - liczba komponentów: (każdy bajt kodu operacji) + 1 (jeżeli dane natychmiastowe) + 1 (jeżeli przesunięcie)

Kategorie parowalności w procesorach Pentium:


NP = nie parowalne
UV = parowalne zarówno w potoku U jak i V
PU = parowalne tylko w potoku U
PV = parowalne tylko w potoku V

8088/8086 Wyliczanie adresu efektywnego (EA)


 
OpisLiczba cykli zegara
Przesunięcie6
Rejestr bazowy (Base) lub indeksowy (Index) (BX,BP,SI,DI)5
Przesunięcie+(Baza lub Indeks) 9
Baza+Indeks (BP+DI,BX+SI)7
Baza+Indeks(BP+SI, BX+DI) 8
Baza+Indeks+Przesunięcie(BP+DI, BX+SI) 11
Baza+Indks+Przesunięcie (BP+SI+disp, BX+DI+disp) 12

 
 - dodaj 4 cykle dla słów w nieparzystych adresach
 - dodaj 2 cykle do nadpisania segmentu
 - 80188/80186 taktowanie różni się od tego z 8088/8086/80286

Instrukcje procesorów 8086-80486




     
  1. AAA - Ascii Adjust for Addition
     
  2. AAD - Ascii Adjust for Division  
     
  3. AAM - Ascii Adjust for Multiplication  
     
  4. AAS - Ascii Adjust for Subtraction  
     
  5. ADC - Add With Carry  
     
  6. ADD - Arithmetic Addition  
     
  7. AND - Logical And  
     
  8. ARPL - Adjusted Requested Privilege Level of Selector (286+ PM)
     

     
  9. BOUND - Array Index Bound Check (80188+)
     
  10. BSF - Bit Scan Forward (386+)
     
  11. BSR - Bit Scan Reverse (386+)
     
  12. BSWAP - Byte Swap (486+)
     
  13. BT - Bit Test (386+)
     
  14. BTC - Bit Test with Compliment (386+)
     
  15. BTR - Bit Test with Reset (386+)
     
  16. BTS - Bit Test and Set (386+)


     
  17. CALL - Procedure Call
     
  18. CBW - Convert Byte to Word
     
  19. CDQ - Convert Double to Quad (386+)
     
  20. CLC - Clear Carry
     
  21. CLD - Clear Direction Flag
     
  22. CLI - Clear Interrupt Flag (disable)
     
  23. CLTS - Clear Task Switched Flag (286+ privileged)
     
  24. CMC - Complement Carry Flag
     
  25. CMP - Compare
     
  26. CMPS - Compare String (Byte, Word or Doubleword)
     
  27. CMPXCHG - Compare and Exchange
     
  28. CWD - Convert Word to Doubleword
     
  29. CWDE - Convert Word to Extended Doubleword (386+)
     

     
  30. DAA - Decimal Adjust for Addition
     
  31. DAS - Decimal Adjust for Subtraction
     
  32. DEC - Decrement
     
  33. DIV - Divide


     
  34. ENTER - Make Stack Frame (80188+)
     
  35. ESC - Escape


     
  36. HLT - Halt CPU


     
  37. IDIV - Signed Integer Division
     
  38. IMUL - Signed Multiply
     
  39. IN - Input Byte or Word From Port
     
  40. INC - Increment
     
  41. INS - Input String from Port (80188+)
     
  42. INT - Interrupt
     
  43. INTO - Interrupt on Overflow
     
  44. INVD - Invalidate Cache (486+)
     
  45. INVLPG - Invalidate Translation Look-Aside Buffer Entry (486+)
     
  46. IRET/IRETD - Interrupt Return
     

     
  47. Jxx - Jump Instructions Table
     
  48. JCXZ/JECXZ - Jump if Register (E)CX is Zero
     
  49. JMP - Unconditional Jump


     
  50. LAHF - Load Register AH From Flags
     
  51. LAR - Load Access Rights (286+ protected)
     
  52. LDS - Load Pointer Using DS
     
  53. LEA - Load Effective Address
     
  54. LEAVE - Restore Stack for Procedure Exit (80188+)
     
  55. LES - Load Pointer Using ES
     
  56. LFS - Load Pointer Using FS (386+)
     
  57. LGDT - Load Global Descriptor Table (286+ privileged)
     
  58. LIDT - Load Interrupt Descriptor Table (286+ privileged)
     
  59. LGS - Load Pointer Using GS (386+)
     
  60. LLDT - Load Local Descriptor Table (286+ privileged)
     
  61. LMSW - Load Machine Status Word (286+ privileged)
     
  62. LOCK - Lock Bus
     
  63. LODS - Load String (Byte, Word or Double)
     
  64. LOOP - Decrement CX and Loop if CX Not Zero
     
  65. LOOPE/LOOPZ - Loop While Equal / Loop While Zero
     
  66. LOOPNZ/LOOPNE - Loop While Not Zero / Loop While Not Equal
     
  67. LSL - Load Segment Limit (286+ protected)
     
  68. LSS - Load Pointer Using SS (386+)
     
  69. LTR - Load Task Register (286+ privileged)


     
  70. MOV - Move Byte or Word
     
  71. MOVS - Move String (Byte or Word)
     
  72. MOVSX - Move with Sign Extend (386+)
     
  73. MOVZX - Move with Zero Extend (386+)
     
  74. MUL - Unsigned Multiply


     
  75. NEG - Two's Complement Negation
     
  76. NOP - No Operation (90h)
     
  77. NOT - One's Compliment Negation (Logical NOT)
     

     
  78. OR - Inclusive Logical OR
     
  79. OUT - Output Data to Port
     
  80. OUTS - Output String to Port (80188+)
     

     
  81. POP - Pop Word off Stack
     
  82. POPA/POPAD - Pop All Registers onto Stack (80188+)
     
  83. POPF/POPFD - Pop Flags off Stack
     
  84. PUSH - Push Word onto Stack
     
  85. PUSHA/PUSHAD - Push All Registers onto Stack (80188+)
     
  86. PUSHF/PUSHFD - Push Flags onto Stack
     

     
  87. RCL - Rotate Through Carry Left
     
  88. RCR - Rotate Through Carry Right
     
  89. REP - Repeat String Operation
     
  90. REPE/REPZ - Repeat Equal / Repeat Zero
     
  91. REPNE/REPNZ - Repeat Not Equal / Repeat Not Zero
     
  92. RET/RETF - Return From Procedure
     
  93. ROL - Rotate Left
     
  94. ROR - Rotate Right
     

     
  95. SAHF - Store AH Register into FLAGS
     
  96. SAL/SHL - Shift Arithmetic Left / Shift Logical Left
     
  97. SAR - Shift Arithmetic Right
     
  98. SBB - Subtract with Borrow/Carry
     
  99. SCAS - Scan String (Byte, Word or Doubleword)
     
  100. SETAE/SETNB - Set if Above or Equal / Set if Not Below (386+)
     
  101. SETB/SETNAE - Set if Below / Set if Not Above or Equal (386+)
     
  102. SETBE/SETNA - Set if Below or Equal / Set if Not Above (386+)
     
  103. SETE/SETZ - Set if Equal / Set if Zero (386+)
     
  104. SETNE/SETNZ - Set if Not Equal / Set if Not Zero (386+)
     
  105. SETL/SETNGE - Set if Less / Set if Not Greater or Equal (386+)
     
  106. SETGE/SETNL - Set if Greater or Equal / Set if Not Less (386+)
     
  107. SETLE/SETNG - Set if Less or Equal / Set if Not greater or Equal (386+)
     
  108. SETG/SETNLE - Set if Greater / Set if Not Less or Equal (386+)
     
  109. SETS - Set if Signed (386+)
     
  110. SETNS - Set if Not Signed (386+)
     
  111. SETC - Set if Carry (386+)
     
  112. SETNC - Set if Not Carry (386+)
     
  113. SETO - Set if Overflow (386+)
     
  114. SETNO - Set if Not Overflow (386+)
     
  115. SETP/SETPE - Set if Parity / Set if Parity Even (386+)
     
  116. SETNP/SETPO - Set if No Parity / Set if Parity Odd (386+)
     
  117. SGDT - Store Global Descriptor Table (286+ privileged)
     
  118. SIDT - Store Interrupt Descriptor Table (286+ privileged)
     
  119. SHL - Shift Logical Left
     
  120. SHR - Shift Logical Right
     
  121. SHLD/SHRD - Double Precision Shift (386+)
     
  122. SLDT - Store Local Descriptor Table (286+ privileged)
     
  123. SMSW - Store Machine Status Word (286+ privileged)
     
  124. STC - Set Carry
     
  125. STD - Set Direction Flag
     
  126. STI - Set Interrupt Flag (Enable Interrupts)
     
  127. STOS - Store String (Byte, Word or Doubleword)
     
  128. STR - Store Task Register (286+ privileged)
     
  129. SUB - Subtract


     
  130. TEST - Test For Bit Pattern


     
  131. VERR - Verify Read (286+ protected)
     
  132. VERW - Verify Write (286+ protected)


     
  133. WAIT/FWAIT - Event Wait
     
  134. WBINVD - Write-Back and Invalidate Cache (486+)


     
  135. XCHG - Exchange
     
  136. XLAT/XLATB - Translate
     
  137. XOR - Exclusive OR


Autorzy:
Dryobates
LKS
Vogel
Wirek
Informacje
Ostatnia modyfikacja 15-11-2002 22:34 Ostatni autor Dryobates
Ilość wyświetleń 20105 Wersja 1
Komentarz
eloar dnia 27-06-2008 00:37
co znaczy "privileged"? konieczny CPL==0?
TKW dnia 26-08-2004 17:08
Jest to ważne źródło przy pisaniu OS.
KKKas dnia 08-12-2002 18:54
Moze byc, ale szkoda, ze nie wszystko przetlumaczone na PL. Ale z drugiej strony dobrze, ze chociaz tyle ;)
eSka dnia 28-11-2002 10:30
Dry brawo jednak wkręcił Ci się assembler :)))
Szkoda że ja niemam czasu na pisanie programów w asm :((( Ale moje gratulacje :))
anubis dnia 19-11-2002 10:49
bardzo ladny spis - pogratulowac wytrwalosci w tworzeniu

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0412 sek. (zapytań SQL: 9)