1 Rozkazy podstawowe
1.1 Rozkazy przeniesienia
MOV Przeniesienie między rejestrami
CMOVE/CMOVZ Przeniesienie pod warunkiem równy/zero
CMOVNE/CMOVNZ Przeniesienie pod warunkiem różny/nie zero
CMOVA/CMOVNBE Przeniesienie pod warunkiem większy/nie (mniejszy lub równy)
CMOVAE/CMOVNB Przeniesienie pod warunkiem większy bądź równy/nie mniejszy
CMOVB/CMOVNAE Przeniesienie pod warunkiem mniejszy/nie (większy lub równy)
CMOVBE/CMOVNA Przeniesienie pod warunkiem mniejszy lub równy/nie większy
CMOVG/CMOVNLE Przeniesienie pod warunkiem większy/nie (mniejszy lub równy)
CMOVGE/CMOVNL Przeniesienie pod warunkiem większy lub równy/nie mniejszy
CMOVL/CMOVNGE Przeniesienie pod warunkiem mniejszy/nie (większy lub równy)
CMOVLE/CMOVNG Przeniesienie pod warunkiem mniejszy/nie większy
CMOVC Przeniesienie pod warunkiem przeniesienia
CMOVNC Przeniesienie pod warunkiem braku przeniesienia
CMOVO Przeniesienie pod warunkiem przeciążenia
CMOVNO Przeniesienie pod warunkiem braku przeciążenia
CMOVS Przeniesienie pod warunkiem ujemny
CMOVNS Przeniesienie pod warunkiem nie ujemny
CMOVP/CMOVPE Przeniesienie pod warunkiem parzysty/parzysty lub równy
CMOVNP/CMOVPO Przeniesienie pod warunkiem nieparzystości/kontroli parzystości
XCHG Zamień
BSWAP Zamień ważniejsze 16 bitów rejestru ze mniej znaczącymi
XADD Zamień i dodaj
CMPXCHG Porównaj i zamień
CMPXCHG8B Porównaj i zamień 8 bitów
PUSH Dodaj na stos
POP Pobierz ze stosu
PUSHA/PUSHAD Dodaj na stos wszystkie rejestry
POPA/POPAD Pobierz ze stosu wszystkie rejestry
CWD/CDQ Zamień word na doubleword/doubleword na quadword
CBW/CWDE Zamień byte na word/word na doubleword w architekturze E
MOVSX Kopiuje i rozszerza przeniesienie
MOVZX Kopiuje i rozszerza o zero
1.2 Rozkazy matematyczne (dwójkowe)
ADD Dodaj
ADC Dodaj z przeniesieniem
SUB Odejmij
SBB Odejmij z pożyczką
IMUL Mnożenie ze znakiem
MUL Mnożenie bez znaku
IDIV Dzielenie ze znakiem
DIV Dzielenie bez znaku
INC Zwiększ o 1
DEC Zmniejsz o 1
NEG Zaneguj
CMP Porównaj
1.3 Rozkazy matematyczne (dziesiętne)
DAA Poprawia wynik (w AL) po dodaniu
DAS Poprawia wynik (w AL) po odjęciu
AAA Zmienia zawartość rejestru AL na właściwą rozpakowaną wartość dziesiętną przy dodawaniu
AAS Używane przy odejmowaniu
AAM Używane po mnożeniu (AL:=AL/10; AH=0;
AAD Używane przed dzieleniem (AH:=10*AH+AL; AL.:=AL. Mod 10)
1.4 Rozkazy logiczne
AND Operacja I + wynik w dest
OR Operacja LUB + wynik w dest
XOR Operacja XOR + wynik w dest (dobre do zerowania)
NOT Operacja negacji + wynik w dest
1.5 Rozkazy przesunięcia i obrotu
SAR Przesunięcie arytmetyczne w prawo (znak pozostaje ten sam)
SHR Przesunięcie w prawo
SAL/SHL Przesuń w lewo arytmetycznie/przesuń w lewo
SHRD Przesuń w prawo z podwójną precyzją
SHLD Przesuń w lewo z podwójną precyją
ROR Obróć w prawo (najmłodszy bit leci w miejsce najstarszego)
ROL Obróć w lewo (najstarszy bit leci w miejsce najmłodszego)
RCR Obróć w prawo z CF (najstarszy z CF; CF z najmłodszego)
RCL Obróć w lewo z CF (najmłodszy z CF; CF z najstarszego)
1.6 Rozkazy bit i bajt
BT Bit leci do CF (CF=dest[src])
BTS Bit leci do CF i jest ustawiany na 1 (CF=dest[src]; dest[src]=1)
BTR Bit leci do CF i jest ustawiany na 0 (CF=dest[src]; dest[src]=0)
BTC Zanegowany bit leci do CF (CF=not dest[src])
BSF Szuka bitu = 1 w przód (ZF=1 jeśli znajdzie; do dest nr bitu)
BSR Szuka bitu = 1 w tył (ZF=1 jeśli znajdzie; do dest nr bitu)
SETE/SETZ Set jeśli równe/zerp
SETNE/SETNZ Set jeśli różne
SETA/SETNBE Set jeśli większy/nie (mniejszy lub równy)
SETAE/SETNB/SETNC (kolejne parametry w 1.1)
SETB/SETNAE/SETC (kolejne parametry w 1.1)
SETBE/SETNA (kolejne parametry w 1.1)
SETG/SETNLE (kolejne parametry w 1.1)
SETGE/SETNL (kolejne parametry w 1.1)
SETL/SETNGE (kolejne parametry w 1.1)
SETLE/SETNG (kolejne parametry w 1.1)
SETS (kolejne parametry w 1.1)
SETNS (kolejne parametry w 1.1)
SETO (kolejne parametry w 1.1)
SETNO (kolejne parametry w 1.1)
SETPE/SETP (kolejne parametry w 1.1)
SETPO/SETNP (kolejne parametry w 1.1)
TEST Działa jak AND, ale nie zapisuje wyniku
1.7 Rozkazy skoków
JMP Skok bezwarunkowy
JE/JZ Skok jeśli równy/zero (ZF=1)
JNE/JNZ Skok jeśli różny/nie zero (ZF=0)
JA/JNBE (kolejne parametry jak w 1.1) (CF=0 i ZF=0)
JAE/JNB (kolejne parametry jak w 1.1) (CF=0)
JB/JNAE (kolejne parametry jak w 1.1) (CF=1)
JBE/JNA (kolejne parametry jak w 1.1) (CF=1 lub ZF=1)
JG/JNLE (kolejne parametry jak w 1.1) (ZF=0 i SF=OF)
JGE/JNL (kolejne parametry jak w 1.1) (SF=OF)
JL/JNGE (kolejne parametry jak w 1.1) (SF<>OF)
JLE/JNG (kolejne parametry jak w 1.1) (ZF=1 lub SF<>OF)
JC (kolejne parametry jak w 1.1) (CF=1)
JNC (kolejne parametry jak w 1.1) (CF=0)
JO (kolejne parametry jak w 1.1) (OF=1)
JNO (kolejne parametry jak w 1.1) (OF=0)
JS (kolejne parametry jak w 1.1) (SF=1)
JNS (kolejne parametry jak w 1.1) (SF=0)
JPO/JNP (kolejne parametry jak w 1.1) (PF=0)
JPE/JP (kolejne parametry jak w 1.1) (PF=1)
JCXZ/JECXZ Skok jeśli CX zero/to samo, architektura E
LOOP Pętla z licznikiem w (E)CX
LOOPZ/LOOPE Pętla wykonywana do warunku zero/równe z licznikiem
LOOPNZ/LOOPNE Pętla wykonywana do warunku nie zero/różme z licznikiem
CALL Wywołanie podprogramu
RET Powrót
IRET Powrót z przerwania
INT Przerwanie programowe
INTO Przerwanie przez przepełnienie
BOUND Sprawdza, czy indeks tablicy podany w src mieści się w przedziale wyznaczanym przez wartości typu (d)word
ENTER Przygotowuje stos do wejścia do procedury języka wys. poziomu.
LEAVE Zwalnia pamięć zarezerwowaną na stosie dla zmiennych lokalnych utworzoną przez ostatnią instrukcję ENTER
1.8 Rozkazy łańcuchów znaków
MOVS/MOVSB Przenieś string/byte string
MOVS/MOVSW Przenieś string/word string
MOVS/MOVSD Przenieś string/doubleword string
CMPS/CMPSB Porównaj string/byte string
CMPS/CMPSW Porównaj string/word string
CMPS/CMPSD Porównaj string/double string
SCAS/SCASB Szukaj w stringu/szukaj byte (w ES:[DI] z AL)
SCAS/SCASW Szukaj w stringu/szukaj word (w ES:[DI] z AX)
SCAS/SCASD Szukaj w stringu/szukaj double word (w ES:[DI] z EAX)
LODS/LODSB Ładuje byte z DS:[SI] do AL
LODS/LODSW Ładuje word z DS:[SI] do AX
LODS/LODSD Ładuje doubleword z DS:[SI] do EAX
STOS/STOSB Zapisuje byte z AL do ES:[DI]
STOS/STOSW Zapisuje word z AX do ES:[DI]
STOS/STOSD Zapisuje doubleword z EAX do ES:[DI]
REP Powtarza, póki (E)AX nie będzie równe zero
REPE/REPZ Powtarza, póki równe/zero lub licznik równy zero
REPNE/REPNZ Powtarza, póki różny/nie zero lub licznik równy zero
1.9 Rozkazy wejścia/wyjścia
IN Pobiera byte, word, doubleword z portu do AL, AX, EAX
OUT Wysyła byte, word, doubleword z AL, AX, EAX do portu
INS/INSB Pobiera string/byte z portu do AL
INS/INSW Pobiera string/word z portu do AX
INS/INSD Pobiera string/doubleword z portu do EAX
OUTS/OUTSB Wysyła string/byte do portu
OUTS/OUTSW Wysyła string/word do portu
OUTS/OUTSD Wysyła string/doubleword do portu
1.10 Rozkazy Enter/Leave
ENTER Przygotowuje stos do wejścia do procedury języka wys. poziomu.
LEAVE Zwalnia pamięć zarezerwowaną na stosie dla zmiennych lokalnych utworzoną przez ostatnią instrukcję ENTER
1.11 Rozkazy kontroli flag (E)FLAGS
STC Ustawia CF=1
CLC Ustawia CF=0
CMC Neguje CF (CF=!CF)
CLD Ustawia DF=0 (adresy rosnące)
STD Ustawia DF=1 (adresy malejące)
LAHF Ładuje FLAGS do AH
SAHF Pobiera FLAGS do AH
PUSHF/PUSHFD Ładuje EFLAGS na stos
POPF/POPFD Pobiera EFLAGS ze stosu
STI Ustawia IF=1 (włącza obsługę przerwań)
CLI Ustawia IF=0 (wyłącza obsługę przerwań)
1.12 Rozkazy rejestru segmentu danych (wskaźniki)
LDS Ładuje wskaźnik do DS (w dest przesunięcie, w DS segment)
LES Ładuje wskaźnik do ES (w dest przesunięcie, w ES segment)
LFS Ładuje wskaźnik do FS (w dest przesunięcie, w FS segment)
LGS Ładuje wskaźnik do GS (w dest przesunięcie, w GS segment)
LSS Ładuje wskaźnik do SS (w dest przesunięcie, w SS segment)
1.13 Inne rozkazy
LEA Przesyła przesunięcie z pod adresu src do rejestru doceloweg
NOP Nic nie robi
UD2 Wywołuje wyjątek wykonania nieprawidłowej instrukcji przez procesor
XLAT/XLATB Wybór z tablicy na podstawie indeksu
CPUID Identyfikacja procesora
MOVBE Przesuń po zamianie danych
2 Rozkazy koprocesora x87
2.1 Rozkazy przeniesienia
FLD Pobierz liczbę rzeczywistą z pamięci
FST Zapisz liczbę do pamięci z ST(0)
FSTP Zapisz liczbę z ST(0) w pamięci i zdejmij ze stosu
FILD Pobierz liczbę całkowitą z pamięci
FIST Zapisz ew. obciętą liczbę do pamięci z ST(0)
FISTP Zapisz ew. obciętą liczbę do pamięci z ST(0) i zdejmij ze stosu
FBLD Ładuje liczbę dziesiętną upakowaną w kodzie BCD
FBSTP Zapisuje liczbę dziesiętną upakowaną z ST(0) i usuwa ją ze stosu.
FXCH Wymienia wskazany jako parametr rejestr ze ST(0)
FCMOVE Przeniesienie pod warunkiem równy
FCMOVNE (kolejne parametry w 1.1)
FCMOVB (kolejne parametry w 1.1)
FCMOVBE (kolejne parametry w 1.1)
FCMOVNB (kolejne parametry w 1.1)
FCMOVNBE (kolejne parametry w 1.1)
FCMOVU Przeniesienie jeżeli nieuporządkowane (PF=1)
FCMOVNU Przeniesienie jeżeli uporządkowane (PF=0)
2.2 Rozkazy matematyczne
FADD Dodaje liczby zmiennoprzecinkowe
FADDP Dodaje liczby zmiennoprzecinkowe i zdejmuje ze stosu ST(0)
FIADD Ładuje liczbę całkowitą z pamięci do ST(0)
FSUB Odejmuje dwie liczby zmiennoprzecinkowe
FSUBP Odejmuje dwie liczby zm.przecinkowe i zdejmuje ze stosu ST(0)
FISUB Odejmuje liczbę całkowitą z pamięci od wartości z ST(0)
FSUBR Odejmuje odwrotnie dwie liczby zmiennoprzecinkowe
FSUBRP Odejmuje odwr. dwie liczby zm.przecinkowe i zdejmuje ze stosu
FISUBR Odejmuje wartość w ST(0) od liczby całkowitej w pamięci
FMUL Mnoży dwie liczby zmiennoprzecinkowe
FMULP Mnoży dwie liczby zmiennoprzecinkowe i zdejmuje ze stosu
FIMUL Mnoży wartość w ST(0) przez liczbę całkowitą z pamięci
FDIV Dzieli dwie liczby zmiennoprzecinkowe
FDIVP Dzieli dwie liczby zmiennoprzecinkowe i zdejmuje ze stosu
FIDIV Dzieli wartość w ST(0) przez liczbę całkowitą z pamięci
FDIVR Dzieli odwrotnie dwie liczby zmiennoprzecinkowe
FDIVRP Dzieli odwrotnie dwie liczby zm.przecinkowe i zdejmuje ze stosu
FIDIVR Dzieli liczbę całkowitą w pamięci przez wartość z rejestru ST(0)
FPREM Częściowa reszta
FPREM1 Częściowa reszta 1
FABS Wartość bezwzględna z wartości w ST(0)
FCHS Zmienia znak liczby w ST(0)
FRNDINT Zaokrągla wartość w ST(0) do liczby całkowitej
FSCALE Skaluje ST(0) przez ST(1), czyli wykonuje:
ST(0) <-- ST(0) * 2ZaokrąglijWKierunkuZera(ST(1)).
FSQRT Pierwiastek z ST(0)
FXTRACT Rozdziela cechę i mantysę
2.3 Rozkazy porównań
FCOM Porównuje wartość z ST(0) do danej liczby zmiennoprzecinkowej
FCOMP Porównuje ST(0) z liczbą zmiennoprzecinkową i zdejmuje ST(0) ze stosu
FCOMPP Porównuje ST(0) i ST(1) i zdejmuje ze stosu oba rejestry
FUCOM Nieuporządkowane porównanie ST(0) do wartości zm.przecinkowej
FUCOMP Nieuporządkowane porównanie ST(0) do wartości zmiennoprzecinkowej i zdjęcie ze stosu ST(0)
FUCOMPP Nieuporządkowane porównanie ST(0) i ST(1) i zdjęcie ze stosu obu rejestrów
FICOM Porównuje wartość w ST(0) z liczbą całkowitą
FICOMP Porównuje wartość w ST(0) z liczbą całkowitą i zdejmuje ze stosu
FCOMI Porównuje ST(0) z ST(i) i ustawia flagi
FUCOMI Nieuporządkowane porównanie ST(0) do ST(i) i ustawienie flag CPU
FCOMIP Porównuje ST(0) i ST(i), ustawia flagi i zdejmuje ze stosu ST(0)
FUCOMIP Nieuporządkowane porównanie ST(0) i ST(i), ustawienie flag CPU i zdjęcie ze stosu ST(0)
FTST Porównuje ST(0) do wartości +0.0
FXAM Sprawdza wartość w ST(0)
2.4 Rozkazy matematyki wyższej
FSIN Sinus z wartości kąta w ST(0) (wartość w radianach, nie w stopniach)
FCOS Cosinus z wartości kąta w ST(0)
FSINCOS Sinus(cosinus) z wartości kąta w ST(0) (szybsze)
FPTAN Częściowy tangens z wartości kąta w ST(0)
FPATAN Częściowy arcus tangens z wartości ST(1)/ST(0)
F2XM1 2x − 1
FYL2X y∗log2(x)
FYL2XP1 y∗log2(x+1)
2.5 Rozkazy ładujące stałe
FLD1 Ładuje +1.0
FLDZ Ładuje +0.0
FLDPI Ładuje π
FLDL2E Ładuje log2e
FLDLN2 Ładuje ln2
FLDL2T Ładuje log210
FLDLG2 Ładuje log2
2.6 Rozkazy kontroli nad FPU (koprocesorem)
FINCSTP Inkremntuje wskaźnik stosu
FDECSTP Dekremntuje wskaźnik stosu
FFREE Czyści rejestr
FINIT Inicjuje FPU
FNINIT Inicjuje FPU (bez oczekiwania)
FCLEX Zeruje znacznik wyjątków
FNCLEX Zeruje znacznik wyjątków (bez oczekiwania)
FSTCW Zapisuje słowo kontrolne (control word)
FNSTCW Zapisuje słowo kontrolne (control word) (bez oczekiwania)
FLDCW Ładuje słowo kontrolne (control word)
FSTENV Zachowuje środowisko
FNSTENV Zachowuje środowisko (bez oczekiwania)
FLDENV Ładuje środowisko
FSAVE Zachowuje stan FPU
FNSAVE Zachowuje stan FPU (bez oczekiwania)
FRSTOR Przywraca wszystkie rejestry
FSTSW Zachowuje słowo statusu (status word)
FNSTSW Zachowuje słowo statusu (status word) (bez oczekiwania)
WAIT/FWAIT Czeka gdy koprocesor jest zajęty
FNOP Nic nie robi
3 Rozkazy wspólne dla MMX i koprocesora x87
FXSAVE Zapisuje stan x87 i MMX
FXRSTOR Przywraca stan x87 i MMX
4 Rozkazy MMX™
4.1 Rozkazy przeniesienia
MOVD Przenieś doubleword
MOVQ Przenieś quadword
4.2 Rozkazy konwersji
PACKSSWB Pakuje wordy do byte ze znakiem
PACKSSDW Pakuje dwordy do word ze znakiem
PACKUSWB Pakuje wordy do byte bez znakiem
PUNPCKHBW Pobiera starsze części byte'ów
PUNPCKHWD Pobiera starsze części word'ów
PUNPCKHDQ Pobiera starsze części doubleword'ów
PUNPCKLBW Pobiera młodszee części byte'ów
PUNPCKLWD Pobiera młodsze części word'ów
PUNPCKLDQ Pobiera młodsze części doubleword'ów
4.3 Rozkazy matematyczne
PADDB Dodaje spakowane (byte)
PADDW Dodaje spakowane (word)
PADDD Dodaje spakowane (doubleword)
PADDSB Dodawanie z nasyceniem ze znakiem (byte)
PADDSW Dodawanie z nasyceniem ze znakiem (word)
PADDUSB Dodawanie z nasyceniem bez znaku (byte)
PADDUSW Dodawanie z nasyceniem bez znaku (word)
PSUBB Odejmuje spakowane (byte)
PSUBW Odejmuje spakowane (word)
PSUBD Odejmuje spakowane (doubleword)
PSUBSB Odejmowanie z nasyceniem ze znakiem (byte)
PSUBSW Odejmowanie z nasyceniem ze znakiem (word)
PSUBUSB Odejmowanie z nasyceniem bez znaku (byte)
PSUBUSW Odejmowanie z nasyceniem bez znaku (word)
PMULHW Mnożenie spakowanych słów bez znaku, zapisanie starszych 16 bitów
PMULLW Mnożenie sp. słów bez znaku, zapisanie młodszych 16 bitów
PMADDWD mnożenie i dodawanie (do młodszego dworda rejestru docelowego idzie suma iloczynów 2 najmłodszych słów ze sobą i 2 starszych (bity 16-31) słów ze sobą. Do starszego dworda - suma iloczynów 2 słów 32-47 i 2 słów 48-63)
4.4 Rozkazy porównań
PCMPEQB Sprawdza czy spakowane są równe (byte)
PCMPEQW Sprawdza czy spakowane są równe (word)
PCMPEQD Sprawdza czy spakowane są równe (doubleword)
PCMPGTB Sprawdza czy spakowane są większe (byte)
PCMPGTW Sprawdza czy spakowane są większe (word)
PCMPGTD Sprawdza czy spakowane są większe (doubleword)
4.5 Rozkazy logiczne
PAND Bitowy AND
PANDN Pierw bitowy NOT pierwszego rejestru, potem bitowy AND z drugim
POR Bitowy OR
PXOR Bitowy XOR
4.6 Rozkazy przesunięcia
PSLLW Przesunięcie spakowanych w lewo (word)
PSLLD Przesunięcie spakowanych w lewo (doubleword)
PSLLQ Przesunięcie spakowanych w lewo (quadword)
PSRLW Przesunięcie spakowanych w prawo (word)
PSRLD Przesunięcie spakowanych w prawo (doubleword)
PSRLQ Przesunięcie spakowanych w prawo (quadword)
PSRAW Przesunięcie spakowanych w prawo, arytmetycznie (word)
PSRAD Przesunięcie spakowanych w prawo, arytmetycznie (doubleword)
4.7 Rozkazy stanu rejestrów MMX
EMMS Ustawia rejestry FPU jako wolne, umożliwiając ich użycie
5 Rozkazy SSE
5.1 Rozkazy pojedyńczej precyzji dla SIMD
5.1.1 Rozkazy przeniesienia
MOVAPS przemieść ułożone (na granicy 16 bajtów) spakowane ułamki pojedynczej precyzji (4 sztuki po 32 bity)
MOVUPS przemieść nieułożone
MOVHPS Przesłanie 2 liczb zmiennoprzecinkowych pomiędzy rejestrem XMM i pamięcią. Działa na elementach 2 i 3 rejestru XMM.
MOVHLPS Przesłanie między rejestrami 64-bitów (2 liczb zm.przecinkowych) 2 i 3 -> 0 i 1
MOVLPS Przesłanie 2 liczb zmiennoprzecinkowych pomiędzy rejestrem XMM i pamięcią. Działa na elementach 0 i 1 rejestru XMM.
MOVLHPS Przesłanie między rejestrami 64-bitów (2 liczb zm.przecinkowych) 0 i 1 -> 2 i 3
MOVMSKPS Utworzenie 4-bitowej maski z najstarszych bitów każdej z liczb (tj. z bitów znaku) i zapisanie jej do rejestru ogólnego przeznaczenia
MOVSS Przesłanie jednej liczby zmiennoprzecinkowej pomiędzy rejestrem XMM, a pamięcią lub innym rejestrem
5.1.2 Rozkazy matematyczne
ADDPS Dodawanie
ADDSS Dodawanie (skalar)
SUBPS Odejmowanie
SUBSS Odejmowanie (skalar)
MULPS Mnożenie
MULSS Mnożenie (skalar)
DIVPS Dzielenie
DIVSS Dzielenie (skalar)
RCPPS Przybliżenie odwrotności (1/x)
RCPSS Przybliżenie odwrotności (1/x) (skalar)
SQRTPS Pierwiastek kwadratowy
SQRTSS Pierwiastek kwadratowy (skalar)
RSQRTPS Przybliżenie odwrotności pierwiastka kwadratowego
RSQRTSS Przybliżenie odwrotności pierwiastka kwadratowego (skalar)
MAXPS Wyznaczenie minimalnej wartości
MAXSS Wyznaczenie minimalnej wartości (skalar)
MINPS Wyznaczenie maksymalnej wartości
MINSS Wyznaczenie maksymalnej wartości (skalar)
5.1.3 Rozkazy porównań
CMPPS Porównaj wartości
CMPSS Porównaj wartości (skalar)
COMISS Porównaj wartości i ustaw EFLAG
UCOMISS Porównaj wartości i ustaw EFLAG (skalar)
5.1.4 Rozkazy logiczne
ANDPS Bitowy AND
ANDNPS Bitowy AND NOT
ORPS Bitowy OR
XORPS Bitowy XOR
5.1.5 Rozkazy mieszania i rozpakowania
SHUFPS Miesza wartości w paczce
UNPCKHPS Rozkazy ustawia na przemian 2 elementy z obu wektorów. (2 i 3)
UNPCKLPS Rozkazy ustawia na przemian 2 elementy z obu wektorów. (0 i 1)
5.1.6 Rozkazy konwersji
CVTPI2PS Zamienia: parę liczb całkowitych na parę liczb zm.przecinkowych
CVTSI2SS Zamienia: liczbę całkowitą na liczbę zmiennoprzecinkową
CVTPS2PI Zamienia: parę liczb zm.przecinkowych na parę liczb całkowitych
CVTTPS2PI Zamienia: parę liczb zm.przecinkowych na parę liczb całkowitych
CVTSS2SI Zamienia: liczbę zmiennoprzecinkową na liczbę całkowitą
CVTTSS2SI Zamienia: liczbę zmiennoprzecinkową na liczbę całkowitą
5.2 Rozkazy stanu MXCSR
LDMXCSR Ładuj rejestry MXCSR
STMXCSR Zapisz stan rejestrów MXCSR
5.3 64-bitowe rozkazy całkowitoliczbowe
PAVGB Średnia byte'ów bez znaku
PAVGW Średnia word'ów bez znaku
PEXTRW Pobranie dowolnego wektora słowa
PINSRW Wstawienie dowolnego wektora słowa
PMAXUB Wybranie byte'ów bez znaku o maksymalnej wartości
PMAXSW Wybranie word'ów ze znakiem o maksymalnej wartości
PMINUB Wybranie byte'ów bez znaku o minimalnej wartości
PMINSW Wybranie word'ów ze znakiem o minimalnej wartości
PMOVMSKB Utworzenie maski bitowej z najstarszych bitów wszystkich bajtów
PMULHUW Starsze słowo z wyniku mnożenia słów bez znaku
PSADBW Suma modułów różnicy bajtów, czyli odległość w metryce manhattan
PSHUFW Rozmieszczenie słów w wektorze
5.4 Rozkazy pamięci podręcznej
MASKMOVQ Zapis wybranych bajtów z rejestru MMX
MOVNTQ Zapis zawartości rejestru MMX
MOVNTPS Zapis zawartości rejestru SSE (XMM)
PREFETCHh Wskazówki hierarchii pamięci podręcznej (1 nabliżej, etc.)
SFENCE Wymusza synchronizację zapisów
6 Rozkazy SSE2
6.1 Rozkazy dla liczb zmiennoprzecinkowych
6.1.1 Rozkazy przeniesienia
MOVAPD Jak dla SSE, ale o podwójnej precyzji (5.1.1)
MOVUPD Jak dla SSE, ale o podwójnej precyzji (5.1.1)
MOVHPD Jak dla SSE, ale o podwójnej precyzji (5.1.1)
MOVLPD Jak dla SSE, ale o podwójnej precyzji (5.1.1)
MOVMSKPD Jak dla SSE, ale o podwójnej precyzji (5.1.1)
MOVSD Jak dla SSE, ale o podwójnej precyzji (5.1.1)
6.1.2 Rozkazy matematyczne
ADDPD Dodaje (podwójna precyzja)
ADDSD Dodaje (podwójna precyzja) (skalar)
SUBPD Odejmuje (podwójna precyzja)
SUBSD Odejmuje (podwójna precyzja) (skalar)
MULPD Mnoży (podwójna precyzja)
MULSD Mnoży (podwójna precyzja) (skalar)
DIVPD Dzieli (podwójna precyzja)
DIVSD Dzieli (podwójna precyzja) (skalar)
SQRTPD Pierwiastek z liczby (podwójna precyzja)
SQRTSD Pierwiastek z liczby (podwójna precyzja)
MAXPD Wyznaczenie maksymalnej wartości (podwójna precyzja)
MAXSD Wyznaczenie maksymalnej wartości (podwójna precyzja)
MINPD Wyznaczenie minimalnej wartości (podwójna precyzja)
MINSD Wyznaczenie minimalnej wartości (podwójna precyzja)
6.1.3 Rozkazy logiczne
ANDPD Bitowy AND (podwójna precyzja)
ANDNPD Bitowy AND NOT (podwójna precyzja)
ORPD Bitowy OR (podwójna precyzja)
XORPD Bitowy XOR (podwójna precyzja)
6.1.4 Rozkazy porównań
CMPPD Porównaj (podwójna precyzja)
CMPSD Porównaj (podwójna precyzja) (skalar)
COMISD Porównaj i ustaw EFLAG (podwójna precyzja)
UCOMISD Porównaj i ustaw EFLAG (podwójna precyzja).
6.1.5 Rozkazy mieszania i rozpakowania
SHUFPD Miesza wartości w paczce (podwójna precyzja)
UNPCKHPD (podwójna precyzja)
UNPCKLPD (podwójna precyzja)
6.1.6 Rozkazy konwersji podwójnej precyzji
CVTPD2PI Liczby zmiennoprzecinkowe na 32-bitowe liczby całkowite
CVTTPD2PI Liczby zmiennoprzecinkowe na 32-bitowe liczby całkowite
CVTPI2PD 32-bitowe liczby całkowite na liczby zmiennoprzecinkowe
CVTPD2DQ Liczby zmiennoprzecinkowe na 64-bitowe liczby całkowite
CVTTPD2DQ Liczby zmiennoprzecinkowe na 64-bitowe liczby całkowite
CVTDQ2PD 64-bitowe liczby całkowite na liczby zmiennoprzecinkowe
CVTPS2PD Z pojedynczej na podwójną precyzję
CVTPD2PS Z podwójnej na pojedynczą precyzję
CVTSS2SD Z pojedynczej na podwójną precyzję (skalar)
CVTSD2SS Z podwójnej na pojedynczą precyzję (skalar)
CVTSD2SI Liczba zmiennoprzecinkowa na 32-bitową liczbę całkowitą (skalar)
CVTTSD2SI Liczba zmiennoprzecinkowa na 32-bitową liczbę całkowitą (skalar)
CVTSI2SD 32-bitowa liczba całkowita na liczbę zmiennoprzecinkową (skalar)
6.2 Rozkazy konwersji pojedyńczej precyzji
CVTDQ2PS 64-bitowa liczba całkowita na liczbę zmiennoprzecinkową
CVTPS2DQ Liczby zmiennoprzecinkowe na 64-bitowe liczby całkowite
CVTTPS2DQ Liczby zmiennoprzecinkowe na 64-bitowe liczby całkowite
6.3 Rozkazy dla intigerów SIMD 128-bit
MOVDQA Przenosi wyrównany double quadword.
MOVDQU Przenosi nie wyrównany double quadword
MOVQ2DQ Przenosi quadword z rejestru MMX do XMM
MOVDQ2Q Przenosi quadword z rejestru XMM do MMX
PMULUDQ Mnoży doubleword bez znaku
PADDQ Dodaje quadword
PSUBQ Odejmuje quadword
PSHUFLW Miesza młodsze bity word'ów
PSHUFHW Miesza starsze bity word'ów
PSHUFD Miesza doubleword
PSLLDQ Przesuwa double quadword w lewo
PSRLDQ Przesuwa double quadword w prawo
PUNPCKHQDQ Rozpakowuje starsze bity quadword
PUNPCKLQDQ Rozpakowuje młodsze bity quadword
6.4 Rozkazy kontroli pamięci podręcznej i spójności pamięci
MFENCE Szeregowanie operacji odczytu i zapisu pamięci.
CLFLUSH Zapisuje i unieważnia wskazaną linijkę cache na wszystkich poziomach pamięci podręcznej
LFENCE Uszeregowanie operacji odczytu pamięci
MFENCE Uszeregowanie operacji odczytu i zapisu pamięci
PAUSE Jest podpowiedzią (ang. hint) dla procesora, która przyspiesza wyjście z pętli aktywnego oczekiwania
MASKMOVDQU Uaktualnienie wybranych bajtów z rejestru XMM
MOVNTPD Zapis rejestru XMM (zmiennoprzecinkowe)
MOVNTDQ Zapis rejestru XMM (całkowite)
MOVNTI Zapisanie rejestru ogólnego przeznaczenia
7 Rozkazy SSE3
7.1 Rozkazy konwersji
FISTTP Konwersja liczb zmiennoprzecinkowych do całkowitych
7.2 Rozkazy 128-bit ładowania danych
LDDQU Ładuje 128 bitów spod adresów niewyrównanych do granicy 16 bajtów
7.3 Rozkazy ADDSUB na zmiennoprzecinkowych liczbach (SIMD)
ADDSUBPS Działa na dwóch wektorach liczb zmiennoprzecinkowych pojedynczej precyzji. Wykonywane jest dodawanie elementów o nieparzystych indeksach, odejmowanie - parzystych
ADDSUBPD Rozkaz analogiczny do ADDSUBPS, działa na dwóch wektorach liczb zmiennoprzecinkowych podwójnej precyzji
7.4 Rozkazy ADDSUB (zor) na zmiennoprzecinkowych liczbach (SIMD)
HADDPS Dodaje sąsiednie elementy wektorów
HSUBPS Odejmuje sąsiednie elementy wektorów
HADDPD Dodaje do siebie sąsiednie elementy wektorów
HSUBPD Odejmuje od siebie sąsiednie elementy wektorów
7.5 Rozkazy LOAD/MOVE/DUPLICATE na qwordach
MOVSHDUP Powiela elementy o parzystych indeksach
MOVSLDUP Powiela elementy o nieparzystych indeksach
MOVDDUP Argumentem rozkazu jest liczba zmiennoprzecinkowa podwójnej precyzji, która w rejestrze XMM jest powielana
7.6 Rozkazy synchronizacji
MONITOR ustala początkowy adres zakresu pamięci , który następnie jest automatycznie monitorowany przez procesor; w przypadku wystąpienia zapisu gdziekolwiek w obserwowanym zakresie ustawiana jest wewnętrzna flaga, którą odczytuje
MWAIT powoduje wejście w zoptymalizowaną sprzętową pętlę, która jest przerywana dopiero, gdy flaga zostanie ustawiona, a więc gdy nastąpi zapis pod obserwowany adres
8 Rozkazy systemowe
LGDT Ładuje rejestr Global Descriptor Table (GDT)
SGDT Zapisuje rejestr GTD
LLDT Ładuje Local Descriptor Table Register (LDTR)
SLDT Zapisuje rejestr LDTR
LTR Ładuje aktualny rejestr task (wymaga odpowiednich uprawnień)
STR Zapisuje aktualny rejestr task
LIDT Ładuje rejestr Interrupt Descriptor Table(IDT)
SIDT Zapisuje rejestr IDT
MOV Przenosi
LMSW Ładuje Machine Status Word (MSW)
SMSW Zapisuje MSW
CLTS Zeruje znacznik Task Switched Flag w Machine Status Register
ARPL Porównuje bity RPL z dest i src. Jeżeli bity RPL z dest są mniejsze niż te z src, bity RPL są ustawiane na takie jak w src i ZF = 1. Else ZF=0
LAR Ważniejszy bajt docelowego rejestru jest nadpisywany wartością bajtu praw dostępu, a mniej ważny bajt jest zerowany w zależności od zaznaczenia w src. ZF = 1 jeżeli operacja powiedzie się
LSL Laduje segment limit zaznaczenia do rejestru dest, jeżeli zaznaczenie jest poprawne i widoczne w aktualnym poziomie uprawnień
VERR Sprawdza możliwość odczytu
VERW Sprawdza możliwość zapisu
INVD Uniemożliwia zablokowanie danych
WBINVD Ponowny zapis i unieważnienie zablokowania danych
INVLPG Instrukcja likwiduje TLP pod danym adresem
LOCK Ta instrukcja jest prefiksem, który powoduje, że CPU wstawia na szynę sygnał lock w trakcie wykonywania następnej instrukcji
HLT Zatrzymuje procesor do momentu, aż linia RESET zostawnie aktywowana lub zostanie otrzymane przerwanie (NMI lub maskowalne, ale nie zablokowane przerwanie). CPU pozostaje niewykorzystany, ale zachowuje aktualny wskaźnik CS:IP do późniejszego restartu
RSM Powrót z system management mode (SMM)
RDMSR Czytaj rejestr (zależny od modelu)
WRMSR Zapisz rejestr (zależny od modelu)
RDPMC Read performance monitoring counters
RDTSC Read time stamp counter
RDTSCP Read time stamp counter and processor ID
SYSENTER Fast System Call, transfers to a flat protected mode kernel at CPL = 0
SYSEXIT Fast System Call, transfers to a flat protected mode kernel at CPL = 3
XSAVE Save processor extended states to memory
XRSTOR Restore processor extended states from memory
XGETBV Reads the state of an extended control register
XSETBV Writes the state of an extended control register
Rozkaz |
OF |
SF |
ZF |
AF |
PF |
CF |
TF |
IF |
DF |
NT |
RF |
AAA |
— |
— |
— |
TM |
— |
M |
|
|
|
|
|
AAD |
— |
M |
M |
— |
M |
— |
|
|
|
|
|
AAM |
— |
M |
M |
— |
M |
— |
|
|
|
|
|
AAS |
— |
— |
— |
TM |
— |
M |
|
|
|
|
|
ADC |
M |
M |
M |
M |
M |
TM |
|
|
|
|
|
ADD |
M |
M |
M |
M |
M |
M |
|
|
|
|
|
AND |
0 |
M |
M |
— |
M |
0 |
|
|
|
|
|
ARPL |
|
|
M |
|
|
|
|
|
|
|
|
BOUND |
|
|
|
|
|
|
|
|
|
|
|
BSF/BSR |
— |
— |
M |
— |
— |
— |
|
|
|
|
|
BSWAP |
|
|
|
|
|
|
|
|
|
|
|
BT/BTS/BTR/BTC |
— |
— |
— |
— |
— |
M |
|
|
|
|
|
CALL |
|
|
|
|
|
|
|
|
|
|
|
CBW |
|
|
|
|
|
|
|
|
|
|
|
CLC |
|
|
|
|
|
0 |
|
|
|
|
|
CLD |
|
|
|
|
|
|
|
|
0 |
|
|
CLI |
|
|
|
|
|
|
|
0 |
|
|
|
CLTS |
|
|
|
|
|
|
|
|
|
|
|
CMC |
|
|
|
|
|
M |
|
|
|
|
|
CMOVcc |
T |
T |
T |
|
T |
T |
|
|
|
|
|
CMP |
M |
M |
M |
M |
M |
M |
|
|
|
|
|
CMPS |
M |
M |
M |
M |
M |
M |
|
|
T |
|
|
CMPXCHG |
M |
M |
M |
M |
M |
M |
|
|
|
|
|
CMPXCHG8B |
|
|
M |
|
|
|
|
|
|
|
|
COMSID |
0 |
0 |
M |
0 |
M |
M |
|
|
|
|
|
COMISS |
0 |
0 |
M |
0 |
M |
M |
|
|
|
|
|
CPUID |
|
|
|
|
|
|
|
|
|
|
|
CWD |
|
|
|
|
|
|
|
|
|
|
|
DAA |
— |
M |
M |
TM |
M |
TM |
|
|
|
|
|
DAS |
— |
M |
M |
TM |
M |
TM |
|
|
|
|
|
DEC |
M |
M |
M |
M |
M |
|
|
|
|
|
|
DIV |
— |
— |
— |
— |
— |
— |
|
|
|
|
|
ENTER |
|
|
|
|
|
|
|
|
|
|
|
ESC |
|
|
|
|
|
|
|
|
|
|
|
FCMOVcc |
|
|
T |
|
T |
T |
|
|
|
|
|
FCOMI, FCOMIP, FUCOMI, FUCOMIP |
|
|
M |
|
M |
M |
|
|
|
|
|
HLT |
|
|
|
|
|
|
|
|
|
|
|
IDIV |
— |
— |
— |
— |
— |
— |
|
|
|
|
|
IMUL |
M |
— |
— |
— |
— |
M |
|
|
|
|
|
IN |
|
|
|
|
|
|
|
|
|
|
|
INC |
M |
M |
M |
M |
M |
|
|
|
|
|
|
INS |
|
|
|
|
|
|
|
|
T |
|
|
INT |
|
|
|
|
|
|
0 |
|
|
0 |
|
INTO |
T |
|
|
|
|
|
0 |
|
|
0 |
|
INVD |
|
|
|
|
|
|
|
|
|
|
|
IIWLPG |
|
|
|
|
|
|
|
|
|
|
|
UCOMSID |
0 |
0 |
M |
0 |
M |
M |
|
|
|
|
|
UCOMISS |
0 |
0 |
M |
0 |
M |
M |
|
|
|
|
|
IRET |
R |
R |
R |
R |
R |
R |
R |
R |
R |
T |
|
Jcc |
T |
T |
T |
|
T |
T |
|
|
|
|
|
JMP |
|
|
|
|
|
|
|
|
|
|
|
LAHF |
|
|
|
|
|
|
|
|
|
|
|
LAR |
|
|
M |
|
|
|
|
|
|
|
|
LDS/LES/LSS/LFS/LGS |
|
|
|
|
|
|
|
|
|
|
|
LEA |
|
|
|
|
|
|
|
|
|
|
|
LEAVE |
|
|
|
|
|
|
|
|
|
|
|
LGDT/LIDT/LLDT/LMSW |
|
|
|
|
|
|
|
|
|
|
|
LOCK |
|
|
|
|
|
|
|
|
|
|
|
LODS |
|
|
|
|
|
|
|
|
T |
|
|
LOOP |
|
|
|
|
|
|
|
|
|
|
|
Rozkaz |
OF |
SF |
ZF |
AF |
PF |
CF |
TF |
IF |
DF |
NT |
RF |
LOOPE/LOOPNE |
|
|
T |
|
|
|
|
|
|
|
|
LSL |
|
|
M |
|
|
|
|
|
|
|
|
LT R |
|
|
|
|
|
|
|
|
|
|
|
MONITOR |
|
|
|
|
|
|
|
|
|
|
|
MWAIT |
|
|
|
|
|
|
|
|
|
|
|
MOV |
|
|
|
|
|
|
|
|
|
|
|
MOV control, debug, test |
— |
— |
— |
— |
— |
— |
|
|
|
|
|
MOVS |
|
|
|
|
|
|
|
|
T |
|
|
MOVSX/MOVZX |
|
|
|
|
|
|
|
|
|
|
|
MUL |
M |
— |
— |
— |
— |
M |
|
|
|
|
|
NEG |
M |
M |
M |
M |
M |
M |
|
|
|
|
|
NOP |
|
|
|
|
|
|
|
|
|
|
|
NOT |
|
|
|
|
|
|
|
|
|
|
|
OR |
0 |
M |
M |
— |
M |
0 |
|
|
|
|
|
OUT |
|
|
|
|
|
|
|
|
|
|
|
OUTS |
|
|
|
|
|
|
|
|
T |
|
|
POP/POPA |
|
|
|
|
|
|
|
|
|
|
|
POPF |
R |
R |
R |
R |
R |
R |
R |
R |
R |
R |
|
PUSH/PUSHA/PUSHF |
|
|
|
|
|
|
|
|
|
|
|
RCL/RCR 1 |
M |
|
|
|
|
TM |
|
|
|
|
|
RCL/RCR count |
— |
|
|
|
|
TM |
|
|
|
|
|
RDMSR |
|
|
|
|
|
|
|
|
|
|
|
RDPMC |
|
|
|
|
|
|
|
|
|
|
|
RDTSC |
|
|
|
|
|
|
|
|
|
|
|
REP/REPE/REPNE |
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
ROL/ROR 1 |
M |
|
|
|
|
M |
|
|
|
|
|
ROL/ROR count |
— |
|
|
|
|
M |
|
|
|
|
|
RSM |
M |
M |
M |
M |
M |
M |
M |
M |
M |
M |
M |
SAHF |
|
R |
R |
R |
R |
R |
|
|
|
|
|
SAL/SAR/S H L/S HR 1 |
M |
M |
M |
— |
M |
M |
|
|
|
|
|
SAL/SAR/S H L/S HR count |
— |
M |
M |
— |
M |
M |
|
|
|
|
|
SBB |
M |
M |
M |
M |
M |
TM |
|
|
|
|
|
SCAS
|
M |
M |
M |
M |
M |
M |
|
|
T |
|
|
SETcc |
T |
T |
T |
|
T |
T |
|
|
|
|
|
SGDT/SIDT/SLDT/SMSW |
|
|
|
|
|
|
|
|
|
|
|
SHLD/SHRD |
— |
M |
M |
— |
M |
M |
|
|
|
|
|
STC |
|
|
|
|
|
1 |
|
|
|
|
|
STD |
|
|
|
|
|
|
|
|
1 |
|
|
STI |
|
|
|
|
|
|
|
1 |
|
|
|
STOS |
|
|
|
|
|
|
|
|
T |
|
|
STR |
|
|
|
|
|
|
|
|
|
|
|
SUB |
M |
M |
M |
M |
M |
M |
|
|
|
|
|
TEST |
0 |
M |
M |
- |
M |
0 |
|
|
|
|
|
UD2 |
|
|
|
|
|
|
|
|
|
|
|
VERR/VERRW |
|
|
M |
|
|
|
|
|
|
|
|
WAIT |
|
|
|
|
|
|
|
|
|
|
|
WBINVD |
|
|
|
|
|
|
|
|
|
|
|
WRMSR |
|
|
|
|
|
|
|
|
|
|
|
XADD |
M |
M |
M |
M |
M |
M |
|
|
|
|
|
XCHG |
|
|
|
|
|
|
|
|
|
|
|
XLAT |
|
|
|
|
|
|
|
|
|
|
|
XOR |
0 |
M |
M |
- |
M |
0 |
|
|
|
|
|
T - Rozkaz testuje flagę.
0 - Rozkaz resetuje flagę
- - Wpływ nie zdefiniowany
M - Rozkaz modyfikuje flage
1 - Rozkaz ustawia flagę
R - przywraca poprzednią wartość flagi
(puste) - Brak wpływu