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