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.

CF7 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