A.D.Danilecki, Poznan, Polska
Politechnika Poznanska, Wydzial Informatyki i Zarzadzania
W tej chwili adanilecki _malpa_ cs.put.poznan.pl
Z wykorzystaniem wielu listow z uwagami od wielu autorow
Krótki wstęp do programowania z wykorzystaniem inline assemblera x86



PACKSSDW

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
packssdw mmxreg,r/m64


Opis: Tworzy 128-bitowe słowo poprzez przyłączenie operandu (źródło) z lewej strony operandu (przeznaczenie). Dzieli następnie uzyskane słowo na cztery podwójne słowa, każde z z nich konwertuje do słowa i ładuje do rejestru przeznaczenie. Jeśli liczba jest za duża by się zmieściła w rejestrze, zamiast niej ładuje się największą liczbę z znakiem która się zmieści (signed saturation - nasycanie z znakiem).
Patrz też : PACKSSWB , PACKUSWB
Kategoria: Instrukcje MMX

PACKSSWB

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
packsswb mmxreg,r/m64


Opis: Tworzy 128-bitowe słowo poprzez przyłączenie operandu (źródło) z lewej strony operandu (przeznaczenie). Dzieli następnie uzyskane słowo na osiem słów, każde z z nich konwertuje do bajtu i ładuje do rejestru przeznaczenie. Jeśli liczba jest za duża by się zmieściła w rejestrze, zamiast niej ładuje się największą liczbę z znakiem która się zmieści (signed saturation - nasycanie z znakiem).
Patrz też : PACKSSDW , PACKUSWB
Kategoria: Instrukcje MMX

PACKUSWB

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
packuswb mmxreg,r/m64


Opis: Tworzy 128-bitowe słowo poprzez przyłączenie operandu (źródło) z lewej strony operandu (przeznaczenie). Dzieli następnie uzyskane słowo na osiem słów, każde z z nich konwertuje do bajtu i ładuje do rejestru przeznaczenie. Jeśli liczba jest za duża by się zmieściła w rejestrze, zamiast niej ładuje się największą liczbę bez znakiem która się zmieści (unsigned saturation - nasycanie bez znakiem).
Patrz też : PACKSSDW , PACKSSWB
Kategoria: Instrukcje MMX

PADDSIW

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
paddsiw mmxreg,r/m64


Opis: Działa podobnie jak PADDSW , z tym że wynik ląduje w rejestrze, którego numer różni się od operandu przeznaczenie tylko o jeden bit - czyli jeśli operandami będzie mm0, mm2 wynik wyląduje w mm1, mm1 i mm2 - wynik wyląduje w mm0
Patrz też : PADDxx , PSUBSIW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PADDxx

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda sprawdzona
Składnia:
paddxx r/m64,mmxreg
paddxx mmxreg,mmxreg

gdzie xx jest jednym z : b,w,d,sb,sw,usb,usw
Opis: Dodaje dwie 64-bitowe liczby, wynik przechowując w drugim operandzie. Przy czym : przyrostek b określa że liczby te mają byc traktowane jako wektor ośmiu bajtów, z których każdy jest dodawany oddzielnie, w, że mają być traktowane jako wektor 4 słów, z których każdy ma być dodany oddzielnie, i d wreszcie powoduje że każdy operand traktowany jest jako wektor dwóch podwójnych słów, które każde oczywiście dodawane jest oddzielnie. Przyrostek s oznacza że dokonuje się zaokrąglenia, tzn jeśli wynik jest za duży, to jest obcinany do największej możliwej liczby, traktując wynik jako liczbę ze znakiem. Przyrostek us oznacza to samo, ale traktuje wynik jako liczbę bez znaku.
Przykład : Patrz przykład używania instrukcji paddusb w rozdziale "Wykorzystanie instrukcji charakterytycznych dla MMX i Pentium .
Patrz też : ADD , PSUBxx
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PAND

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pand r/m64,mmxreg
pand mmxreg,mmxreg
pand mmxreg,r/m64
Opis: Dokonuje boolowskiego mnożenia obu operandów wynik pozostawiając w drugim operandzie, tj. bit wyniku jest równy 1 tylko wtedy gdy bity obu operandów na tej samej pozycji były równe 1. Patrz też : AND , PANDN
Kategoria: Instrukcje logiczne , Instrukcje MMX

PANDN

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pand r/m64,mmxreg
pand mmxreg,mmxreg
pand mmxreg,r/m64
Opis: Najpierw dokunuje dopełnienie do dwóch drugiego operandu, a następnie dokonuje boolowskiego mnożenia obu operandów wynik pozostawiając w drugim operandzie, tj. bit wyniku jest równy 1 tylko wtedy gdy bity obu operandów na tej samej pozycji były równe 1. Dopełnienie do dwóch : czyli po prostu operacja NOT. Zero zmienia na 1, a jedynkę na zero
Patrz też : AND , PAND
Kategoria: Instrukcje logiczne , Instrukcje MMX

PAVEB

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
paveb mmxreg,r/m64


Opis: Traktuje operandy jako wektory osmiu bajtów bez znaku, oblicza wartości średnie odpowiadających sobie bajtów i wynik - wektor ośmiu bajtów - umieszcza w operandzie przeznaczenie.
Patrz też :
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PCMP

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pcmpxx r/m64,mmxreg
pcmpxx mmxreg,mmxreg
pcmpxx mmxreg,r/m64
Gdzie xx jest jednym z przyrostków : eqb, eqd, eqw, gtb, gtd, gtw
Opis: Porównuje oba operandy, wynik pozostawiając w drugim. Jeżeli przyrostek zawiera 'b', to oba operandy traktuje się jako wektor ośmiu bajtów, jeśli przyrostek zawiera 'd' to oba operandy traktuje się jako wektor dwóch podwójnych słów, jeśli przyrostek zawiera 'w' to operandy traktuje się jako wektor czterech słów.
Jeśli przyrostek zawiera 'eq' to jeżeli dwa odpowiadające sobie części operandów są równe, to odpowiednią część drugiego operandu ustawia się na same jedynki, w przeciwnym razie na same zera. Jeżeli przyrostek zawiera 'gt' to jeśli część drugiego operandu jest większa od odpowiadającej jej części pierwszego operandu, to część ta jest ustawiana na same jedynki, w przeciwnym razie na same sera.
Patrz też : CMP
Kategoria: Instrukcje logiczne , Instrukcje MMX

PDISTIB

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pdistib mmxreg,m64


Opis: Traktuje dwa operandy jako wektory ośmiu bajtów bez znaku. Oblicza absolutną różnicę między odpowiadającymi sobie bajtami i dodaje tą wartość do odpowiadającego (na tej samej pozycji bajtu) rejestru wynikowego. Rejestr wynikowy oznacza rejestrm którego numer różni się od operandów tylko o jeden bit - czyli jeśli operandami będzie mm0, mm2 wynik wyląduje w mm1, mm1 i mm2 - wynik wyląduje w mm0. Nie pytaj jak to jest możliwe skoro drugim operandem nie może być rejestr. Nie mam Cyrixa więc nie mogłem tego sprawdzić.
Wynik jest nasycany bez znaku (tzn jeśli jest za duży obcinany jest do największej liczby bez znaku która się zmieści).
Patrz też : PADDxx
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMADDWD

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmaddwd r/m64,mmxreg
pmaddwd mmxreg,mmxreg
pmaddwd mmxreg,r/m64
Opis: Instrukcja ta traktuje operandy jako wektrory składające się z czterech słów ze znakiem, mnoży odpowiadające sobie słowa przez siebie, otrzymując cztery podwójne słowa wyniku, górne dwa podwójne słowa są dodane i zajmują górne 32 bity drugiego operandu, i tak samo dolne podwójne słowa są dodane i zajmują dolne 32 bity drugiego operandu.
Patrz też : ADD , PADD , PMULLW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMACHRIW

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmagw mmxreg,r/m64


Opis: Traktuje operandy jako wektory czterech słów z znakiem. Słowa na odpowiadających sobie pozycjach są mnożone przez siebie. W otrzymanym 32-bitowym słowie bity 31 i 30 są na pewno identyczne. Bity od 15 do 30 (maska bitowa 0x7fff8000) są ekstrahowane po dodania 0x4000, i traktowane jako cztery spakowane słowa które są dodane do rejestru wynikowego. Rejestr wynikowy oznacza rejestr którego numer różni się od operandu przeznaczenie tylko o jeden bit - czyli jeśli operandami będzie mm0, mm2 wynik wyląduje w mm1, mm1 i mm2 - wynik wyląduje w mm0. Drugim operandem nie może być rejestr. Nie mam Cyrixa więc nie mogłem tego sprawdzić.
Patrz też : PMULHRW , PMULHRIW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMAGW

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmagw mmxreg,r/m64


Opis: Traktuje operandy jako wektory czterech słów z znakiem, porównuje absolutne wartości słów na odpowiadających sobie pozycjach i słowo o większej wartości absolutnej umieszcza w operandzie przeznaczenie na odpowiedniej pozycji.
Patrz też :
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMULLW

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmullw r/m64,mmxreg
pmullw mmxreg,mmxreg
pmullw mmxreg,r/m64
Opis: Instrukcja ta traktuje operandy jako wektrory składające się z czterech słów ze znakiem, mnoży odpowiadające sobie elementy przez siebie. Otrzymuje cztery podwójne słowa w wyniku. Następnie każde dolne 16 bitów wyniku składuje w drugim operandzie.
Patrz też : PADD , PMULHW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMULHRIW

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmulhriw mmxreg,r/m64


Opis: Traktuje operandy jako wektory czterech słów z znakiem. Słowa na odpowiadających sobie pozycjach są mnożone przez siebie. W otrzymanym 32-bitowym słowie bity 31 i 30 są na pewno identyczne. Bity od 15 do 30 są umieszczane na odpowiednich pozycjach rejestru wynikowego, po dodania 0x4000 przed wyekstrahowaniem bitów 15-30 (maska bitowa 0x7fff8000). Rejestr wynikowy oznacza rejestr którego numer różni się od operandu przeznaczenie tylko o jeden bit - czyli jeśli operandami będzie mm0, mm2 wynik wyląduje w mm1, mm1 i mm2 - wynik wyląduje w mm0. Drugim operandem nie może być rejestr. Nie mam Cyrixa więc nie mogłem tego sprawdzić.
Patrz też : PMULHRW , PMACHRIW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMULHRW

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmulhriw mmxreg,r/m64


Opis: Traktuje operandy jako wektory czterech słów z znakiem. Słowa na odpowiadających sobie pozycjach są mnożone przez siebie. W otrzymanym 32-bitowym słowie bity 31 i 30 są na pewno identyczne. Bity od 15 do 30 są umieszczane na odpowiednich pozycjach rejestru wynikowego, po dodania 0x4000 przed wyekstrahowaniem bitów 15-30 (maska bitowa 0x7fff8000). Rejestr wynikowy oznacza operand przeznaczenie.
Patrz też : PMACHRIW , PMULHRIW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMULHW

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmulhw r/m64,mmxreg
pmulhw mmxreg,mmxreg
pmulhw mmxreg,r/m64
Opis: Instrukcja ta traktuje operandy jako wektrory składające się z czterech słów ze znakiem, mnoży odpowiadające sobie elementy przez siebie. Otrzymuje cztery podwójne słowa w wyniku. Następnie każde górne 16 bitów wyniku składuje w drugim operandzie.
Patrz też : PADD , PMULHW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PMVccZB

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pmvcczb mmxreg,r/m64

gdzie cc oznacza brak wrostka lub n,l,ge.
Opis: Wykonuje osiem równolegle wykonanych instrukcji mov. Rejestry są traktowane jako wektory ośmiu bajtów. Do rejestru przeznaczenie przepisywany jest odpowiedni bajt z rejestru źródło o ile odpowiadający bajt rejestru warunkowego spełnia pewien warunek. W przypadku PMVZB gdy odpowiednie bajty są równe zero, PMVNZB gdy są różne zero, PMVLZB mniejsze niż zero i PMVGEZB większe lub równe zero. Rejestr warunkowy określany jest jako ten, którego numer różni się od rejestru przeznaczenie o jeden bit (mm0 - to mm1 itd)
Patrz też : CMOV
Kategoria: Instrukcje MMX

POP

Dostępna: od 386
Liczba Mikrokodów: 2 % complex (patrz składnia)
komenda sprawdzona
Składnia:
pop r16/32 : 2
pop esp : 3
pop m/es/fs/gs/ds/ss : complex
Opis: Zdejmuje argument ze stosu, gdzie położyliśmy go za pomocą instrukcji PUSH . Jeden program może mieć kilka stosów, bieżący stos wskazywany jest przez rejestr %ss, i można tam załadować nowy adres i potem przełączać między nimi. Instrukcja zwiększa %esp o 4, przy czym dwa górne bajty są odrzucane. Jeżeli przeznaczeniem jest jeden z %es/%fs/%ds/%gs/%ss , to musi to być prawidłowy selektor segmentu.
Przykład : push $2 \n pop %eax %eax równa się 2
Patrz też : POPAx , POPFx , PUSH
Kategoria: Instrukcje manipulujące danymi

POPAx

Dostępna: 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
popa
popaw
popal
Opis: Zdejmuje słowa ze stosu, gdzie położyliśmy je za pomocą instrukcji PUSHAW . Zdejmuje słowa ze stosu po kolei do: di, si, bp, nigdzie (czyli wartość sp odłożona na stos ginie), bx, dx, cx, ax. POPAL postępuje tak samo, ale zdejmuje podwójne słowa do rejestrów 32-bitowych. POPA jest aliasem dla POPAL. Patrz też : PUSHAx , POP , POPFx
Kategoria: Instrukcje manipulujące danymi

POPFx

Dostępna: 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
popf
popfw
popfl
Opis: POPAW Zdejmuje słowo ze stosu do dolnych 16 bitów rejestru flag . POPAL postępuje tak samo, ale zdejmuje podwójne słowa do całego rejestru POPF jest aliasem dla POPFL Patrz też : PUSHFx , POP , POPAx
Kategoria: Instrukcje manipulujące danymi

POR

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
por r/m64,mmxreg
por mmxreg,mmxreg
por mmxreg,r/m64
Opis: Dokonuje boolowskiego dodawania obu operandów wynik pozostawiając w drugim operandzie, tj. bit wyniku jest równy 1 wtedy gdy chociaż jeden z bitów któregoś z obu operandów na tej samej pozycji był równy 1.
Patrz też : OR , PXOR
Kategoria: Instrukcje logiczne , Instrukcje MMX

PSLLX

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
psllx mmxreg,r/m64
psllx mmxreg,imm8
gdzie x oznacza w, d lub q
Opis: Dokonuje logicznego przesunięcia rejestru w lewo; przesuwany jest operand źródło o liczbę bitów określonych operandem przeznaczenie. Przyrostek q oznacza przesunięcie całego rejestru. Przyrostek d powoduje że źródło traktowane jest wektor dwóch p[odwójnych słów, z których każde jest przesuwane oddzielnie, tak że bity z jednego podwójnego słowa przesuwane poza jego koniec nie mają wpływu na inne słowa. Przyrostek w powoduje że źródło traktowane jest jak wektor czterech słów z których każde jest przesuwane oddzielnie. Mniej znaczące bity bity są wypełniane zerami.
Patrz też : PSLRx, PSRAx , SHL
Kategoria: Instrukcje operujące na liczbach całkowitych , Instrukcje logiczne , Instrukcje MMX

PSRLX

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
psrlx mmxreg,r/m64
psrlx mmxreg,imm8
gdzie x oznacza w, d lub q
Opis: Dokonuje logicznego przesunięcia rejestru w prawo; przesuwany jest operand źródło o liczbę bitów określonych operandem przeznaczenie. Przyrostek q oznacza przesunięcie całego rejestru. Przyrostek d powoduje że źródło traktowane jest wektor dwóch p[odwójnych słów, z których każde jest przesuwane oddzielnie, tak że bity z jednego podwójnego słowa przesuwane poza jego koniec nie mają wpływu na inne słowa. Przyrostek w powoduje że źródło traktowane jest jak wektor czterech słów z których każde jest przesuwane oddzielnie. Bardziej znaczące bity bity są wypełniane zerami.
Patrz też : PSLLx, PSRAx , SHR
Kategoria: Instrukcje operujące na liczbach całkowitych , Instrukcje logiczne , Instrukcje MMX

PSRAX

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
psrlx mmxreg,r/m64
psrlx mmxreg,imm8
gdzie x oznacza w, d lub q
Opis: Dokonuje arytmetycznego przesunięcia rejestru w prawo; przesuwany jest operand źródło o liczbę bitów określonych operandem przeznaczenie. Przyrostek q oznacza przesunięcie całego rejestru. Przyrostek d powoduje że źródło traktowane jest wektor dwóch p[odwójnych słów, z których każde jest przesuwane oddzielnie, tak że bity z jednego podwójnego słowa przesuwane poza jego koniec nie mają wpływu na inne słowa. Przyrostek w powoduje że źródło traktowane jest jak wektor czterech słów z których każde jest przesuwane oddzielnie. Bardziej znaczące bity bity są wypełniane bitami znaku (oryginalnego najbardziej znaczącego bitu).
Patrz też : PSLLx, PSRAx , SHR
Kategoria: Instrukcje operujące na liczbach całkowitych , Instrukcje logiczne , Instrukcje MMX

PSUBxx

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
psubxx r/m64,mmxreg
psubxx mmxreg,mmxreg

gdzie xx jest jednym z : b,w,d,sb,sw,usb,usw
Opis: Odejmuje dwie 64-bitowe liczby, wynik przechowując w drugim operandzie. Przy czym : przyrostek b określa że liczby te mają byc traktowane jako wektor ośmiu bajtów, z których każda para jest odejmowana oddzielnie, w, że mają być traktowane jako wektor 4 słów, z których każdy ma być odjęty oddzielnie, i d wreszcie powoduje że każdy operand traktowany jest jako wektor dwóch podwójnych słów, które każde oczywiście odejmowane jest oddzielnie. Przyrostek s oznacza że dokonuje się zaokrąglenia, tzn jeśli wynik jest za duży, to jest obcinany do największej możliwej liczby, traktując wynik jako liczbę ze znakiem. Przyrostek us oznacza to samo, ale traktuje wynik jako liczbę bez znaku.
Przykład : Patrz przykład używania instrukcji paddusb w rozdziale "Wykorzystanie instrukcji charakterytycznych dla MMX i Pentium .
Patrz też : ADD , PADDxx
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PSUBSIW

Dostępna: od MMX (cyrix)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
psubsiw mmxreg,r/m64


Opis: Działa podobnie jak PSUBSW , z tym że wynik ląduje w rejestrze, którego numer różni się od operandu przeznaczenie tylko o jeden bit - czyli jeśli operandami będzie mm0, mm2 wynik wyląduje w mm1, mm1 i mm2 - wynik wyląduje w mm0
Patrz też : PSUBxx , PADDSIW
Kategoria: Instrukcje arytmetyczne , Instrukcje MMX

PUNPCKxx

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
punpckx mmxreg,r/m64
gdzie x jest jednym z sześciu przyrostków: hbw, hwd, hdq, lbw, lwd, ldq.

Opis: Wszystkie instrukcje PUNPCKxx traktują swoje operandy jako wektory i produkują nowe wektory poprzez przeplatanie wektorów wejściowych. PUNPCKHxx odrzucają najpierw dolną połowę każdego z operandów wejściowych, a PUNPCKLxx górną połowę. Pozostałe 64 bity są przeplatane tak, że najbardziej lewy element (bajt, słowo lub podwójne słowo) pochodzi z źródła, a najbardziej prawy z przeznaczenia. Elementami są : dla przyrostka wb bajty, dla przyrostka wd słowa a dla przyrostka dq podwójne słowa.
Jeśli operand przeznaczenie zawiera 0x7A6A5A4A3A2A1A0A a operand przeznaczenie 0x7B6B5B4B3B2B1B0B, to w efekcie
otrzymujemy:
dla PUNPCKHBW 0x7B7A6B6A5B5A4B4A.
dla PUNPCKHWD 0x7B6B7A6A5B4B5A4A.
dla PUNPCKHDQ 0x7B6B5B4B7A6A5A4A.
dla PUNPCKLBW 0x3B3A2B2A1B1A0B0A.
dla PUNPCKLWD 0x3B2B3A2A1B0B1A0A.
dla PUNPCKLDQ 0x3B2B1B0B3A2A1A0A.


Patrz też : PACKSSWB
Kategoria: Instrukcje MMX

PUSH

Dostępna: od 386
Liczba Mikrokodów: 2 % complex (patrz składnia)
komenda sprawdzona
Składnia:
push r16/32 : 2
push esp : 3
push m/es/fs/gs/ds/ss : complex
Opis: Kładzie argument na stos, skąd można go potem zdjąć za pomocą instrukcji POP . Jeden program może mieć kilka stosów, bieżący stos wskazywany jest przez rejestr %ss, i można tam załadować nowy adres i potem przełączać między nimi. Instrukcja zwiększa %esp o 4, przy czym dwa górne bajty są odrzucane.
Przykład : push $2 \n pop %eax %eax równa się 2
Patrz też : POP
Kategoria: Instrukcje manipulujące danymi

PUSHAx

Dostępna: 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pusha
pushw
pushl
Opis: Kładzie na stos, skąd potem można je zdjąć za pomocą instrukcji POPAW , następujące słowa na stosu po kolei: ax,cx,dx,bx,sp,bp,si,di. Zmniejsza wskaźnik stosu o 16. PUSHAL postępuje tak samo, ale zdejmuje podwójne słowa do rejestrów 32-bitowych i zmniejsza wskaźnik stosu o 32. PUSHA jest aliasem dla PUSHAL. Patrz też : PUSHFx , PUSH , POPAx
Kategoria: Instrukcje manipulujące danymi

PUSHFx

Dostępna: 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pushf
pushfw
pushfl
Opis: PUSHFW kładzie na stos dolne 16 bitów rejestru flag . PUSHFL postępuje tak samo, ale kładzie na stos cały rejestr PUSHF jest aliasem dla PUSHFL Patrz też : PUSHAx , PUSH , POPFx
Kategoria: Instrukcje manipulujące danymi

PXOR

Dostępna: od MMX
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
pxor r/m64,mmxreg
pxor mmxreg,mmxreg
pxor mmxreg,r/m64
Opis: Dokonuje boolowskiego dodawania modulo 2 obu operandów wynik pozostawiając w drugim operandzie, tj. bit wyniku jest równy 1 wtedy gdy tylko jeden z bitów któregoś z obu operandów na tej samej pozycji był równy 1. (Dodawanie z dopełnieniem do dwóch, dodaje jedynkę)
Patrz też : XOR , POR
Kategoria: Instrukcje logiczne , Instrukcje MMX

RCL

Dostępna: od 386
Liczba Mikrokodów: 2 % complex
komenda niesprawdzona
Składnia:
RCL 1,m16/32 : 4
RCL CL,m16/32 : complex
RCL imm8,m16/32 : complex
RCL 1,m8 : 4
RCL CL,m8 : complex
RCL imm8,m8 : complex
RCL 1,rm16/32 : 2
RCL CL,rm16/32 : complex
RCL imm8,rm16/32 : complex
RCL 1,rm8 : 2
RCL CL,rm8 : complex
RCL imm8, rm8 : complex
Opis: Przesuwa cyklicznie w lewo o zadaną liczbę bitów, korzystając z znacznika CF. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najstarsze bity trafiają do CF, a wartość CF trafia do najmłodszego bitu za każdym cyklem. Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany.

Patrz też: SAR , SHLD , SHRD , SHL , SHR , RCR , ROL , RCR
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

RCR

Dostępna: od 386
Liczba Mikrokodów: 2 % complex
komenda niesprawdzona
Składnia:
RCR 1,m16/32 : 4
RCR CL,m16/32 : complex
RCR imm8,m16/32 : complex
RCR 1,m8 : 4
RCR CL,m8 : complex
RCR imm8,m8 : complex
RCR 1,rm16/32 : 2
RCR CL,rm16/32 : complex
RCR imm8,rm16/32 : complex
RCR 1,rm8 : 2
RCR CL,rm8 : complex
RCR imm8, rm8 : complex
Opis: Przesuwa cyklicznie w prawo zadaną liczbę bitów, korzystając z znacznika CF. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najmłodsze bity trafiają do CF, a wartość CF trafia do najstarszego bitu za każdym cyklem. Jeżeli znak liczby podczas operacji zmieni się (zmieni się najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany.

Patrz też: SAR , RCL , ROL , RCR
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

RDMSR

Dostępna: pentium
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
rdmsr

Opis: Wczytuje zawartość rejestru specyficznego dla modelu (model specific register) którego indeks jest przechowywany w %ecx do pary rejestrów %edx:%eax.
Patrz też : WRMSR RDPMC , RDTSC ,
Kategoria: Inne instrukcje

RDPMC

Dostępna: pentium
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
rdpmc

Opis: Wczytuje zawartość licznika monitorującego wydajność (processor peformance monitoring counter) którego indeks jest przechowywany w %ecx do pary rejestrów %edx:%eax.
Patrz też : RDMSR , RDTSC
Kategoria: Inne instrukcje

RDTSC

Dostępna: pentium
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
rdtsc

Opis: Wczytuje zawartość licznika znacznika czasowego (processor's time-stamp counter) pary rejestrów %edx:%eax.
Patrz też : RDMSR RDPMC
Kategoria: Inne instrukcje

ROL

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
ROL 1,m16/32 : 4
ROL CL,m16/32 : 4
ROL imm8,m16/32 : 4
ROL 1,m8 : 4
ROL CL,m8 : 4
ROL imm8,m8 : 4
ROL 1,rm16/32 : 1
ROL CL,rm16/32 : 1
ROL imm8,rm16/32 : 1
ROL 1,rm8 : 1
ROL CL,rm8 : 1
ROL imm8,rm8 : 1
Opis: Przesuwa cyklicznie w lewo o zadaną liczbę bitów. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najstarsze bity trafiają do CF, a wartość CF trafia do najmłodszego bitu za każdym cyklem. Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany.

Patrz też: SAR , RCR , ROL , RCR
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

ROR

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
ROR 1,m16/32 : 4
ROR CL,m16/32 : 4
ROR imm8,m16/32 : 4
ROR 1,m8 : 4
ROR CL,m8 : 4
ROR imm8,m8 : 4
ROR 1,rm16/32 : 1
ROR CL,rm16/32 : 1
ROR imm8,rm16/32 : 1
ROR 1,rm8 : 1
ROR CL,rm8 : 1
ROR imm8,rm8 : 1
Opis: Przesuwa cyklicznie w prawo o zadaną liczbę bitów. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najmłodsze bity trafiają do najstarszego bitu za każdym cyklem. Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany.

Patrz też: SAR , RCR , RCL , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

REP

Dostępna: od 386
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
rep \n instrukcja
gdzie instrukcja to jedno z MOVSB , LODSB , INSB , OUTSB , STOSB i pochodne.
Opis: Powoduje powtórzenie instrukcji %ecx razy. Musi być w osobnej linii przed instrukcją.
Patrz też : Instrukcje łańcuchowe
Kategoria: Inne instrukcje

RET

Dostępna: od 386
Liczba Mikrokodów: 4/complex ?
komenda niesprawdzona
Składnia:
ret
Opis: Powoduje powrót z procedury do miejsca, z którego została wywołana ona instrukcją CALL . Do powrotu z przerwania używaj instrukcji IRET .
Patrz też : IRET , CALL
Kategoria: Inne instrukcje ,

RSM

Dostępna: od pentium
Liczba Mikrokodów: 4/complex ?
komenda niesprawdzona
Prawdopodobnie Instrukcja uprzywilejowana
Składnia:
rsm
Opis: Powoduje powrót procesora z trybu zarządzania systemem (System-management mode) do normalnego trybu funkcjonowania.
Patrz też :
Kategoria: Inne instrukcje ,

SAHF

Dostępna: od 386
Liczba Mikrokodów: 1
komenda niesprawdzona
Składnia:
sahf

Opis: Ładuje dolny bajt rejestru %ah do rejestru znaczników .
Patrz też : FLAGI , LAHF
Kategoria: Inne instrukcje

SAL

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
SAL 1,m16/32 : 4
SAL CL,m16/32 : 4
SAL imm8,m16/32 : 4
SAL 1,m8 : 4
SAL CL,m8 : 4
SAL imm8,m8 : 4
SAL 1,rm16/32 : 1
SAL CL,rm16/32 : 1
SAL imm8,rm16/32 : 1
SAL 1,rm8 : 1
SAL CL,rm8 : 1
SAL imm8,rm8 : 1
Opis: Przesuwa w lewo o zadaną liczbę bitów. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najmłodsze bity są wypełniane odpowiednią ilością zer. W każdym cyklu najstarszy bit wprowadzany jest do CF . Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany. SHL robi dokładnie to samo i te dwa polecenia to synonimy. Polecenie to jest odpowiednikiem operatora << znanego z języka C.

Patrz też: SAR , SHL , SHR , SHLD , SHRD , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

SAR

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
SAR 1,m16/32 : 4
SAR CL,m16/32 : 4
SAR imm8,m16/32 : 4
SAR 1,m8 : 4
SAR CL,m8 : 4
SAR imm8,m8 : 4
SAR 1,rm16/32 : 1
SAR CL,rm16/32 : 1
SAR imm8,rm16/32 : 1
SAR 1,rm8 : 1
SAR CL,rm8 : 1
SAR imm8,rm8 : 1
Opis: Przesuwa w prawo o zadaną liczbę bitów. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najstarsze bity są wypełniane odpowiednią ilością pierwotnego znaku liczby, czyli pierwotnego najstarszego bitu. Najmłodsze bity kolejno wprowadzane są do CF. Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany.
Polecenie to jest odpowiednikiem operatora >> znanego z języka C dla liczb ze znakiem.

Patrz też: SAL , SHL , SHR , SHLD , SHRD , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

SBB

Dostępna: od 386
Liczba Mikrokodów: 2/4
komenda niesprawdzona
Składnia:
sbb rm/r8/16/32,rm/r8/16/32 : 2
sbb r8/16/32,m8/16/32 : 4
sbb m8/16/32,r8/16/32 : 3
sbb imm8/16/32,rm/r8/16/32 : 2
sbb imm8/16/32,m8/16/32 : 4

Opis: Odejmuje od drugiego operandu pierwszy, najpierw do pierwszego dodając CF, i wynik zostawia w drugim operandzie, odpowiednio do wyniku ustawiając znaczniki .
Patrz też : ADC , SUB
Kategoria: Instrukcje arytmetyczne Instrukcje operujące na liczbach całkowitych

SCASB

Dostępna: od 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
scasb

Opis: Instrukcja porównuje bajt z %al z bajtem o adresie %es:%edi, ustawia odpowiednio flagi i zmniejsza lub zwiększa ( w zależności od znacznika DF : jeśli DF=1, to zmniejsza) %edi o 1. Nie można użyć innego segmentu niż %es. Instrukcję tą można poprzedzić instrukcją REP .
Patrz też : SCASW , STOSW , SCASL
Kategoria: Instrukcje łańcuchowe

SCASW

Dostępna: od 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
scasb

Opis: Instrukcja porównuje słowo z %ax z bajtem o adresie %es:%edi, ustawia odpowiednio flagi i zmniejsza lub zwiększa ( w zależności od znacznika DF : jeśli DF=1, to zmniejsza) %edi o 2. Nie można użyć innego segmentu niż %es. Instrukcję tą można poprzedzić instrukcją REP .
Patrz też : SCASB , STOSW , SCASL
Kategoria: Instrukcje łańcuchowe

SCASL

Dostępna: od 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
scasl

Opis: Instrukcja porównuje podwójne słowo z %eax z bajtem o adresie %es:%edi, ustawia odpowiednio flagi i zmniejsza lub zwiększa ( w zależności od znacznika DF : jeśli DF=1, to zmniejsza) %edi o 4. Nie można użyć innego segmentu niż %es. Instrukcję tą można poprzedzić instrukcją REP .
Patrz też : SCASB , STOSW , SCASW
Kategoria: Instrukcje łańcuchowe

SETcc

Dostępna: od 386 (P6)
Liczba Mikrokodów: 1 % 3
komenda niesprawdzona
Składnia:
setcc r/rm8 :1
setcc m8 : 3
gdzie cc oznacza jeden z przyrostków: B,NAE,C,E,Z,BE,N,L,NGE,LE,NG,NB,AE,NC,NBE,A,NE,NZ,NL,GE,NLE,G,NO,NP,PO,NS,O,P,PE,S opisanych tutaj
Opis : Ustawia (nadaje wartość 1) operand lub go zeruje w zależności od tego, czy spełniony jest warunek dany przyrostkiem np SETZ %eax znaczy ustaw %eax na jeden jeśli ZF == 1 i na zero w przeciwnym wypadku.
Przykład :

movl $2,%eax
movl $3,%ebx
sub %eax,%ebx
setz %al
Efekt : %al jest równe $0, %ebx jest równe $1. Gdybyśmy do %ebx najpierw załadowali $2, a nie $3, to sub ustawiłoby ZF i w %al pojawiłoby się $1.
Patrz też : Jcc , PRZYROSTKI
Kategoria: Instrukcje logiczne Instrukcje operujące na liczbach całkowitych

SHL

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
SHL 1,m16/32 : 4
SHL CL,m16/32 : 4
SHL imm8,m16/32 : 4
SHL 1,m8 : 4
SHL CL,m8 : 4
SHL imm8,m8 : 4
SHL 1,rm16/32 : 1
SHL CL,rm16/32 : 1
SHL imm8,rm16/32 : 1
SHL 1,rm8 : 1
SHL CL,rm8 : 1
SHL imm8,rm8 : 1
Opis: Przesuwa w lewo o zadaną liczbę bitów. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najmłodsze bity są wypełniane odpowiednią ilością zer. bitu za każdym cyklem. Najstarszy bit wprowadzany jest do CF. Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany. SAL robi dokładnie to samo i te dwa polecenia to synonimy. Polecenie to jest odpowiednikiem operatora << znanego z języka C .

Patrz też: SAR , SAL , SHR , SHLD , SHRD , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

SHLD

Dostępna: od 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
shld r/m16,r16/32,CL
shld r/m16,r16/32,imm8
Opis: Przesuwa w lewo pierwszy operand o zadaną liczbę bitów. Liczba bitów o którą przesuwamy określa trzeci operand. Najmłodsze bity są wypełniane odpowiednią ilością bitów z drugiego operandu (zaczynając od bitu zerowego).
Patrz też: SAR , SHL , SAL , SHR , SHRD , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

SHR

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
SHR 1,m16/32 : 4
SHR CL,m16/32 : 4
SHR imm8,m16/32 : 4
SHR 1,m8 : 4
SHR CL,m8 : 4
SHR imm8,m8 : 4
SHR 1,rm16/32 : 1
SHR CL,rm16/32 : 1
SHR imm8,rm16/32 : 1
SHR 1,rm8 : 1
SHR CL,rm8 : 1
SHR imm8,rm8 : 1
Opis: Przesuwa w prawo o zadaną liczbę bitów. Przesuwany jest drugi operand, liczba bitów o którą przesuwamy określa pierwszy operand. Najstarsze bity są wypełniane odpowiednią ilością zer. Najmłodsze bity kolejno wprowadzane są do CF. Jeżeli znak liczby podczas operacji zmieni się (zmieni się pierwszy, najstarszy bit), to znacznik OF jest ustawiany, w przeciwnym wypadku OF jest zerowany.
Polecenie to jest odpowiednikiem operatora >> znanego z języka C dla liczb bez znaku.

Patrz też: SAL , SHL , SAR , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

SHRD

Dostępna: od 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
shrd r/m16,r16/32,CL
shrd r/m16,r16/32,imm8
Opis: Przesuwa w prawo pierwszy operand o zadaną liczbę bitów. Liczba bitów o którą przesuwamy określa trzeci operand. Najstarsze bity (z lewej strony, najbardziej znaczące ) są wypełniane odpowiednią ilością bitów z drugiego operandu (zaczynając od bitu zerowego).
Patrz też: SAR , SHL , SAL , SHR , SHLD , RCL
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

SGDT

Dostępna: od 286
Liczba Mikrokodów: ?
komenda niesprawdzona
Skł adnia:
lgdt rej16
lgdt pam16

Opis: (ang. Store Global Descriptor Table) - Zapisuje rejestr GDTR w podany adres pamięci Argument wskazuje obszar 6 bajtow pamięci : 32 bity na adres liniowy i 16 bitów na ogranicznik rozmiaru obszaru wskazywanego tym adresem.
Patrz też : STR , SMSW LTR , LMSW LIDT
Kategoria: Inne instrukcje

SIDT

Dostępna: od 286
Liczba Mikrokodów: ?
komenda niesprawdzona
Sk adnia:
lidt rej16
lidt pam16

Opis: (ang. Store Interupt Descriptor Table) - Zapisuje rejestr IDTR do podanego obszaru pamięci. Argument wskazuje obszar 6 bajtow pamięci : 32 bity na adres liniowy i 16 bitów na ogranicznik rozmiaru obszaru wskazywanego tym adresem. (rejestr ten zawiera wskaznik w globalnej tablicy deskryptorow na segment z tablica deskryptorow przerwan.)
Patrz też : STR , SMSW LTR , LMSW SLDT , SGDT , LGDT , LLDT
Kategoria: Inne instrukcje

SLDT

Dostępna: od 286
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
sldt rej16
sldt pam16

Opis: (ang. Store Local Descriptor Table) - zapisuje rejestr LDTR pod adres podany jako argument (rejestr ten zawiera wskaznik w globalnej tablicy deskryptorow na segment z lokalna tablica deskryptorow procesu)
Patrz też : STR , SMSW , LTR , LMSW SLDT
Kategoria: Inne instrukcje

SMI

Dostępna: od 386
Liczba Mikrokodów: ?
komenda niesprawdzona
Prawdopodobnie instrukcja uprzywilejowana
Składnia:
smi

Opis: (ang. System management interrupt) - Nieudokumentowana instrukcja. Powoduje ponoć przejście w specjalny tryb zarządzania systemem, specjalny tryb do testowania.
Patrz też :
Kategoria: Inne instrukcje

SMSW

Dostępna: od 286
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
smsw rej16
smsw pam16

Opis: (ang. Store Machine Status Word) - zapisuje rejestr MSW (dolna polowka rejsetru CR0) pod podany jako argument adres (w tym rejestrze sa zapisane w postaci bitow najwazniejsze informacje o stanie procesora, np. czy jest wlaczony tryb wirtualny czy rzeczywisty)
Patrz też : STR , SLDT
Kategoria: Inne instrukcje

STC

Dostępna: od 386
Liczba Mikrokodów: 1
komenda niesprawdzona
Składnia: stc
Opis: Ustawia flagę przeniesienia (CF)
Patrz też : CLD , CLI , CLTS , CLC , STD , STI , CMC
Kategoria : Inne instrukcje

STD

Dostępna: od 386
Liczba Mikrokodów: nie wiem
komenda niesprawdzona
Składnia: std
Opis: Ustawia flagę kierunku (DF)
Patrz też : CLC , CLI , CLTS , STC , CLD , STI , CMC
Kategoria : Inne instrukcje

STI

Dostępna: od 386
Liczba Mikrokodów: complex
komenda niesprawdzona
Instrukcja uprzywilejowana
Składnia: sti
Opis: Ustawia flagę zezwolenia na przerwanie (IF) , umożliwiając wystąpienia przerwań . Zabronić obsługiwania przerwań można komendą CLI .
Patrz też : CLC , CLD , CLTS , STC , STD , CLI , CMC
Kategoria : Inne instrukcje

STOSB

Dostępna: od 386
Liczba Mikrokodów: 3
komenda niesprawdzona
Składnia:
stosb [seg]

Opis: Ładuje bajt z %al do miejsca o adresie %ds:%edi i następnie zmniejsza lub zwiększa ( w zależności od znacznika DF : jeśli DF=1, to zmniejsza) %edi o 1. Zamiast %ds można użyć innego segmentu. Instrukcję tą można poprzedzić instrukcją REP , ale nie widzę żadnego rozsądnego powodu by tak zrobić.
Patrz też : LODSB , STOSW , STOSL
Kategoria: Instrukcje łańcuchowe

STOSL

Dostępna: od 386
Liczba Mikrokodów: 3
komenda niesprawdzona
Składnia:
stosd [seg]

Opis: Ładuje podwójne słowo z %eax do miejsca o adresie %ds:%edi, i następnie zmniejsza lub zwiększa ( w zależności od znacznika DF : jeśli DF=1, to zmniejsza) %edi o 4. Zamiast %ds można użyć innego segmentu. Patrz opis STOSB .
Patrz też : STOSB , STOSW
Kategoria: Instrukcje łańcuchowe

STOSW

Dostępna: od 386
Liczba Mikrokodów: 3
komenda niesprawdzona
Składnia:
stosw [seg]

Opis: Ładuje słowo z %ax do miejsca o adresie %ds:%edi, i następnie zmniejsza lub zwiększa ( w zależności od znacznika DF : jeśli DF=1, to zmniejsza) %edi o 2. Zamiast %ds można użyć innego segmentu. Patrz opis STOSB .
Patrz też : STOSB , STOSL
Kategoria: Instrukcje łańcuchowe

STR

Dostępna: od 286
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
str rej16
str pam16

Opis: (ang. Store TR) - zapisuje rejestr TR (rejestr okreslajacy numer aktualnego zadania) pod adres podany jako argument.
Patrz też : SMSW , SLDT , LTR
Kategoria: Inne instrukcje

SUB

Dostępna: od 386
Liczba Mikrokodów: 1/4
komenda niesprawdzona
Składnia:
sub rm/r8/16/32,rm/r8/16/32 : 1
sub r8/16/32,m8/16/32 : 4
sub m8/16/32,r8/16/32 : 2
sub imm8/16/32,rm/r8/16/32 : 1
sub imm8/16/32,m8/16/32 : 4

Opis: Odejmuje od drugiego operandu pierwszy, i wynik zostawia w drugim operandzie, odpowiednio do wyniku ustawiając znaczniki .
Przykład :

movl $2,%eax movl $3,%ebx sub %eax,%ebx
Efektem : %ebx równe 1, %eax równe 2.
Patrz też : ADD , SBB
Kategoria: Instrukcje arytmetyczne Instrukcje operujące na liczbach całkowitych

TEST

Dostępna: od 386
Liczba Mikrokodów: 1%2
komenda niesprawdzona
Składnia:
test r/rm/imm8/16/32, m8/16/32 : 2
test imm/rm/r8/16/32,r/rm/imm8/16/32 : 1
Opis: Boolowskie mnożenie obu operandów. Tzn, tak samo jak operator '&' w C : 1 & 1 == 1 a 1&0. 0&0, 0&1 ==0. Wynik jest nigdzie nie przechowywany, tylko ustawiane są odpowiednie flagi.
Jeżeli chcemy zachować wynik, używamy AND .
Patrz też: AND , CMP ( odejmowanie bez zapamiętywanie wyniku, z ustawianiem tylko odpowiednich flag)
Kategoria: Instrukcje logiczne
Instrukcje operujące na liczbach całkowitych

WAIT (FWAIT)

Dostępna: od pentium (na 386 i 486 ma inne dzialanie niz na pentiumach)
Liczba Mikrokodów: ?
komenda niesprawdzona
Składnia:
wait
(alternatywnie: fwait)
Opis: Czeka na wyczerpanie kolejki instrukcji koprocesora oraz obsluge wszystkich zakolejkowanych przerwan. Przygotowuje grunt pod inicjalizacje koprocesora przez FNINIT , jest czescia procesu inicjalizacji koprocesora wykonywana przez instrukcje FINIT .
Patrz też : FINIT
FNINIT

Kategoria: Inne instrukcje ,

VERR

Dostępna: od 386
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
verr r/m16

Opis: Sprawdza czy na obecnym poziomie uprzywilejowania możemy czytać z segmentu którego adres podany jest operandem. Jeżeli możemy, ustawiona jest flaga ZF
Patrz też : VERW
Kategoria: Inne instrukcje

VERW

Dostępna: od 386
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
verw r/m16

Opis: Sprawdza czy na obecnym poziomie uprzywilejowania możemy zapisywać do segmentu którego adres podany jest operandem. Jeżeli możemy, ustawiona jest flaga ZF
Patrz też : VERR
Kategoria: Inne instrukcje

WBINVD

Dostępna: od 486
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
wbinvd

Opis: Instrukcja ta unieważnia i opróżnia cache (pamięć podręczną) wewnętrzny procesora oraz poleca zrobić to samo z zewnętrznym cache. Zawartość cache jest zapisaywana do pamięci. Jeżeli nie chcesz zapisywać najpierw cache przed jego wyczyszczeniem, użyj komendy INVD .
Patrz też : INVLPG , INVD
Kategoria: Inne instrukcje

WRMSR

Dostępna: pentium
Liczba Mikrokodów: complex
komenda niesprawdzona
Składnia:
wrmsr

Opis: Zapisuje zawartość %edx:%eax do rejestru specyficznego dla modelu (model specific register) którego indeks jest przechowywany w %ecx.
Patrz też : RDMSR
Kategoria: Inne instrukcje

XADD

Dostępna: od 486
Liczba Mikrokodów: 4 % complex
komenda niesprawdzona
Składnia:
xadd r8/16/32,m8/16/32 : complex
xadd r8/16/32,rm8/16/32 : 4

Opis: Zamienia operandy miejscami, dodaje je do siebie i wynik składuje w drugim operandzie.
Patrz też : ADD , XCHG
Kategoria: Instrukcje arytmetyczne, Instrukcje operujące na liczbach całkowitych

XBTS

Dostępna: tylko 386
Liczba Mikrokodów: 4 % complex
komenda niesprawdzona
Składnia:
xbts r16/32,r/m16/32 : complex
xadd r8/16/32,rm8/16/32 : 4

Opis: Gcc nie uznaje tej instrukcji. Podobnoż występuje w wcześniejszych 386. Bierze łańcuch bitów z pierwszego operandu i kładzie je w drugim operandzie. Nie ma się czym martwić jeśli nie zrozumiałeś, bo tej isntrukcji po prostu chyba już nie ma :).
Patrz też : IBTS
Kategoria: ?

XCHG

Dostępna: od 386
Liczba Mikrokodów: 3 % complex
komenda niesprawdzona
Składnia:
xchg r8/16/32,m8/16/32 : complex
xchg r8/16/32,rm8/16/32 : 3

Opis: Instrukcja ta zamienia miejscami operandy.
Patrz też : XADD , CMPXCHG
Kategoria: Instrukcje arytmetyczne, Instrukcje operujące na liczbach całkowitych

XLATB

Dostępna: od 386
Liczba Mikrokodów: 2
komenda niesprawdzona
Składnia:
xlatb
xlat m8

Opis: Ładuje bajt z pamięci wskazywanej przez %ds:(%al+%ebx) do %al. Można usiłować ładować z innego segmentu niż z %ds; patrz LODSB .
Patrz też :
Kategoria: Instrukcje arytmetyczne, Instrukcje operujące na liczbach całkowitych

XOR

Dostępna: od 386
Liczba Mikrokodów: 1 % 4
komenda niesprawdzona
Składnia:
xor r/rm/imm8/16/32,r/rm8/16/32 : 1
xor r/rm/imm8/16/32,m8/16/32 : 4
xor m8/16/32,r/rm8/16/32 : 2
Opis: Dokonuje boolowskiego dodawania modulo 2 obu operandów wynik pozostawiając w drugim operandzie, tj. bit wyniku jest równy 1 wtedy gdy tylko jeden z bitów któregoś z obu operandów na tej samej pozycji był równy 1. (Dodawanie z dopełnieniem do dwóch, dodaje jedynkę)
Patrz też : PXOR , POR
Kategoria: Instrukcje logiczne , Instrukcje operujące na liczbach całkowitych