Instrukcje procesorów 8086-Pentium
Dryobates
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 przeznaczeniaCzasy 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 V8088/8086 Wyliczanie adresu efektywnego (EA)
Opis | Liczba cykli zegara |
Przesunięcie | 6 |
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
- AAA - Ascii Adjust for Addition
- AAD - Ascii Adjust for Division
- AAM - Ascii Adjust for Multiplication
- AAS - Ascii Adjust for Subtraction
- ADC - Add With Carry
- ADD - Arithmetic Addition
- AND - Logical And
- ARPL - Adjusted Requested Privilege Level of Selector (286+ PM)
- BOUND - Array Index Bound Check (80188+)
- BSF - Bit Scan Forward (386+)
- BSR - Bit Scan Reverse (386+)
- BSWAP - Byte Swap (486+)
- BT - Bit Test (386+)
- BTC - Bit Test with Compliment (386+)
- BTR - Bit Test with Reset (386+)
- BTS - Bit Test and Set (386+)
- CALL - Procedure Call
- CBW - Convert Byte to Word
- CDQ - Convert Double to Quad (386+)
- CLC - Clear Carry
- CLD - Clear Direction Flag
- CLI - Clear Interrupt Flag (disable)
- CLTS - Clear Task Switched Flag (286+ privileged)
- CMC - Complement Carry Flag
- CMP - Compare
- CMPS - Compare String (Byte, Word or Doubleword)
- CMPXCHG - Compare and Exchange
- CWD - Convert Word to Doubleword
- CWDE - Convert Word to Extended Doubleword (386+)
- DAA - Decimal Adjust for Addition
- DAS - Decimal Adjust for Subtraction
- DEC - Decrement
- DIV - Divide
- ENTER - Make Stack Frame (80188+)
- ESC - Escape
- HLT - Halt CPU
- IDIV - Signed Integer Division
- IMUL - Signed Multiply
- IN - Input Byte or Word From Port
- INC - Increment
- INS - Input String from Port (80188+)
- INT - Interrupt
- INTO - Interrupt on Overflow
- INVD - Invalidate Cache (486+)
- INVLPG - Invalidate Translation Look-Aside Buffer Entry (486+)
- IRET/IRETD - Interrupt Return
- Jxx - Jump Instructions Table
- JCXZ/JECXZ - Jump if Register (E)CX is Zero
- JMP - Unconditional Jump
- LAHF - Load Register AH From Flags
- LAR - Load Access Rights (286+ protected)
- LDS - Load Pointer Using DS
- LEA - Load Effective Address
- LEAVE - Restore Stack for Procedure Exit (80188+)
-
-
-
-
- POP - Pop Word off Stack
- POPA/POPAD - Pop All Registers onto Stack (80188+)
- POPF/POPFD - Pop Flags off Stack
- PUSH - Push Word onto Stack
- PUSHA/PUSHAD - Push All Registers onto Stack (80188+)
- PUSHF/PUSHFD - Push Flags onto Stack
- RCL - Rotate Through Carry Left
- RCR - Rotate Through Carry Right
- REP - Repeat String Operation
- REPE/REPZ - Repeat Equal / Repeat Zero
- REPNE/REPNZ - Repeat Not Equal / Repeat Not Zero
- RET/RETF - Return From Procedure
- ROL - Rotate Left
- ROR - Rotate Right
- SAHF - Store AH Register into FLAGS
- SAL/SHL - Shift Arithmetic Left / Shift Logical Left
- SAR - Shift Arithmetic Right
- SBB - Subtract with Borrow/Carry
- SCAS - Scan String (Byte, Word or Doubleword)
- SETAE/SETNB - Set if Above or Equal / Set if Not Below (386+)
- SETB/SETNAE - Set if Below / Set if Not Above or Equal (386+)
- SETBE/SETNA - Set if Below or Equal / Set if Not Above (386+)
- SETE/SETZ - Set if Equal / Set if Zero (386+)
- SETNE/SETNZ - Set if Not Equal / Set if Not Zero (386+)
- SETL/SETNGE - Set if Less / Set if Not Greater or Equal (386+)
- SETGE/SETNL - Set if Greater or Equal / Set if Not Less (386+)
- SETLE/SETNG - Set if Less or Equal / Set if Not greater or Equal (386+)
- SETG/SETNLE - Set if Greater / Set if Not Less or Equal (386+)
- SETS - Set if Signed (386+)
- SETNS - Set if Not Signed (386+)
- SETC - Set if Carry (386+)
- SETNC - Set if Not Carry (386+)
- SETO - Set if Overflow (386+)
- SETNO - Set if Not Overflow (386+)
- SETP/SETPE - Set if Parity / Set if Parity Even (386+)
- SETNP/SETPO - Set if No Parity / Set if Parity Odd (386+)
- SGDT - Store Global Descriptor Table (286+ privileged)
- SIDT - Store Interrupt Descriptor Table (286+ privileged)
- SHL - Shift Logical Left
- SHR - Shift Logical Right
- SHLD/SHRD - Double Precision Shift (386+)
- SLDT - Store Local Descriptor Table (286+ privileged)
- SMSW - Store Machine Status Word (286+ privileged)
- STC - Set Carry
- STD - Set Direction Flag
- STI - Set Interrupt Flag (Enable Interrupts)
- STOS - Store String (Byte, Word or Doubleword)
- STR - Store Task Register (286+ privileged)
- SUB - Subtract
- TEST - Test For Bit Pattern
- VERR - Verify Read (286+ protected)
- VERW - Verify Write (286+ protected)
- WAIT/FWAIT - Event Wait
- WBINVD - Write-Back and Invalidate Cache (486+)
- XCHG - Exchange
- XLAT/XLATB - Translate
- XOR - Exclusive OR
co znaczy "privileged"? konieczny CPL==0?
Jest to ważne źródło przy pisaniu OS.
Moze byc, ale szkoda, ze nie wszystko przetlumaczone na PL. Ale z drugiej strony dobrze, ze chociaz tyle ;)
Dry brawo jednak wkręcił Ci się assembler :)))
Szkoda że ja niemam czasu na pisanie programów w asm :((( Ale moje gratulacje :))
bardzo ladny spis - pogratulowac wytrwalosci w tworzeniu