Abecedný zoznam inštrukcií x86 |
AAA - ASCII Adjust AL after Addition
Použitie: AAA
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
u |
u |
* |
u |
* |
Inštrukcia prevedie výsledok sčítania dvoch číslic (obidve vo formáte voľného BCD kódu) zase do voľného BCD kódu nasledujúcim algoritmom:
AL ← AL+6
AH ← AH+1
A ← 1
C ← A
AL ← AL AND 0FH
Výsledok sčítania musí byť v registri AL a skutočná hodnota súčtu by nemala byť väčšia ako 9, pretože inak môže byť výsledok chybný! Inštrukcia AAA sa používa po inštrukciách ADD, ktoré pracujú s číslami vo formáte voľného BCD kódu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
8 |
3 |
4 |
3 |
|
7 |
1 mo |
1 |
37 |
AAD - ASCII Adjust AX befor Division
Použitie: AAD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
* |
* |
u |
* |
u |
Inštrukcia prevádza dvojmiestne číslo vo voľnom formáte BCD uložené v registri AX na binárne (BCD) číslo týmto algoritmom:
AL ← 10*AH+AL
AH ← 0
Výsledok sa uloží do registra AL. Inštrukcia sa používa pred delením v prípade, že čísla sú vo voľnom BCD kóde, čiže ich treba najprv previesť do binárneho kódu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
60 |
14 |
19 |
14 |
|
7 |
3 mo |
2 |
D5 0A |
AAM - ASCII Adjust AX after Multiplication
Použitie: AAM
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
* |
* |
u |
* |
u |
Inštrukcia prevádza obsah registra AL na dve čísla vo voľnom formáte BCD, ktoré ukladá do registrov AH a AL. Jedná sa o korekciu pre ASCII násobenie. Prevod prebieha nasledovne:
AH ← AL / 10
AL ← AL mod 10
Inštrukcia sa používa po násobení (alebo delení) dvoch čísel vo voľnom formáte BCD.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
83 |
16 |
17 |
15 |
|
13-21 |
4 mo |
2 |
D4 0A |
AAS - ASCII Adjust for Subtraction
Použitie: AAS
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
u |
u |
* |
u |
* |
Inštrukcia prevádza výsledok odčítania dvoch číslic vo voľnom formáte BCD zase do voľného formátu BCD nasledujúcim algoritmom:
AL ← AL-6
AH ← AH-1
A ← 1
C ← 1
AL ← AL AND 0FH
Inštrukcia sa používa po odčítaní vo voľnom BCD formáte. Koriguje (opravuje) výsledok predchádzajúceho (rozpakovaného) decimálneho odčítania, ktorý je uložený v registri AL. Vyššie bity sú vynulované.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
8 |
3 |
4 |
3 |
|
7 |
1 mo |
1 |
3F |
ADC - Add With Carry
Použitie: ADC cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia spočíta oba operandy a pripočíta k nim aj hodnotu príznaku CF. Výsledok uloží do ľavého operandu. Podľa výsledkov nastaví príznaky.
cieľový ← zdrojový+cieľový + CF
Inštrukcia sa používa pre sčítanie dlhých čísel typu integer, ktoré nie je možné sčítať vykonaním jednej inštrukcie procesora 8086.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
|
1 |
2 mo |
2 |
|
mem,reg |
16+EA |
7 |
7 |
3 |
|
1 |
4 mo |
2-4 (W88=24+EA) |
10 mm-xxx-xxx |
reg,mem |
9+EA |
7 |
6 |
2 |
|
1 |
3 mo |
2-4 (W88=13+EA) |
12/13 |
reg,immed |
4 |
3 |
2 |
1 |
|
1 |
2 mo |
3-4 |
|
mem,immed |
17+EA |
7 |
7 |
3 |
|
1 |
4 mo |
3-6 (W88=13+EA) |
81/80 xx-010-xxx |
accum,immed |
4 |
3 |
2 |
1 |
|
1 |
2 mo |
2-3 |
15/14 |
ADD - Arithmetic Addition
Použitie: ADD cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia spočíta oba operandy a výsledok uloží do ľavého operandu. Podľa výsledkov nastaví príznaky. Operandy sú binárne.
cieľový ← zdrojový + cieľový
Inštrukcia sa používa pre sčítanie celých čísel (integer).
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
1 |
1 |
1 mo |
2 |
|
mem,reg |
16+EA |
7 |
7 |
3 |
|
1 |
4 mo |
2-4 (W88=24+EA) |
|
reg,mem |
9+EA |
7 |
6 |
2 |
|
1 |
2 mo |
2-4 (W88=13+EA) |
|
reg,immed |
4 |
3 |
2 |
1 |
1 |
1 |
1 mo |
3-4 |
|
mem,immed |
17+EA |
7 |
7 |
3 |
|
1 |
4 mo |
3-6 (W88=13+EA) |
|
accum,immed |
4 |
3 |
2 |
1 |
1 |
1 |
1 mo |
2-3 |
|
AND - Logical And
Použitie: AND cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
0 |
- |
- |
- |
* |
* |
u |
* |
0 |
Inštrukcia vykoná logický súčin dvoch operandov a výsledok uloží do cieľového operandu. Logický súčin má výsledok 1 práve vtedy ak oba operandy majú hodnotu 1, inak je výsledok 0.
cieľový ← cieľový AND zdrojový
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
|
1 |
1 mo |
2 |
|
mem,reg |
16+EA |
7 |
7 |
3 |
|
1 |
4 mo |
2-4 (W88=24+EA) |
|
reg,mem |
9+EA |
7 |
6 |
1 |
|
1 |
2 mo |
2-4 (W88=13+EA) |
|
reg,immed |
4 |
3 |
2 |
1 |
|
1 |
1 mo |
3-4 |
|
mem,immed |
17+EA |
7 |
7 |
3 |
|
1 |
4 mo |
3-6 (W88=13+EA) |
|
accum,immed |
4 |
3 |
2 |
1 |
|
1 |
1 mo |
2-3 |
|
ARPL - Adjusted Requested Privilege Level of Selector (286+ protected mode)
Použitie: ARPL cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
* |
- |
- |
- |
Porovnáva RPL bity z „cieľového“ operandu s bitmi v „zdrojovom“ operande. Pokiaľ sú RPL bity „cieľového“ operandu menšie ako RPL bity „zdrojového“ operandu, RPL bity „cieľového“ operandu sú nastavené na rovnakú hodnotu ako RPL bity „zdrojového“ opernadu a Zero Flag je nastavený.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Reg,reg |
- |
10 |
20 |
9 |
|
9 |
|
2 |
63 XX |
Mem,reg |
- |
11 |
21 |
9 |
|
9 |
|
4 |
63 ® |
BOUND - Array Index Bound Check (80188+)
Použitie: BOUND zdrojový, limit
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Index poľa v zdrojovom registri je skontrolovaný voči vyšším a nižším ohraničeniam v pamäťovom zdroji. Prvé slovo alokované (lokalizované) ako „limit“ je nižšie ohraničenie a slovo nachádzajúce sa na mieste (offsete) „limit+2“ je vyššie pole ohraničenia. Prerušenie 5 sa vyskytne v prípade, že „zdrojová“ hodnota je nižšia, alebo vyššia ako je rozsah pamäťového miesta pre „zdroj“.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Reg16,mem32 |
- |
Nj=13 |
nj=10 |
7 |
|
11 |
|
2 |
62 XX |
Reg32,mem64 |
- |
Nj=13 |
nj=10 |
7 |
|
20 |
|
2 |
62 XX |
nj = no jump taken
BSF - Bit Scan Forward (386+)
Použitie: BSF cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
* |
- |
- |
- |
Hľadá prvý nenulový bit zdrojového operandu. Nastavuje Zero Flag ak je takýto bit nájdený a načíta do cieľového operandu index ukazujúci na prvý nastavený bit. Vymazáva Zero Flag ak nie je nájdený žiaden bit. BSF prehľadáva bitovú vzorku smerom dopredu (0-n), zatiaľ čo BSR ju prehľadáva opačne (n-0).
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
- |
- |
10+3n |
6-42 |
|
3 |
2 mo |
3 |
0F BC XX |
reg,mem |
- |
- |
10+3n |
7-43 |
|
3 |
3 mo |
3-7 |
0F BC XX |
reg32,reg32 |
- |
- |
10+3n |
6-42 |
|
3 |
2 mo |
3-7 |
0F BC XX |
reg32,mem32 |
- |
- |
10+3n |
7-43 |
|
3 |
3 mo |
3-7 |
0F BC XX |
BSR - Bit Scan Reverse (386+)
Použitie: BSR cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
* |
- |
- |
- |
Hľadá prvý nenulový bit zdrojového operandu. Nastavuje Zero Flag ak je takýto bit nájdený a načíta do cieľového operandu index ukazujúci na prvý nastavený bit. Vymazáva Zero Flag keď nie je nájdený žiaden bit. BSF prehľadáva bitovú vzorku smerom dopredu (0-n), zatiaľ čo BSR ju prehľadáva opačne (n-0).
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
- |
- |
10+3n |
6-103 |
|
3 |
2 mo |
3 |
0F BD XX |
reg,mem |
- |
- |
10+3n |
7-104 |
|
3 |
2 mo |
3-7 |
0F BD XX |
reg32,reg32 |
- |
- |
10+3n |
6-103 |
|
3 |
3 mo |
3-7 |
0F BD XX |
reg32,mem32 |
- |
- |
10+3n |
7-104 |
|
3 |
3 mo |
3-7 |
0F BD XX |
BSWAP - Byte Swap (486+)
Použitie: BSWAP reg32
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Vymení poradie bajtov 32-bitového registra od veľkého endian k malému endian, alebo vice versa. Výsledok ponechaný v cieľovom registri nie je definovaný v prípade, že operand je 16 bitový register.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Reg32 |
- |
- |
- |
1 |
|
4 |
2 mo |
2 |
0F C8 XX |
BT - Bit Test (386+)
Použitie: BT cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
* |
Cieľový bit označený (indexovaný) zdrojovou hodnotou je skopírovaný do Carry Flag.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,immed8 |
- |
- |
3 |
3 |
|
2 |
1 mo |
4-8 |
0F BA |
mem16,immed8 |
- |
- |
6 |
6 |
|
2 |
2 mo |
4-8 |
0F BA |
r/mem32, immed8 |
- |
- |
3 |
3 |
|
|
1 mo |
4-8 |
0F A3 |
reg16,reg16 |
- |
- |
3 |
3 |
|
5/6 |
1 mo |
3-7 |
0F A3 |
reg16,mem16 |
- |
- |
12 |
12 |
|
5/6 |
|
3-7 |
0F A3 |
r/mem32,reg32 |
- |
- |
3/8 |
3/8 |
|
|
1 mo |
3-7 |
0F A3 |
BTC - Bit Test with Compliment (386+)
Použitie: BTC cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
* |
Cieľový bit označený (indexovaný) zdrojovou hodnotou je skopírovaný do Carry Flag potom ako bol invertovaný.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,immed8 |
- |
- |
6 |
6 |
|
3 |
1 mo |
4-8 |
0F BA |
mem16,immed8 |
- |
- |
8 |
8 |
|
3 |
4 mo |
4-8 |
0F BA |
reg16,reg16 |
- |
- |
6 |
6 |
|
5/6 |
1 mo |
3-7 |
0F BB |
mem16,reg16 |
- |
- |
13 |
13 |
|
5/6 |
1 mo |
3-7 |
0F BB |
BTR - Bit Test with Reset (386+)
Použitie: BTR cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
* |
Cieľový bit označený (indexovaný) zdrojovou hodnotou je skopírovaný do Carry Flag a potom vymazaný z cieľového operanda.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,immed8 |
- |
- |
6 |
6 |
|
3 |
1 |
4-8 |
0F BA |
mem16,immed8 |
- |
- |
8 |
8 |
|
3 |
4 |
4-8 |
0F BA |
reg,reg |
- |
- |
6 |
6 |
|
5/6 |
1 |
3-7 |
0F B3 |
mem,reg |
- |
- |
13 |
13 |
|
5/6 |
|
3-7 |
0F B3 |
BTS - Bit Test and Set (386+)
Použitie: BTS cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
* |
Cieľový bit označený (indexovaný) zdrojovou hodnotou je skopírovaný do Carry Flag a potom nastavený v cieľovom operande.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,immed8 |
- |
- |
6 |
6 |
|
3 |
1 mo |
4-8 |
0F BA |
mem,immed8 |
- |
- |
8 |
8 |
|
3 |
4 mo |
4-8 |
0F BA |
reg,reg |
- |
- |
6 |
6 |
|
5/6 |
1 mo |
3-7 |
0F AB |
mem,reg |
- |
- |
13 |
13 |
|
5/6 |
|
3-7 |
0F AB |
CALL - Procedure Call
Použitie: CALL cieľ
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia vykoná skok do podprogramu. Najprv sa do zásobníka uloží návratová adresa pre inštrukciu RET a potom sa vykoná skok do podprogramu. Kód pokračuje spustením na CS:IP.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
rel16 (near, IP relative) |
19 |
7 |
7+m |
3 |
|
1 |
|
|
E8 |
rel32 (near, IP relative) |
- |
- |
7+m |
3 |
|
1 |
|
|
E8 |
reg16 (near, register indirect) |
16 |
7 |
7+m |
5 |
|
|
|
|
FF |
reg32 (near, register indirect) |
- |
- |
7+m |
5 |
|
|
|
|
FF |
mem16 (near, memory indirect) |
- |
21+EA |
11 |
10+m |
|
|
|
|
FF |
mem32 (near, memory indirect) |
- |
- |
10+m |
5 |
|
|
|
|
FF |
ptr16:16 (far, full ptr supplied) |
28 |
13 |
17+m |
18 |
|
|
|
|
9A |
ptr16:32 (far, full ptr supplied) |
- |
- |
17+m |
18 |
|
|
|
|
9A |
ptr16:16 (far, ptr suppl., pr. mode) |
- |
26 |
34+m |
20 |
|
|
|
|
9A |
ptr16:32 (far, ptr suppl., pr. mode) |
- |
- |
34+m |
20 |
|
|
|
|
9A |
m16:16 (far, indirect) |
37+EA |
16 |
22+m |
17 |
|
|
|
|
FF |
m16:32 (far, indirect) |
- |
- |
22+m |
17 |
|
|
|
|
FF |
m16:16 (far, indirect, prot. mode) |
- |
29 |
38+m |
20 |
|
|
|
|
FF |
m16:32 (far, indirect, prot. mode) |
- |
- |
38+m |
20 |
|
|
|
|
FF |
m16:16 (task, via TSS or task gate) |
- |
177 |
TS |
37+TS |
|
|
|
|
FF |
m16:16 (task, via TSS or task gate) |
- |
180/185 |
5+TS |
37+TS |
|
|
|
|
FF |
m16:32 (task) |
- |
- |
TS |
37+TS |
|
|
|
|
FF |
m16:32 (task) |
- |
- |
5+TS |
37+TS |
|
|
|
|
FF |
ptr16:16 (gate, same privilege) |
- |
41 |
52+m |
35 |
|
|
|
|
9A |
ptr16:32 (gate, same privilege) |
- |
- |
52+m |
35 |
|
|
|
|
9A |
m16:16 (gate, same privilege) |
- |
44 |
56+m |
35 |
|
|
|
|
FF |
m16:32 (gate, same privilege) |
- |
- |
56+m |
35 |
|
|
|
|
FF |
ptr16:16 (gate, more priv, no parm) |
- |
82 |
86+m |
69 |
|
|
|
|
9A |
ptr16:32 (gate, more priv, no parm) |
- |
- |
86+m |
69 |
|
|
|
|
9A |
m16:16 (gate, more priv, no parm) |
- |
83 |
90+m |
69 |
|
|
|
|
FF |
m16:32 (gate, more priv, no parm) |
- |
- |
90+m |
69 |
|
|
|
|
FF |
ptr16:16 (gate, more priv, x parms) |
- |
86+4x |
94+4x+m |
77+4x |
|
|
|
|
9A |
ptr16:32 (gate, more priv, x parms) |
- |
- |
94+4x+m |
77+4x |
|
|
|
|
9A |
m16:16 (gate, more priv, x parms) |
- |
90+4x |
98+4x+m |
77+4x |
|
|
|
|
FF |
m16:32 (gate, more priv, x parms) |
- |
- |
98+4x+m |
77+4x |
|
|
|
|
FF |
CBW - Convert Byte to Word
Použitie: CBW
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
0 |
- |
- |
- |
* |
* |
? |
* |
0 |
Inštrukcia konvertuje 8-bitovú hodnotu so znamienkom v registri AL na 16-bitovú hodnotu so znamienkom. Výsledok je uložený do registra AX. Konverzia prebehne tak, že všetky bity registra AH sa naplnia najvyšším bitom registra AL.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
3 |
3 |
|
3 |
1mo |
1 |
98 |
CDQ - Convert Double to Quad (386+)
Použitie: CDQ
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Konvertuje znamienkový DWORD v EAX do znamienkového QUAD WORD v EDX:EAX rozšírením vyššieho bit registra EAX cez EDX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
- |
2 |
3 |
|
2 |
1mo |
1 |
99 |
CLC - Clear Carry
Použitie: CLC
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
0 |
Inštrukcia vymaže (nastaví na nulu) Carry Flag vo flag registri.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
1 |
1mo |
1 |
F8 |
CLD - Clear Direction Flag
Použitie: CLD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
0 |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia nastaví na nulu príznak Direction. Výsledkom toho je, že inštrukcie na prácu s reťazcami automaticky inkrementujú obsahy registrov SI a DI.
Príznak Direction sa uplatní pri prehľadávaní reťazcov.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
7 |
4mo |
1 |
FC |
CLI - Clear Interrupt Flag (disable)
Použitie: CLI
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
0 |
- |
- |
- |
- |
- |
- |
Inštrukcia nastaví príznak Interrupt na nulu a tým zakáže prerušenie. Používa sa pri maskovateľných prerušeniach.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
3 |
5 |
|
7 |
|
1 |
FA |
CLTS - Clear Task Switched Flag (286+ privileged)
Použitie: CLTS
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Vymaže Task Switched Flag v stavovom registri počítača. Je to privilegovaná operácia a je väčšinou používaná len kódom operačného systému.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
2 |
5 |
7 |
|
10 |
|
2 |
0F 06 |
CMC - Complement Carry Flag
Použitie: CMC
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia neguje (invertuje) Carry Flag.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
2 |
1mo |
1 |
F5 |
CMP - Compare
Použitie: CMP cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia nastaví príznaky tak, ako keby sa vykonalo odčítanie druhého registra od prvého registra. Obsahy oboch zostanú zachované.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
|
1 |
1mo |
2 |
3X |
mem,reg |
9+EA |
7 |
5 |
2 |
|
1 |
2mo |
2-4 (W88=13+EA) |
3X |
reg,mem |
9+EA |
6 |
6 |
2 |
|
1 |
2mo |
2-4 (W88=13+EA) |
3X |
reg,immed |
4 |
3 |
2 |
1 |
|
1 |
2mo |
3-4 |
8X |
mem,immed |
10+EA |
6 |
5 |
2 |
|
1 |
2mo |
3-6 (W88=14+EA) |
8X |
accum,immed |
4 |
3 |
2 |
1 |
|
1 |
1mo |
2-3 |
3X |
CMPS - Compare String (Byte, Word or Doubleword)
Použitie: CMPS cieľový, zdrojový
CMPSB
CMPSW
CMPSD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia porovnáva dva bloky pamäti. Začiatok prvého bloku je určený dvojicou registrov DS:SI a začiatok druhého ES:DI. Po porovnaní sa obsah registrov zmenší alebo zväčší (podľa DF/ o 1 alebo 2) v závislosti na tom, aké veľké dáta sa porovnávajú.
Porovnanie prebieha buď po 8 bitoch CMPSB DI,SI ← DI,SI +/- 1, alebo 16 bitoch CMPSW DI,SI ← DI,SI +/- 2. Maximálny počet porovnávaných položiek určuje register CX. Ak použijeme pred inštrukciou prefix REPE (opakuj, pokiaľ je rovné), porovnávanie sa ukončí buď pri nájdení prvého rozdielu medzi blokmi dát, alebo po porovnaní takého množstva položiek, aké udáva register CX. Môžeme tiež pred inštrukciou použiť prefix REPNE (opakuj, pokiaľ je rôzne), v tom prípade sa porovnávanie ukončí buď pri nájdení prvej zhody medzi blokmi dát, alebo po porovnaní takého množstva položiek, aké udáva register CX. Ak nepoužijeme žiadny prefix, uskutoční sa porovnanie iba prvých dvoch položiek bloku dát bez ohľadu na výsledok porovnania.
Prefix inštrukcie - spôsobí zmenu inštrukcie, ktorá nasleduje. Používa sa, napr. k opakovaniu inštrukcie do splnenia určitej podmienky, zvyčajne do CX=0. Jeho dĺžka je 1 bajt a píše sa pred inštrukciu, napr.: REPE CMPSB.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
cieľový, zdrojový |
22 |
8 |
10 |
8 |
|
5 |
|
1(W88=30) |
AX |
CMPXCHG - Compare and Exchange
Použitie: CMPXCHG cieľový, zdrojový (486+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Porovná akumulátor (bity 8-32) s cieľovým operandom. Ak je rovnaký, do cieľového operandu je načítaný obsah zdrojového operandu, inak je do akumulátora načítaný obsah cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
- |
- |
- |
6 |
|
11 |
|
2 |
0F AX |
mem,reg |
- |
- |
- |
7 |
|
11 |
|
2 |
0F AX |
- pridá 3 takty ak "mem,reg" porovnanie je fails
CPUID - CPU Identification
Použitie: CPUID
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Vracia identifikačné hodnoty CPU.
Ak EAX =0 potom CyrixInstead
Register |
D31-D0 |
EBX |
69 72 79 43 i r y C (ASCII) |
EDX |
73 6E 49 78 s n I x |
ECX |
64 61 65 74 d a e t |
inak napr.
EAX (3-0) 0
EAX (7-4) 3 (Verzia)
EAX (11-8) 5 (Pentium)
EAX (13-12) 0
EAX (31-14) rezervované
EDX 0 - nie je FPU
1 - je FPU
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
- |
- |
- |
|
12 |
|
2 |
0F A2 |
CWD - Convert Word to Doubleword
Použitie: CWD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Rozšíri znamienko slova v registri AX cez register DX formovaním (vytvorením) DOUBLEWORDu v DX:AX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
5 |
2 |
2 |
3 |
|
2 |
1mo |
1 |
99 |
CWDE - Convert Word to Extended Doubleword (386+)
Použitie: CWDE
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Konvertuje znamienkové slovo v AX do znamienkového DOUBLEWORDu v EAX rozšírením znamienkového bitu AX registra cez EAX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
- |
3 |
3 |
|
2 |
1mo |
1 |
98 |
DAA - Decimal Adjust for Addition
Použitie: DAA
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia vykoná dekadickú korekciu po sčítaní dvoch čísel v tesnom BCD formáte. Koriguje (opravuje) výsledok predchádzajúceho BCD pričítania nachádzajúceho sa v AL registri. Obsah registra AL je zmenený na pár pakovaných decimálnych číslic.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
4 |
3 |
4 |
2 |
|
9 |
1mo |
1 |
27 |
DAS - Decimal Adjust for Subtraction
Použitie: DAS
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia vykoná dekadickú korekciu po odčítaní dvoch čísel v tesnom BCD formáte. Koriguje (opravuje) výsledok predchádzajúceho BCD odčítania nachádzajúceho sa v AL registri. Obsah registra AL je zmenený na pár pakovaných decimálnych číslic.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
4 |
3 |
4 |
2 |
|
9 |
1mo |
1 |
2F |
DEC - Decrement
Použitie: DEC cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
- |
Inštrukcia prevedie zníženie hodnoty operandu o jedna.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
3 |
2 |
2 |
1 |
|
1 |
1mo |
2 |
FX |
mem |
15+EA |
7 |
6 |
3 |
|
1 |
4mo |
2-4 |
FX |
reg16/32 |
3 |
2 |
2 |
1 |
|
1 |
1mo |
1 |
48 |
DIV - Divide
Použitie: DIV zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
* |
* |
u |
u |
u |
Inštrukcia vykoná celočíselné neznamienkové delenie akumulátora zdrojom. Ak je zdrojový deliteľ bytová hodnota, potom AX je delené zdrojom a výsledná hodnota je uložená v AL a zvyšok v AH. Ak je zdrojový deliteľ typu word, potom DX:AX je delené zdrojom a výsledná hodnota je uložená v AX a zvyšok v DX. V prípade, že dôjde k deleniu nulou, generuje sa prerušenie INT 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
80-90 |
14 |
14 |
16 |
|
13-17 |
3mo |
2 |
FX |
reg16 |
144-162 |
22 |
22 |
24 |
|
13-25 |
4mo |
2 |
FX |
reg32 |
- |
- |
38 |
40 |
|
13-41 |
4mo |
2 |
FX |
mem8 |
(86-96)+EA |
17 |
17 |
16 |
|
13-17 |
4mo |
2-4 |
FX |
mem16 |
(150-168)+EA |
25 |
25 |
24 |
|
13-25 |
4mo |
2-4 (W88=158-176+EA) |
FX |
mem32 |
- |
- |
41 |
40 |
|
13-41 |
4mo |
2-4 |
FX |
ENTER - Make Stack Frame (80188+)
Použitie: ENTER locals,level
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia modifikuje zásobník pre vstup do procedúry vytvorenej vyšším jazykom. Operand „lokálne“ špecifikuje množstvo miesta na uchovanie dát, ktoré bude alokované na zásobníku. „Level“ špecifikuje nesting úroveň rutiny. V kombinácii s LEAVE inštrukciou vzniká efektívna metóda pre vstup (spúšťanie) a výstup (opúšťanie) procedúry.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
immed16, 0 |
- |
11 |
10 |
14 |
|
10 |
|
4 |
C8 XX |
immed16, 1 |
- |
15 |
12 |
17 |
|
13 |
|
4 |
C8 XX |
immed16,immed8 |
- |
12+4(L-1) |
14+4(L-1) |
17+3L |
|
10+3L |
|
4 |
C8 XX |
ESC - Escape
Použitie: ESC immed, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Prevádza (realizuje) prístup k dátovej zbernici pre iné (ďalšie) rezidentné procesory. CPU treats ako NOP, ale umiestni pamäťový operand na zbernicu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
||
immed, reg |
2 |
9-20 |
? |
? |
|
? |
|
2 |
|
||
immed, mem |
2 |
9-20 |
? |
? |
|
? |
|
2-4 |
|
||
HLT - Halt CPU
Použitie: HLT
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia privedie CPU do stavu HALT. Dôsledkom toho je uvoľnenie zberníc a prerušenie behu programu. Z tohto stavu môžeme CPU dostať nasledujúcimi spôsobmi:
prerušením, ak je povolené
nemaskovaným preručením (NMI)
resetom CPU
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
5 |
4 |
|
5 |
|
1 |
F4 |
IDIV - Signed Integer Division
Použitie: IDIV zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
u |
- |
- |
- |
* |
* |
u |
u |
u |
Inštrukcia vykoná celočíselné delenie čísla so znamienkom. Ak je „zdroj“ bajtová hodnota, AX register je delený hodnotou v zdrojovom operande a výsledok je uložený v AL registri a zvyšok v AH registri. Ak je „zdroj“ slovo, DX:AX je delený hodnotou v zdrojovom operande, výsledok je uložený v AL registri a zvyšok v DX registri.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
101-112 |
17 |
19 |
19 |
|
16-20 |
3mo |
2 |
FX |
reg16 |
165-185 |
25 |
27 |
27 |
|
16-28 |
4mo |
2 |
FX |
reg32 |
- |
- |
43 |
43 |
|
17-45 |
4mo |
2 |
FX |
mem8 |
(107-118)+EA |
20 |
22 |
20 |
|
16-20 |
4mo |
2-4 |
FX |
mem16 |
(171-190)+EA |
38 |
30 |
28 |
|
16-28 |
4mo |
2-4 (W88=175-194+EA) |
FX |
mem32 |
- |
- |
46 |
44 |
|
17-45 |
4mo |
2-4 |
FX |
IMUL - Signed Multiply
Použitie: IMUL zdrojový
IMUL zdrojový, immed (286+)
IMUL cieľový, zdrojový, immed8 (286+)
IMUL cieľový, zdrojový (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
u |
u |
* |
Inštrukcia vykoná násobenie so znamienkom akumulátora a zdrojového operandu. Ak je zdrojový operand bajtová hodnota, je AL násobené hodnotou v zdrojovom operande a výsledok je uložený v AX. Ak je „zdroj“ word, AX je násobené hodnotou v zdrojovom operande, výsledok je uložený v DX:AX. Ďalšie varianty inštrukcie špecifikujú zdrojový operand a cieľový register.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Reg8 |
80-98 |
12 |
9-14 |
12-18 |
|
4 |
1mo |
2 |
FX |
Reg16 |
128-154 |
21 |
9-22 |
12-26 |
|
4 |
3mo |
2 |
FX |
Reg32 |
- |
- |
9-38 |
12-42 |
|
10 |
3mo |
2 |
FX |
Mem8 |
86-104 |
16 |
12-17 |
13-18 |
|
4 |
2mo |
2-4 |
FX |
Mem16 |
134-160 |
24 |
12-25 |
13-26 |
|
4 |
4mo |
2-4 |
FX |
Mem32 |
- |
- |
12-41 |
13-42 |
|
10 |
4mo |
2-4 |
FX |
reg16,reg16 |
- |
- |
9-22 |
13-26 |
|
4 |
2mo |
3-5 |
0F AF XX |
reg32,reg32 |
- |
- |
9-38 |
13-42 |
|
10 |
2mo |
3-5 |
0F AF XX |
reg16,mem16 |
- |
- |
12-25 |
13-26 |
|
4 |
2mo |
3-5 |
0F AF XX |
reg32,mem32 |
- |
- |
12-41 |
13-42 |
|
10 |
2mo |
3-5 |
0F AF XX |
reg16,immed |
- |
21 |
9-22 |
13-26 |
|
5 |
2mo |
3 |
6X |
reg32,immed |
- |
21 |
9-38 |
13-42 |
|
11 |
2mo |
3-6 |
6X |
reg16,reg16,immed |
- |
2 |
9-22 |
13-26 |
|
5 |
2mo |
3-6 |
6X |
reg32,reg32,immed |
- |
21 |
9-38 |
13-42 |
|
11 |
2mo |
3-6 |
6X |
reg16,mem16,immed |
- |
24 |
12-25 |
13-26 |
|
5 |
2mo |
3-6 |
6X |
reg32,mem32,immed |
- |
24 |
12-41 |
13-42 |
|
11 |
2mo |
3-6 |
6X |
IN - Input Byte or Word From Port
Použitie: IN accum, port
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia číta dáta z portu byte, word alebo dword do registra AL, AX, prípadne EAX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Accum, immed8 |
10/14 |
5 |
12 |
14 |
|
|
|
2 |
|
Accum, immed (PM) |
- |
6/26 |
|
|
|
|
|
2 |
|
Accum,DX |
8/12 |
5 |
13 |
14 |
|
|
|
1 |
|
Accum,DX (PM) |
- |
7/27 |
|
|
|
|
|
1 |
|
INC - Increment
Použitie: INC cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
- |
Inštrukcia priráta k operandu jednotku.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
3 |
2 |
2 |
1 |
|
|
1mo |
2 |
|
reg16 |
3 |
2 |
2 |
1 |
|
|
1mo |
1 |
|
reg32 |
3 |
2 |
2 |
1 |
|
|
1mo |
1 |
|
mem |
15+EA |
7 |
6 |
3 |
|
|
4mo |
2-4 (W88=23+EA) |
|
INS - Input String from Port (80188+)
Použitie: INS cieľový port
INSB
INSW
INSD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá údaje z portu do cieľového ES:(E)DI.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Cieľový port |
- |
5 |
15 |
17 |
|
|
|
1 |
|
Cieľový port (PM) |
- |
5 |
9/29 |
10/32 |
|
|
|
1 |
|
Bez |
- |
5 |
15 |
17 |
|
|
|
1 |
|
bez (PM) |
- |
5 |
9/29 |
10/32 |
|
|
|
1 |
|
INT - Interrupt
Použitie: INT num
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
0 |
0 |
- |
- |
- |
- |
- |
Inštrukcia vykoná softwarové prerušenie programu. Num udáva typ prerušenia.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
3 (constant) |
52/72 |
23+m |
33 |
26 |
|
|
|
2 |
|
3 (PM, same priv.) |
- |
40+m |
59 |
44 |
|
|
|
2 |
|
3 (PM, more priv.) |
- |
78+m |
99 |
71 |
|
|
|
2 |
|
3 (from VM86 to PL 0) |
- |
- |
119 |
82 |
|
|
|
2 |
|
3 (PM via task gate) |
- |
167+m |
TS |
37+TS |
|
|
|
2 |
|
immed8 |
51/71 |
23+m |
37 |
30 |
|
|
|
1 |
|
immed8 (PM, same priv.) |
- |
40+m |
59 |
44 |
|
|
|
1 |
|
immed8 (PM, more priv.) |
- |
78+m |
99 |
71 |
|
|
|
1 |
|
immed8 (from VM86 to PL 0) |
- |
- |
119 |
86 |
|
|
|
1 |
|
immed8 (PM, via task gate) |
- |
167+m |
TS |
37+TS |
|
|
|
1 |
|
INTO - Interrupt on Overflow
Použitie: INTO
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
* |
* |
- |
- |
- |
- |
- |
Inštrukcia INTO vyvolá prerušenie číslo 4.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
none: jump |
53/73 |
24+m |
35 |
28 |
|
|
|
1 |
|
no jump |
4 |
3 |
3 |
3 |
|
|
|
1 |
|
PM, same priv. |
- |
- |
59 |
46 |
|
|
|
1 |
|
PM, more priv. |
- |
- |
99 |
73 |
|
|
|
1 |
|
z VM86 do PL 0 |
- |
- |
119 |
84 |
|
|
|
1 |
|
PM, via task gate |
- |
- |
TS |
39+TS |
|
|
|
1 |
|
INVD - Invalidate Cache (486+)
Použitie: INVD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Flushes internú CPU cache. Dáta v write-back externej cache sú stratené.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
- |
- |
4 |
|
|
|
2 |
|
INVLPG - Invalidate Translation Look-Aside Buffer Entry (486+)
Použitie: INVLPG
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Invalidatuje jednostránkovú tabuľku vstupu v Translation Look-Aside Bufferi. Intel upozorňuje, že táto inštrukcia môže byť v budúcnosti implementovaná iným spôsobom.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
- |
- |
12 |
|
|
|
2 |
|
IRET/IRETD - Interrupt Return
Použitie: IRET
IRETD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
* |
* |
* |
* |
* |
* |
* |
* |
Inštrukcia sa používa pre návrat z prerušenia. Po vykonaní inštrukcie sa zo zásobníka vyberie hodnota pre register IP, CS a F a dôjde k skoku na adresu, ktorú dohromady vytvoria registre CS:IP.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
iret |
32/44 |
17+m |
22 |
15 |
|
|
|
1 |
|
iret (prot. mode) |
- |
31+m |
38 |
15 |
|
|
|
1 |
|
iret (to less privilege) |
- |
55+m |
82 |
36 |
|
|
|
1 |
|
iret (different task, NT=1) |
- |
169+m |
TS |
TS+32 |
|
|
|
1 |
|
Iretd |
- |
- |
22/38 |
15 |
|
|
|
1 |
|
iretd (to less privilege) |
- |
- |
82 |
36 |
|
|
|
1 |
|
iretd (to VM86 mode) |
- |
- |
60 |
15 |
|
|
|
1 |
|
iretd (different task, NT=1) |
- |
- |
TS |
TS+32 |
|
|
|
1 |
|
Jxx - Jump Instructions Table
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Mnemonic |
Meaning |
Jump Condition |
Podmienka cmp o1,o2 |
JA |
Jump if Above |
CF=0 a ZF=0 |
o1>p2 |
JAE |
Jump if Above or Equal |
CF=0 |
o1=>o2 |
JB |
Jump if Below |
CF=1 |
o1>p2 |
JBE |
Jump if Below or Equal |
CF=1 alebo ZF=1 |
o1<=o2 |
JC |
Jump if Carry |
CF=1 |
o1>p2 |
JCXZ |
Jump if CX Zero |
CX=0 |
CX=0 |
JE |
Jump if Equal |
ZF=1 |
ZF=1 |
JG |
Jump if Greater (signed) |
ZF=0 a SF=OF |
o1>p2 |
JGE |
Jump if Greater or Equal (signed) |
SF=OF |
o1=>o2 |
JL |
Jump if Less (signed) |
SF!=OF |
o1<o2 |
JLE |
Jump if Less or Equal (signed) |
ZF=1 alebo SF!=OF |
o1=>o2 |
JMP |
Unconditional Jump |
unconditional |
nepodmienený skok |
JNA |
Jump if Not Above |
CF=1 alebo ZF=1 |
o1<=o2 |
JNAE |
Jump if Not Above or Equal |
CF=1 |
o1>p2 |
JNB |
Jump if Not Below |
CF=0 |
o1=>o2 |
JNBE |
Jump if Not Below or Equal |
CF=0 a ZF=0 |
o1>o2 |
JNC |
Jump if Not Carry |
CF=0 |
o1=>o2 |
JNE |
Jump if Not Equal |
ZF=0 |
o1<>o2 |
JNG |
Jump if Not Greater (signed) |
ZF=1 alebo SF!=OF |
o1=>o2 |
JNGE |
Jump if Not Greater or Equal (signed) |
SF != OF |
o1<o2 |
JNL |
Jump if Not Less (signed) |
SF=OF |
o1=>o2 |
JNLE |
Jump if Not Less or Equal (signed) |
ZF=0 and SF=OF |
o1>p2 |
JNO |
Jump if Not Overflow (signed) |
OF=0 |
OF=0 |
JNP |
Jump if No Parity |
PF=0 |
PF=0 |
JNS |
Jump if Not Signed (signed) |
SF=0 |
SF=0 (číslo je kladné) |
JNZ |
Jump if Not Zero |
ZF=0 |
o1<>o2 |
JO |
Jump if Overflow (signed) |
OF=1 |
OF=1 |
JP |
Jump if Parity |
PF=1 |
PF=1 |
JPE |
Jump if Parity Even |
PF=1 |
PF=1 |
JPO |
Jump if Parity Odd |
PF=0 |
PF=0 |
JS |
Jump if Signed (signed) |
SF=1 |
SF=1 (číslo je záporné). |
JZ |
Jump if Zero |
ZF=1 |
ZF=1 |
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Jx: jump |
16 |
7+m |
7+m |
3 |
|
|
|
2 |
|
bez skoku |
4 |
3 |
3 |
1 |
|
|
|
|
|
Jx near-label |
- |
- |
7+m |
3 |
|
|
|
4 |
|
bez skoku |
- |
- |
3 |
1 |
|
|
|
|
|
JCXZ/JECXZ - Jump if Register (E)CX is Zero
Použitie: JCXZ label
JECXZ label (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Skok na návestie sa vykoná v prípade, že register CX, prípadne ECX, obsahuje nulu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
label: jump |
18 |
8+m |
9+m |
8 |
|
|
|
2 |
|
bez skoku |
6 |
4 |
5 |
5 |
|
|
|
|
|
JMP - Unconditional Jump
Použitie: JMP cieľ
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia vykoná nepodmienený skok. Skok je štandadne s -32768 až 32767 bytes od inštrukcie skoku.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
rel8 (relative) |
15 |
7+m |
7+m |
3 |
|
|
|
|
|
rel16 (relative) |
15 |
7+m |
7+m |
3 |
|
|
|
|
|
rel32 (relative) |
- |
- |
7+m |
3 |
|
|
|
|
|
reg16 (near, register indirect) |
11 |
7+m |
7+m |
5 |
|
|
|
|
|
reg32 (near, register indirect) |
- |
- |
7+m |
5 |
|
|
|
|
|
mem16 (near, mem indirect) |
18+EA |
11+m |
10+m |
5 |
|
|
|
|
|
mem32 (near, mem indirect) |
24+EA |
15+m |
10+m |
5 |
|
|
|
|
|
ptr16:16 (far, dword immed) |
- |
- |
12+m |
17 |
|
|
|
|
|
ptr16:16 (far, PM dword immed) |
- |
- |
27+m |
19 |
|
|
|
|
|
ptr16:16 (call gate, same priv.) |
- |
38+m |
45+m |
32 |
|
|
|
|
|
ptr16:16 (via TSS) |
- |
175+m |
TS |
42+TS |
|
|
|
|
|
ptr16:16 (via task gate) |
- |
180+m |
TS |
43+TS |
|
|
|
|
|
mem16:16 (far, indirect) |
- |
- |
43+m |
13 |
|
|
|
|
|
mem16:16 (far, PM indirect) |
- |
- |
31+m |
18 |
|
|
|
|
|
mem16:16 (call gate, same priv.) |
- |
41+m |
49+m |
31 |
|
|
|
|
|
mem16:16 (via TSS) |
- |
178+m |
5+TS |
41+TS |
|
|
|
|
|
mem16:16 (via task gate) |
- |
183+m |
5+TS |
42+TS |
|
|
|
|
|
ptr16:32 (far, 6 byte immed) |
- |
- |
12+m |
13 |
|
|
|
|
|
ptr16:32 (far, PM 6 byte immed) |
- |
- |
27+m |
18 |
|
|
|
|
|
ptr16:32 (call gate, same priv.) |
- |
- |
45+m |
31 |
|
|
|
|
|
ptr16:32 (via TSS) |
- |
- |
TS |
42+TS |
|
|
|
|
|
ptr16:32 (via task state) |
- |
- |
TS |
43+TS |
|
|
|
|
|
m16:32 (far, address at dword) |
- |
- |
43+m |
13 |
|
|
|
|
|
m16:32 (far, address at dword) |
- |
- |
31+m |
18 |
|
|
|
|
|
m16:32 (call gate, same priv.) |
- |
- |
49+m |
31 |
|
|
|
|
|
m16:32 (via TSS) |
- |
- |
5+TS |
41+TS |
|
|
|
|
|
m16:32 (via task state) |
- |
- |
5+TS |
42+TS |
|
|
|
|
|
LAHF - Load Register AH From Flags
Použitie: LAHF
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia skopíruje dolných 8-bitov flag registra (0-7) do registra AH. Register AH bude obsahovať tieto príznakové bity: S, Z, A, P, C, rozložené takto:
bit AH |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
príznak |
SF |
ZF |
x |
AF |
x |
PF |
x |
CF |
Bity označené x majú nedefinovanú hodnotu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
4 |
2 |
2 |
3 |
|
|
1 |
1 |
|
LAR - Load Access Rights (286+ protected)
Použitie: LAR cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
* |
- |
- |
- |
High byt cieľového registra je prepísaný hodnotou s access rights byte a low order byte je nulovo závislý na výbere v zdrojovom operande. Zero Flag je nastavený pri úspešnej load operácii.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,reg16 |
- |
14 |
15 |
11 |
|
|
|
3 |
|
reg32,reg32 |
- |
- |
15 |
11 |
|
|
|
3 |
|
reg16,mem16 |
- |
16 |
16 |
11 |
|
|
|
3-7 |
|
reg32,mem32 |
- |
- |
16 |
11 |
|
|
|
3-7 |
|
LDS - Load Pointer Using DS
Použitie: LDS cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia číta štyri bajty od adresy určenej zdrojovým operandom. Prvé dva bajty sa ukladajú do segmentového registra DS a ďalšie dva bajty do registra určeného cieľovým operandom.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,mem32 |
16+EA |
7 |
7 |
6 |
|
|
|
2-4 |
|
reg,mem (PM) |
- |
- |
22 |
12 |
|
|
|
5-7 |
|
LEA - Load Effective Address
Použitie: LEA cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia prenáša efektívnu adresu do registra. Transferuje offset adresu zo "zdrojový" do cieľového registera, čiže inštrukcia naplní obsah operandu adresou určeného pamäťového miesta.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,mem |
2+EA |
3 |
2 |
1 |
1 |
1 |
1 |
2-4 |
|
LEAVE - Restore Stack for Procedure Exit (80188+)
Použitie: LEAVE
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
5 |
4 |
5 |
|
|
3 |
1 |
|
LES - Load Pointer Using ES
Použitie: LES cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia číta štyri bajty od adresy určenej zdrojovým operandom. Prvé dva bajty sa ukladajú do segmentového registra ES a ďalšie dva bajty do registra určeného cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,mem |
16+EA |
7 |
7 |
6 |
|
|
|
2-4(W88=24+EA) |
|
reg,mem (PM) |
- |
- |
22 |
12 |
|
|
|
5-7 |
|
LFS - Load Pointer Using FS (386+)
Použitie: LFS cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá 32-bit pointer z pamäťového zdroja do cieľového registra a FS. Offset je umiestnený v cieľovom registeri a segment v FS.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,mem |
- |
- |
7 |
6 |
|
|
|
5-7 |
|
reg,mem (PM) |
- |
- |
22 |
12 |
|
|
|
5-7 |
|
LGDT - Load Global Descriptor Table (286+ privileged)
Použitie: LGDT zdroj
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá hodnotu z operandu do Global Descriptor Table (GDT) registra.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
mem64 |
- |
11 |
11 |
11 |
|
|
|
5 |
|
LIDT - Load Interrupt Descriptor Table (286+ privileged)
Použitie: LIDT zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá hodnotu z operandu do Interrupt Descriptor Table (IDT) registra.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
mem64 |
- |
12 |
11 |
11 |
|
|
|
5 |
|
LGS - Load Pointer Using GS (386+)
Použitie: LGS cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá 32-bit pointer z pamäťového zdroja do cieľového registra a GS. Offset je umiestnený v cieľovom registeri a segment v GS.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,mem |
- |
- |
7 |
6 |
|
|
|
5-7 |
|
reg,mem (PM) |
- |
- |
22 |
12 |
|
|
|
5-7 |
|
LLDT - Load Local Descriptor Table (286+ privileged)
Použitie: LLDT zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá hodnotu z operandu do Local Descriptor Table Registra (LDTR).
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
- |
17 |
20 |
11 |
|
|
|
3 |
|
mem16 |
- |
19 |
24 |
11 |
|
|
|
5 |
|
LMSW - Load Machine Status Word (286+ privileged)
Použitie: LMSW zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá Machine Status Word (MSW) z data found do "zdrojového"
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
- |
3 |
10 |
13 |
|
|
|
3 |
|
mem16 |
- |
6 |
13 |
13 |
|
|
|
5 |
|
LOCK - Lock Bus
Použitie: LOCK
LOCK: (386+ prefix)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
0 |
0 |
1 |
|
|
|
1 |
|
LODS - Load String (Byte, Word or Double)
Použitie: LODS zdrojový
LODSB zdrojový
LODSW zdrojový
LODSD zdrojový (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia prenáša do registra AL, prípadne AX byte (bajt), word (slovo) z adresy určenej registrami DS:[SI]. Po prenesení položky sa k registru SI pripočíta, alebo odčíta (podľa nastavenia príznaku Direction (ak je set –, ak nie je +), dĺžka prenášanej položky v bajtoch. Ak použijeme pred inštrukciou prefix REP, prenášanie sa ukončí po prenesení takého množstva položiek aké obsahuje register CX. Ak nepoužijeme žiadny prefix, uskutoční sa presun iba jednej položky dát bez ohľadu na výsledok porovnania.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
zdrojový |
12/16 |
5 |
5 |
5 |
|
|
|
1 |
|
LOOP - Decrement CX and Loop if CX Not Zero
Použitie: LOOP label
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Zníži hodnotu CX o 1 a predá kontrolu na "label" ak CX je nenulový. "label" operand musí byť v rozsahu -128 alebo 127 bytov vzdialený od loop inštrukcie. V opačnom prípade sa pokračuje vo vykonávaní nasledujúcej inštrukcie.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
label: jump |
18 |
8+m |
11+m |
6 |
|
|
|
2 |
|
no jump |
5 |
4 |
|
2 |
|
|
|
2 |
|
LOOPE/LOOPZ - Loop While Equal / Loop While Zero
Použitie: LOOPE label
LOOPZ label
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Zníži hodnotu CX o 1 (bez modifikácie flagov) a ak je CX nenulový a Zero Flag je nastavený predá kontrolu na "label". "label" operand musí byť v rozsahu -128 alebo 127 bytov vzdialený od loop inštrukcie. V opačnom prípade sa pokračuje vo vykonávaní nasledujúcej inštrukcie.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
label: jump |
18 |
8+m |
11+m |
9 |
|
|
|
2 |
|
no jump |
5 |
4 |
|
6 |
|
|
|
|
|
LOOPNZ/LOOPNE - Loop While Not Zero / Loop While Not Equal
Použitie: LOOPNZ label
LOOPNE label
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Zníži hodnotu CX o 1 (bez modifikácie flagov) a predá kontrolu na "label", ak CX je nenulový a Zero Flag je clear. "label" operand musí byť v rozsahu -128 alebo 127 bytov, vzdialený od loop inštrukcie. V opačnom prípade sa pokračuje vo vykonávaní nasledujúcej inštrukcie.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
label: jump |
19 |
8+m |
11+m |
9 |
|
|
|
2 |
|
no jump |
5 |
4 |
|
6 |
|
|
|
|
|
LSL - Load Segment Limit (286+ protected)
Použitie: LSL cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
* |
- |
- |
- |
Nahrá segment limit zo selectora do cieľového registera. Ak sa nahranie uskutoční úspešne, príznak Zero je nastavený, inak je znulovaný.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,reg16 |
- |
14 |
20/25 |
10 |
|
|
|
3 |
|
reg32,reg32 |
- |
- |
20/25 |
10 |
|
|
|
3 |
|
reg16,mem16 |
- |
16 |
21/26 |
10 |
|
|
|
5 |
|
reg32,mem32 |
- |
- |
21/26 |
10 |
|
|
|
5 |
|
LSS - Load Pointer Using SS (386+)
Použitie: LSS cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá 32-bit pointer z pamäťového zdroja do cieľového registra a SS. Offset je umiestnený v cieľovom registeri a segment v SS.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,mem |
- |
- |
7 |
6 |
|
|
|
5-7 |
|
reg,mem (PM) |
- |
- |
22 |
12 |
|
|
|
5-7 |
|
LTR - Load Task Register (286+ privileged)
Použitie: LTR zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nahrá platný task register s hodnotou špecifikovanou v "zdrojový".
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,mem |
- |
17 |
23 |
20 |
|
|
|
3 |
|
reg,mem (PM) |
- |
19 |
27 |
20 |
|
|
|
5 |
|
MOV - Move Byte or Word
Použitie: MOV cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Táto inštrukcia presúva hodnotu z miesta zdrojového operandu do miesta cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
Reg,reg |
2 |
2 |
2 |
1 |
1 |
1 |
1 |
2 |
|
Mem,reg |
9+EA |
3 |
2 |
1 |
1 |
1 |
1 |
2-4 (W88=13+EA) |
|
Reg,mem |
8+EA |
5 |
4 |
1 |
1 |
1 |
1 |
2-4 (W88=12+EA) |
|
Mem,immed |
10+EA |
3 |
2 |
1 |
1 |
1 |
1 |
3-6 (W88=14+EA) |
|
Reg,immed |
4 |
2 |
2 |
1 |
1 |
1 |
1 |
2-3 |
|
Mem,accum |
10 |
3 |
2 |
1 |
1 |
1 |
1 |
3 (W88=14) |
|
Accum,mem |
10 |
5 |
4 |
1 |
1 |
1 |
1 |
3 (W88=14) |
|
Segreg,reg16 |
2 |
2 |
2 |
3 |
|
|
|
2 | |
Segreg,mem16 |
8+EA |
5 |
5 |
9 |
|
|
|
2-4 (W88=12+EA) |
|
reg16,segreg |
2 |
2 |
2 |
3 |
|
|
|
2 | |
Mem16,segreg |
9+EA |
3 |
2 |
3 |
|
|
|
2-4 (W88=13+EA) |
|
reg32,CR0/CR2/CR3 |
- |
- |
6 |
4 |
|
|
|
|
|
CR0,reg32 |
- |
- |
10 |
16 |
|
|
|
|
|
CR2,reg32 |
- |
- |
4 |
4 |
|
|
|
3 |
|
CR3,reg32 |
- |
- |
5 |
4 |
|
|
|
3 |
|
reg32,DR0-DR3 |
- |
- |
22 |
10 |
|
|
|
3 |
|
reg32,DR6/DR7 |
- |
- |
22 |
10 |
|
|
|
3 |
|
DR0-DR3,reg32 |
- |
- |
22 |
11 |
|
|
|
3 |
|
DR6/DR7,reg32 |
- |
- |
16 |
11 |
|
|
|
3 |
|
reg32,TR6/TR7 |
- |
- |
12 |
4 |
|
|
|
3 |
|
TR6/TR7,reg32 |
|
|
12 |
4 |
|
|
|
3 |
|
Reg32,TR3 |
|
|
|
|
|
|
|
3 |
|
TR3,reg32 |
|
|
|
|
|
|
|
6 |
MOVS - Move String (Byte alebo Word)
Použitie: MOVS cieľový, zdrojový
MOVSB
MOVSW
MOVSD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia sa používa ku kopírovaniu bloku pamäti na iné miesto v pamäti. Začiatok kopírovaného bloku je určený dvojicou registrov DS:SI. Adresa, kam sa má blok skopírovať, je určená dvojicou registrov ES:DI. Po kopírovaní sa obsah registrov SI a DI zväčší, resp. zmenší (podľa príznaku Direction flag) o 1 alebo 2, v závislosti od veľkosti kopírovaných dát. Kopírovanie prebieha buď: po 8-bitoch MOVSB DI, SI <- DI, SI +/- 1, alebo po 16-bitoch MOVSW DI, SI <- DI, SI +/- 2.
Maximálny počet kopírovaných položiek určuje register CX. Ak použijeme pred inštrukciou prefix REP (opakuj, pokiaľ je CX>0), kopírovanie sa ukončí po skopírovaní takého množstva položiek, aké udáva register CX. Ak nepoužijeme žiadny prefix, uskutoční sa kopírovanie iba prvej položky bloku dát bez ohľadu na obsah registra CX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
cieľový, zdrojový |
18 |
5 |
7 |
7 |
|
|
|
1(W88=26) |
|
MOVSX - Move with Sign Extend (386+)
Použitie: MOVSX cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Kopíruje hodnoty zo zdrojového operandu do cieľového registera so sign extended.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
- |
- |
3 |
3 |
|
|
|
3 |
|
reg,mem |
- |
- |
6 |
3 |
|
|
|
3-7 |
|
MOVZX - Move with Zero Extend (386+)
Použitie: MOVZX cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Kopíruje hodnoty zo zdrojového operandu do cieľového registera so zeroes extended.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
- |
- |
3 |
3 |
|
|
|
3 |
|
reg,mem |
- |
- |
6 |
3 |
|
|
|
3-7 |
|
MUL - Unsigned Multiply
Použitie: MUL zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- | - | u |
u |
u |
u |
* |
Inštrukcia sa používa k násobeniu so znamienkom. Násobenie sa vykonáva podľa veľkosti zdrojového operandu takto:
1. zdrojový operand je 8-bitový (Byte)- Operand sa vynásobí registrom AL a výsledok sa uloží do registra AX. Ak je výsledok väčší ako bajt, nastavia sa príznaky Overflow a Carry, v opačnom prípade sa obidva príznaky vynulujú.
2. zdrojový operand je 16-bitový (Word)- Operand sa vynásobí registrom AX a výsledok sa uloží do registrov DX, AX tak, že nižšia časť výsledku je v registri AX a vyššia časť je v registri DX. Ak je výsledok väčší ako slovo (word), nastavia sa príznaky Overflow a Carry, v opačnom prípade sa obidva príznaky vynulujú.
3. zdrojový operand je 32-bitový (DoubleWord)- Operand sa vynásobí registrom EAX a výsledok sa uloží do registrov EDX, EAX tak, že nižšia časť výsledku je v registri EAX a vyššia časť je v registri EDX. Ak je výsledok väčší ako slovo (word), nastavia sa príznaky Overflow a Carry, v opačnom prípade sa obidva príznaky vynulujú.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
70-77 |
13 |
9-14 |
13-18 |
|
|
|
2 |
|
reg16 |
118-113 |
21 |
9-22 |
13-26 |
|
|
|
2 |
|
reg32 |
- |
- |
9-38 |
13-42 |
|
|
|
2-4 |
|
mem8 |
(76-83)+EA |
16 |
12-17 |
13-18 |
|
|
|
2-4 |
|
mem16 |
(124-139)+EA |
24 |
12-25 |
13-26 |
|
|
|
2-4 |
|
mem32 |
- |
- |
12-21 |
13-42 |
|
|
|
2-4 |
|
NEG - Two's Complement Negation
Použitie: NEG cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- | - |
- |
* |
* |
* |
* |
* |
Inštrukcia zmení znamienko cieľového operandu nasledovne: cieľový = (0 - cieľový)
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg |
3 |
2 |
2 |
1 |
|
|
|
2 |
|
mem |
16+EA |
7 |
6 |
3 |
|
|
|
2-4 (W88=24+EA) |
|
NOP - No Operation (90h)
Použitie: NOP
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Toto nie je inštrukcia. Používa sa napr.: pre vyplnenie miesta v programe pre neskoršie vloženie ďalších dát (v origináli inštrukcia XCHG AL,AL ).
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
3 |
3 |
3 |
1 |
|
|
|
1 |
|
NOT - One's Compliment Negation (Logický NOT)
Použitie: NOT cieľ
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia vykoná negáciu všetkých bitov cieľového operandu tak, že bit, ktorý má hodnotu 1 bude mať hodnotu 0 a naopak.
NOT |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
Výsledok |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg |
3 |
2 |
2 |
1 |
|
|
|
2 |
|
mem |
16+EA |
7 |
6 |
3 |
|
|
|
2-4 (W88=24+EA) |
|
OR - Inclusive Logical OR
Použitie: OR cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
0 |
- |
- |
- |
* |
* |
u |
* |
0 |
Inštrukcia vykoná logický súčet operandov. Výsledok sa uloží do cieľového operanda.
OR |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
|
Výsledok |
1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
|
|
|
2 |
|
mem,reg |
16+EA |
7 |
7 |
3 |
|
|
|
2-4 (W88=24+EA) |
|
reg,mem |
9+EA |
7 |
6 |
2 |
|
|
|
2-4 (W88=13+EA) |
|
reg,immed |
4 |
3 |
2 |
1 |
|
|
|
3-4 |
|
mem8,immed8 |
17+EA |
7 |
7 |
3 |
|
|
|
3-6 |
|
mem16,immed16 |
25+EA |
7 |
7 |
3 |
|
|
|
3-6 |
|
accum,immed |
4 |
3 |
2 |
1 |
|
|
|
2-3 |
|
OUT - Output Data to Port
Použitie: OUT port,accum
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia zapisuje byte z registra AL, word z registra AX alebo dword z registra EAX na hardwarový port špecifikovaný adresou. Ak je číslo portu v rozsahu 0-255, môže byť použitá číselná hodnota. Ak je číslo väčšie ako 255, musí byť špecifikovaný v DX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
immed8,accum |
10/14 |
3 |
10 |
16 |
|
|
|
2 |
|
immed8,accum (PM) |
- |
- |
4*24 |
11/31/29 |
|
|
|
2 |
|
DX,accum |
8/12 |
3 |
11 |
16 |
|
|
|
1 |
|
DX,accum (PM) |
- |
- |
5/25 |
10/30/29 |
|
|
|
1 |
|
OUTS - Output String to Port (80188+)
Použitie: OUTS port,zdrojový
OUTSB port,zdrojový
OUTSW port,zdrojový
OUTSD port,zdrojový (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Prenáša byte, word alebo doubleword zo "zdroja" do hardwarového portu špecifikovaného v DX.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
port,zdrojový |
- |
5 |
14 |
17 |
|
|
|
1 |
|
port,zdrojový (PM) |
- |
- |
8/28 |
10/32/30 |
|
|
|
1 |
|
POP - Pop Word off Stack
Použitie: POP cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia vyberie 16-bitové číslo (word) z vrcholu zásobníka (SS:SP) a uloží ho do cieľového operandu. Potom sa register SP zväčší o 2 a ukazuje na predposlednú vloženú hodnotu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
8 |
5 |
4 |
4 |
|
|
|
1 |
|
reg32 |
4 |
- |
- |
4 |
|
|
|
1 |
|
mem16 |
17+EA |
5 |
5 |
6 |
|
|
|
2-4 |
|
mem32 |
5 |
- |
- |
6 |
|
|
|
2-4 |
|
segreg |
8 |
5 |
7 |
3 |
|
|
|
1 |
|
POPA/POPAD - Pop All Registers onto Stack (80188+)
Použitie: POPA
POPAD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Popne vrchných 8 slov stacku do 8 hlavných 16/32 bit registrov v nasledujúcom poradí: (E)DI, (E)SI, (E)BP, (E)SP, (E)DX, (E)CX a (E)AX. (E)SP hodnota z stacku je vymazaná.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
19 |
24 |
9 |
|
|
|
1 |
|
POPF/POPFD - Pop Flags off Stack
Použitie: POPF
POPFD (386+)
Modifikuje všetky flagy.
Inštrukcia vyberie flag register zo zásobníka.
Popne word/doubleword z stacku do Flags Registra a inkrementne SP o 2 (pre POPF) alebo 4 (pre POPFD).
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
8/12 |
5 |
5 |
9 |
|
|
|
1 (W88=12) |
|
nie je (PM) |
- |
- |
5 |
6 |
|
|
|
1 |
|
PUSH - Push Word onto Stack
Použitie: PUSH zdrojový
PUSH immed (80188+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia vloží 16 alebo 32-bitové číslo (word alebo dword), alebo obsah registra, pamäti, do zásobníka. Postup je nasledovný: najprv sa register SP zmenší o 2 alebo 4, takže ukazuje na voľné miesto. Potom sa zapíše obsah registra, pamäti alebo konštanta, na toto voľné miesto.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
11/15 |
3 |
2 |
1 |
|
|
|
1 |
|
reg32 |
- |
- |
2 |
1 |
|
|
|
1 |
|
mem16 |
16+EA |
5 |
5 |
4 |
|
|
|
2-4 W88=24+EA) |
|
mem32 |
- |
- |
5 |
4 |
|
|
|
2-4 |
|
segreg |
10/14 |
3 |
2 |
3 |
|
|
|
1 |
|
immed |
- |
3 |
2 |
1 |
|
|
|
2-3 |
|
PUSHA/PUSHAD - Push All Registers onto Stack (80188+)
Použitie: PUSHA
PUSHAD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Pushne všetky hlavné registre do stacku v nasledujúcom poradí: (E)AX, (E)CX, (E)DX, (E)BX, (E)SP, (E)BP, (E)SI, (E)DI. Hodnota SP je rovnaká ako pred pushom.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
19 |
24 |
11 |
|
|
|
1 |
|
PUSHF/PUSHFD - Push Flags onto Stack
Použitie: PUSHF
PUSHFD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Inštrukcia uloží flag register do zásobníka. PUSHF uchová 16 bitovú hodnotu, PUSHFD 32 bitovú.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
10/14 |
3 |
4 |
4 |
|
|
|
1 |
|
nie je (PM) |
- |
- |
4 |
3 |
|
|
|
1 |
|
RCL - Rotate Through Carry Left
Použitie: RCL cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná rotáciu cieľového operandu doľava cez CF o toľko bitov, koľko určuje 2. operand počet.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
9 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
10 |
4 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
9 |
8-30 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
10 |
9-31 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
9 |
8-30 |
|
|
|
3 |
|
mem,immed8 |
- |
8+n |
10 |
9-31 |
|
|
|
3-5 |
|
RCR - Rotate Through Carry Right
Použitie: RCR cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná rotáciu cieľového operandu doprava cez CF o toľko bitov, koľko určuje 2. operand počet.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
9 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
10 |
4 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
9 |
8-30 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
10 |
9-31 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
9 |
8-30 |
|
|
|
3 |
|
mem,immed8 |
- |
8+n |
10 |
9-31 |
|
|
|
3-5 |
|
REP - Repeat String Operation
Použitie: REP
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Opakuje spustenie reťazca inštrukcií pokiaľ CX je rôzne od 0 a Zero Flag je nastavený. CX je dekrementovaný a Zero Flag testovaný po vykonaní reťazca operácií. Prefix zabezpečí opakovanie niektorej z nasledujúcich inštrukcií: MOVS, LODS, CMPS, SCAS.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
|
|
1 |
|
REPE/REPZ - Repeat Equal / Repeat Zero
Použitie:REPE
REPZ
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Opakuje spustenie reťazca inštrukcií pokiaľ CX je rôzne od 0 a Zero Flag je nastavený na 1. CX je dekrementovaný a Zero Flag testovaný po vykonaní reťazca operácií. Prefix zabezpečí opakovanie niektorej z nasledujúcich inštrukcií: MOVS, LODS, CMPS, SCAS.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
|
|
1 |
|
REPNE/REPNZ - Repeat Not Equal / Repeat Not Zero
Použitie: REPNE
REPNZ
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Opakuje spustenie reťazca inštrukcií pokiaľ CX je rôzne od 0 a Zero Flag je 0. CX je dekrementovaný a Zero Flag testovaný po vykonaní reťazca operácií. Prefix zabezpečí opakovanie niektorej z nasledujúcich inštrukcií: MOVS, LODS, CMPS, SCAS.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
- |
2 |
2 |
2 |
|
|
|
1 |
|
RET/RETF - Return From Procedure
Použitie: RET nBytes
RETF nBytes
RETN nBytes
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná návrat z procedúry (podprogramu) na adresu inštrukcie uchovanej v zásobníku. Operand určuje koľko bajtov sa odstráni zo zásobníka, po vybratí návratovej adresy.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
retn |
16/20 |
11+m |
10+m |
5 |
|
|
|
1 |
|
retn immed |
20/24 |
11+m |
10+m |
5 |
|
|
|
3 |
|
retf |
26/34 |
15+m |
18+m |
13 |
|
|
|
1 |
|
retf (PM, same priv.) |
|
- |
32+m |
18 |
|
|
|
1 |
|
retf (PM, lesser priv.) |
|
- |
68 |
33 |
|
|
|
1 |
|
retf immed |
25/33 |
15+m |
18+m |
14 |
|
|
|
3 |
|
retf immed (PM, same priv.) |
|
|
32+m |
17 |
|
|
|
1 |
|
retf immed (PM, lesser priv.) |
|
|
68 |
33 |
|
|
|
1 |
|
ROL - Rotate Left
Použitie: ROL cieľový, počet
Použitie: ROR cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná rotáciu cieľového operandu doľava o "počet" bitov, určených 2. operandom.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
3 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
7 |
4 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
3 |
3 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
7 |
4 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
3 |
2 |
|
|
|
3 |
|
mem,immed8 |
- |
8+n |
7 |
4 |
|
|
|
3-5 |
|
ROR - Rotate Right
Použitie: ROR cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná rotáciu cieľového operandu doprava o "počet" bitov, určených 2. operandom.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
3 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
7 |
4 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
3 |
3 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
7 |
4 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
3 |
2 |
|
|
|
3 |
|
mem,immed8 |
- |
8+n |
7 |
4 |
|
|
|
3-5 |
|
SAHF - Store AH Register into FLAGS
Použitie: SAHF
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia uloží obsah bitov 0-7 registra AH do nižšieho bajtu flag registra. Toto zahrňuje AF, CF, PF, SF a ZF.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
4 |
2 |
3 |
2 |
|
|
|
1 |
|
SAL - Shift Arithmetic Left
Použitie: SAL cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná posun cieľového operandu doľava o toľko bitov, koľko určuje 2. operand.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
3 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
7 |
4 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
3 |
3 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
7 |
4 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
3 |
2 |
1 |
1 |
1 |
3 |
|
mem,immed8 |
- |
8+n |
7 |
4 |
|
|
|
3-5 |
|
SAR - Shift Arithmetic Right
Použitie: SAR cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
|
* |
* |
Inštrukcia vykoná posun cieľového operandu doľava o toľko bitov, koľko určuje 2. operand.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
3 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
7 |
3 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
3 |
3 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
7 |
4 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
3 |
2 |
|
|
|
3 |
|
mem,immed8 |
- |
8+n |
7 |
4 |
|
|
|
3-5 |
|
SBB - Subtract with Borrow/Carry
Použitie: SBB cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia prevedie odčítanie dvoch operandov s pretečením (v CF). Výsledok sa uloží do cieľového operandu.
cieľový <- ( cieľový – zdrojový – CF )
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
|
|
|
2 |
|
mem,reg |
16+EA |
7 |
6 |
3 |
|
|
|
2-4 (W88=24+EA) |
|
reg,mem |
9+EA |
7 |
7 |
2 |
|
|
|
2-4 (W88=13+EA) |
|
reg,immed |
4 |
3 |
2 |
1 |
|
|
|
3-4 |
|
mem,immed |
17+EA |
7 |
7 |
3 |
|
|
|
3-6 (W88=25+EA) |
|
accum,immed |
4 |
3 |
2 |
1 |
|
|
|
2-3 |
|
SCAS - Scan String (Byte, Word or Doubleword)
Použitie: SCAS string
SCASB
SCASW
SCASD (386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia sa používa k vyhľadávaniu bajtu, slova uloženého v registri AL, alebo AX v bloku dát uloženom v pamäti na adrese určenej dvojicou registrov ES:DI. Po porovnaní obsahu pamäti s príslušným registrom sa obsah registra DI zväčší, resp. zmenší (podľa príznaku Direction flag), o 1 alebo 2, v závislosti od veľkosti dát, ktoré sa vyhľadávajú.
Vyhľadávanie prebieha buď:
po 16-bitoch alebo SCASW DI, SI ← DI, SI +/- 2
Maximálny počet vyhľadávaných položiek určuje register CX. Ak použijeme pred inštrukciou prefix REPE (opakuj, pokiaľ je rovné), vyhľadávanie sa ukončí buď pri nájdení prvého rozdielu medzi blokom dát a registrom AL, prípadne AX, alebo po vyhľadaní takého množstva položiek, aké udáva register CX. Môžeme tiež pred inštrukciou použiť prefix REPNE (opakuj, pokiaľ je rôzne), v tom prípade sa vyhľadávanie ukončí buď pri nájdení prvej zhody s registrom AL, AX s blokom dát, alebo po vyhľadaní takého množstva položiek, aké udáva register CX. Ak nepoužijeme žiadny prefix, uskutoční sa vyhľadanie iba prvej položky bloku dát s registrom AL, AX bez ohľadu na výsledok vyhľadávania.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
String |
15 |
7 |
7 |
6 |
|
|
|
1 (W88=19) |
|
SETAE/SETNB - Set if Above or Equal / Set if Not Below (386+)
Použitie: SETAE cieľový
SETNB cieľový
(unsigned, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak CF je 0, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETB/SETNAE - Set if Below / Set if Not Above or Equal (386+)
Použitie: SETB cieľový
SETNAE cieľový
(unsigned, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak CF je 1, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETBE/SETNA - Set if Below or Equal / Set if Not Above (386+)
Použitie: SETBE cieľový
SETNA cieľový
(unsigned, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak CF alebo ZF je 1, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETE/SETZ - Set if Equal / Set if Zero (386+)
Použitie: SETE cieľový
SETZ cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak ZF je 1 inak, nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETNE/SETNZ - Set if Not Equal / Set if Not Zero (386+)
Použitie: SETNE cieľový
SETNZ cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak ZF je 0, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETL/SETNGE - Set if Less / Set if Not Greater or Equal (386+)
Použitie: SETL cieľový
SETNGE cieľový
(signed, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Sign Flag nie je rovný Overflow Flag, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETGE/SETNL - Set if Greater or Equal / Set if Not Less (386+)
Použitie: SETGE cieľový
SETNL cieľový
(signed, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Sign Flag je rovný Overflow Flag, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETLE/SETNG - Set if Less or Equal / Set if Not greater or Equal (386+)
Použitie: SETLE cieľový
SETNG cieľový
(signed, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Zero Flag je 1, alebo Sign Flag nie je rovný Overflow Flag, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETG/SETNLE - Set if Greater / Set if Not Less or Equal (386+)
Použitie: SETG cieľový
SETNLE cieľový
(signed, 386+)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Zero Flag je 0, alebo Sign Flag je rovný Overflow Flag, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETS - Set if Signed (386+)
Použitie: SETS cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Sign Flag je 1, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETNS - Set if Not Signed (386+)
Použitie: SETNS cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Sign Flag je 0, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETC - Set if Carry (386+)
Použitie: SETC cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Carry Flag je 1, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
| 3 |
|
SETNC - Set if Not Carry (386+)
Použitie: SETNC cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Carry Flag je 0, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETO - Set if Overflow (386+)
Použitie: SETO cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Overflow Flag je 1, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETNO - Set if Not Overflow (386+)
Použitie: SETNO cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Overflow Flag je 0, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETP/SETPE - Set if Parity / Set if Parity Even (386+)
Použitie: SETP cieľový
SETPE cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Parity Flag je 1, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SETNP/SETPO - Set if No Parity / Set if Parity Odd (386+)
Použitie: SETNP cieľový
SETPO cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Nastaví byte v operande na 1 ak Parity Flag je 0, inak nastaví operand na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg8 |
- |
- |
4 |
3 |
|
|
|
3 |
|
mem8 |
- |
- |
5 |
4 |
|
|
|
3 |
|
SGDT - Store Global Descriptor Table (286+ privileged)
Použitie: SGDT cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Prenesie Global Descriptor Table (GDT) Register do cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
mem64 |
- |
11 |
9 |
10 |
|
|
|
5 |
|
SIDT - Store Interrupt Descriptor Table (286+ privileged)
Použitie: SIDT cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Prenesie Interrupt Descriptor Table (IDT) Register do cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
mem64 |
- |
12 |
9 |
10 |
|
|
|
5 |
|
SHL - Shift Logical Left
Použitie: SHL cieľový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
- |
- |
- |
- |
* |
Inštrukcia vykoná posun cieľového operandu doľava o toľko bitov, koľko určuje 2. operand.
CF ← 7 bit ← 0 bit ← 0
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
3 |
3 |
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
7 |
4 |
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
3 |
3 |
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
7 |
4 |
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
3 |
2 |
1 |
1 |
1 |
3 |
|
mem,immed8 |
- |
8+n |
7 |
4 |
|
|
|
3-5 |
|
SHR - Shift Logical Right
Použitie: SHR cieľový, počet
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
|
* |
* |
Inštrukcia vykoná posun cieľového operandu doprava o toľko bitov, koľko určuje 2. operand.
0 ® 7 bit ® 0 bit ® CF
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,1 |
2 |
2 |
3 |
|
|
|
|
2 |
|
mem,1 |
15+EA |
7 |
7 |
|
|
|
|
2-4 (W88=23+EA) |
|
reg,CL |
8+4n |
5+n |
3 |
|
|
|
|
2 |
|
mem,CL |
20+EA+4n |
8+n |
7 |
|
|
|
|
2-4 (W88=28+EA+4n) |
|
reg,immed8 |
- |
5+n |
3 |
|
|
|
|
3 |
|
mem,immed8 |
- |
8+n |
7 |
|
|
|
|
3-5 |
|
SHLD/SHRD - Double Precision Shift (386+)
Použitie: SHLD cieľový, zdrojový, počet
SHRD cieľový, zdrojový, počet
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
|
- |
- |
- |
* |
* |
|
* |
* |
Inštrukcia vykoná posun cieľového operandu doľava/doprava o toľko bitov, koľko určuje 2. operand a bit positions opened are filled with the most significant bits of "zdrojový". Je použitých len 5 nižších bitov počtu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16,reg16,immed8 |
- |
- |
3 |
2 |
|
|
|
4 |
|
reg32,reg32,immed8 |
- |
- |
3 |
2 |
|
|
|
4 |
|
mem16,reg16,immed8 |
- |
- |
7 |
3 |
|
|
|
6 |
|
mem32,reg32,immed8 |
- |
- |
7 |
3 |
|
|
|
6 |
|
reg16,reg16,CL |
- |
- |
3 |
3 |
|
|
|
3 |
|
reg32,reg32,CL |
- |
- |
3 |
3 |
|
|
|
3 |
|
mem16,reg16,CL |
- |
- |
7 |
4 |
|
|
|
5 |
|
mem32,reg32,CL |
- |
- |
7 |
4 |
|
|
|
5 |
|
SLDT - Store Local Descriptor Table (286+ privileged)
Použitie: SLDT cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Prenesie Local Descriptor Table (LDT) Register do cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
- |
2 |
2 |
2 |
|
|
|
3 |
|
mem16 |
- |
2 |
2 |
3 |
|
|
|
5 |
|
SMSW - Store Machine Status Word (286+ privileged)
Použitie: SMSW cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Prenesie Machine Status Word (MSW) do cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
- |
2 |
10 |
2 |
|
|
|
3 |
|
mem16 |
- |
3 |
3 |
3 |
|
|
|
5 |
|
STC - Set Carry
Použitie: STC
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
1 |
Nastaví Carry Flag na 1.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
|
|
1 |
|
STD - Set Direction Flag
Použitie: STD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
1 |
- |
- |
- |
- |
- |
- |
- |
Nastaví Direction Flag na 1.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
2 |
|
|
|
1 |
|
STI - Set Interrupt Flag (Enable Interrupts)
Použitie: STI
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
1 |
- |
- |
- |
- |
- |
- |
Inštrukcia nastaví príznak Interrupt na 1 a tým povolí rozpoznávanie všetkých hardwarových prerušení.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
2 |
2 |
2 |
5 |
|
|
|
1 |
|
STOS - Store String (Byte, Word or Doubleword)
Použitie: STOS cieľový
STOSB
STOSW
STOSD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia sa používa k uloženiu registra AL, AX do pamäti na adresu určenú dvojicou registrov ES:(E)DI. Po uložení položky sa k registru (E)DI pripočíta, resp. odpočíta (podľa príznaku Direction flag), dĺžka ukladanej položky v bajtoch. Ak použijeme pred inštrukciou prefix REP (opakuj, pokiaľ je CX>0), ukladanie sa ukončí po uložení takého množstva položiek, aké udáva register CX. Ak nepoužijeme žiadny prefix, uskutoční sa uloženie iba prvej položky bez ohľadu na register CX
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
cieľový |
11 |
3 |
4 |
5 |
|
|
|
1 (W88=15) |
|
STR - Store Task Register (286+ privileged)
Použitie: STR cieľový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
Uloží Task Register do cieľového operandu.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
- |
2 |
2 |
2 |
|
|
|
3 |
|
mem16 |
- |
3 |
2 |
3 |
|
|
|
5 |
|
SUB - Subtract
Použitie: SUB cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
* |
- |
- |
- |
* |
* |
* |
* |
* |
Inštrukcia prevedie odčítanie cieľového a zdrojového operandu. Výsledok sa uloží do cieľového operandu.
cieľový <- zdrojový - cieľový
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
1 |
1 |
1 |
1 |
1 |
2 |
|
mem,reg |
16+EA |
7 |
6 |
3 |
|
|
|
2-4 (W88=24+EA) |
|
reg,mem |
9+EA |
7 |
7 |
2 |
|
|
|
2-4 (W88=13+EA) |
|
reg,immed |
4 |
3 |
2 |
1 |
1 |
1 |
1 |
3-4 |
|
mem,immed |
17+EA |
7 |
7 |
3 |
|
|
|
3-6 (W88=25+EA) |
|
accum,immed |
4 |
3 |
2 |
1 |
1 |
1 |
1 |
2-3 |
|
TEST - Test For Bit Pattern
Použitie: TEST cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
|
0 |
- |
- |
- |
* |
* |
u |
* |
0 |
Inštrukcia nastaví príznaky tak, ako keby sa vykonala operácia AND medzi operandami 1 a 2. Na rozdiel od inštrukcie AND sa operandy nemenia.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
|
reg,reg |
3 |
2 |
1 |
1 |
|
|
|
2 |
|
|
reg,mem |
9+EA |
6 |
5 |
1 |
|
|
|
2-4 (W88=13+EA) |
|
|
mem,reg |
9+EA |
6 |
5 |
2 |
|
|
|
2-4 (W88=13+EA) |
|
|
reg,immed |
5 |
3 |
2 |
1 |
|
|
|
3-4 |
|
|
mem,immed |
11+EA |
6 |
5 |
2 |
|
|
|
3-6 |
|
accum,immed |
4 |
3 |
2 |
1 |
|
|
|
2-3 |
|
VERR - Verify Read (286+ protected)
Použitie: VERR zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
* |
- |
- |
- |
Kontroluje špecifikovaný segment sektor na správnosť a je čitateľom v privilegovanom stupni. Ak je segment čitateľný Zero Flag je nastavený na 1, inak na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg16 |
- |
14 |
10 |
11 |
|
|
|
3 |
|
mem16 |
- |
16 |
11 |
11 |
|
|
|
5 |
|
VERW - Verify Write (286+ protected)
Použitie: VERW zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
|
- |
- |
- |
- |
- |
* |
- |
- |
- |
Kontroluje špecifikovaný segment sektor na správnosť a je zapisovateľom v privilegovanom stupni. Ak je segment zapisovateľný Zero Flag je nastavený na 1, inak na 0.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
|
reg16 |
- |
14 |
15 |
11 |
|
|
|
3 |
|
|
mem16 |
- |
16 |
16 |
11 |
|
|
|
5 |
|
WAIT/FWAIT - Event Wait
Použitie: WAIT
FWAIT
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
|
|
|
- |
- |
- |
- |
- |
CPU vnesie wait state pred koprocessorové signály v konečnej operácii. WAIT a FWAIT sú identické.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
nie je |
4 |
3 |
6 |
1-3 |
|
|
|
1 |
|
WBINVD - Write-Back and Invalidate Cache (486+)
Použitie: WBINVD
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
|
- |
|
|
|
- |
- |
- |
- |
- |
Flushne internú cache.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
|
nie je |
- |
- |
- |
5 |
|
|
|
2 |
|
XCHG - Exchange
Použitie: XCHG cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia vymení obsah cieľového a zdrojového operandu
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
|
reg,reg |
4 |
3 |
3 |
3 |
|
|
|
2 |
|
|
mem,reg |
17+EA |
5 |
5 |
5 |
|
|
|
2-4 (W88=25+EA |
|
|
reg,mem |
17+EA |
5 |
5 |
3 |
|
|
|
2-4 (W88=25+EA) |
|
|
accum,reg |
3 |
3 |
3 |
3 |
|
|
|
1 |
|
|
reg,accum |
3 |
3 |
3 |
3 |
|
|
|
1 |
|
XLAT/XLATB - Table Look up Translation
Použitie: XLAT translation-table
XLATB (masm 5.x)
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
|
- |
- |
- |
- |
- |
- |
- |
- |
- |
Inštrukcia prevedie bajt uložený v registri AL na iný bajt pomocou prevodnej tabuľky, ktorú musíme vytvoriť ešte pred použitím inštrukcie XLAT. Začiatok tabuľky je daný offsetom v registri BX. Tabuľka obsahuje najviac 256 bajtov. Inštrukcia vracia tú hodnotu z tabuľky, ktorej index je uložený v registri AL. Zodpovedajúci bajt k indexu sa vracia opäť v registri AL.
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
|
table offset |
11 |
5 |
5 |
4 |
|
|
|
1 |
|
XOR - Exclusive OR
Použitie: XOR cieľový, zdrojový
Modifikuje flagy:
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF |
0 |
- |
- |
- |
* |
* |
u |
* |
0 |
Inštrukcia vykoná logickú operáciu XOR (eXclusive OR) a vráti výsledok do cieľového operandu. U tejto operácie si všimnite to, že ak ju vykonáte dvakrát s tým istým číslom, dostanete rovnaký výsledok ako na začiatku.
XOR |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
|
|
Výsledok |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
XOR |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
|
Výsledok |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
Operand |
808x |
286 |
386 |
486 |
Pentium |
Cyrix 6x86 |
Pentium Pro |
Dĺžka |
Hexa |
reg,reg |
3 |
2 |
2 |
1 |
|
|
|
2 |
|
mem,reg |
16+EA |
7 |
6 |
3 |
|
|
|
2-4 (W88=24+EA) |
|
reg,mem |
9+EA |
7 |
7 |
2 |
|
|
|
2-4 (W88=13+EA) |
|
reg,immed |
4 |
3 |
2 |
1 |
|
|
|
3-4 |
|
mem,immed |
17+EA |
7 |
7 |
3 |
|
|
|
3-6 (W88=25+EA) |
|
accum,immed |
4 |
3 |
2 |
1 |
|
|
|
2-3 |
|