english version while1 - stránky o programování

Instrukční sada procesorů x86

Aritmetické instrukce numerického koprocesoru

  1. FADD
  2. FADDP
  3. FIADD
  4. FSUB
  5. FSUBP
  6. FSUBR
  7. FSUBRP
  8. FISUB
  9. FISUBR
  10. FCHS
  11. FTST
  12. FXAM
  13. FCOM
  14. FCOMP
  15. FCOMPP
  16. FICOM
  17. FICOMP
  18. FCOMI
  19. FCOMIP
  20. FMUL
  21. FMULP
  22. FIMUL
  23. FDIV
  24. FDIVP
  25. FDIVR
  26. FDIVRP
  27. FIDIV
  28. FIDIVR
FADD (Floating ADDition) : FADD dst, src
součet reálných čísel
K cílovému operandu (registr numerického koprocesoru) přičte zdrojový operand (reálné číslo). Výsledek uloží na místo cílového operandu.
příznaky: mění registr SWR kromě pole TOP
FADDP (Floating ADDition and Pop) : FADDP dst, st
součet reálných čísel s odstraněním ze zásobníku
K cílovému operandu (registr numerického koprocesoru) přičte obsah vrcholu zásobníku registrů numerického koprocesoru. Výsledek uloží na místo cílového operandu a dekrementuje ukazatel vrcholu zásobníku numerického koprocesoru.
formát: 1101 1110 1100 0 ST(i) (de c)
funkce: (ST(i))+(ST)=>ST(i); (TOP)-1=>TOP
příznaky: mění registr SWR numerického koprocesoru
FIADD (Floating and Integer ADDition) : FIADD src
součet reálného a celého čísla
K obsahu vrcholu zásobníku registrů numerického koprocesoru přičte celočíselný operand (se znaménkem). Výsledek uloží na vrchol zásobníku numerického koprocesoru.
formát: 1101 1W10 mod 000 r/m [displ [disph]]
funkce:
  • W=0, (ST)+data16=>ST;
  • W=1, (ST)+data32=>ST;

příznaky: mění registr SWR kromě pole TOP
FSUB (Floating SUBtraction) : FSUB dst, src
odečti reálná čísla
Od cílového operandu (registr numerického koprocesoru) odečte zdrojový operand (reálné číslo). Výsledek uloží na místo cílového operandu.
příznaky: mění registr SWR kromě pole TOP
FSUBP (Floating SUBtraction and Pop) : FSUBP dst, st
rozdíl reálných čísel s odstraněním ze zásobníku
Od vrcholu zásobníku registrů numerického koprocesoru odečte operand (registr numerického koprocesoru). Výsledek uloží na místo operandu a dekrementuje ukazatel vrcholu zásobníku numerického koprocesoru.
formát: 1101 1110 1110 1 ST(i) (de e)
funkce: (ST)-(ST(i))=>ST(i); (TOP)-1=>TOP
příznaky: mění registr SWR numerického koprocesoru
FSUBR (Floating SUBtraction Reverse) : FSUB src, dst
opačně odečti reálná čísla
Od cílového operandu (reálné číslo) odečte zdrojový operand (registr numerického koprocesoru). Výsledek uloží na místo cílového operandu.
příznaky: mění registr SWR kromě pole TOP
FSUBRP (Floating SUBtraction Reverse and Pop) : FSUBRP st, dst
opačně odečti reálná čísla s odstraněním ze zásobníku
Od operandu (registr numerického koprocesoru) odečte obsah vrcholu zásobníku registrů numerického koprocesoru. Výsledek uloží na místo operandu a dekrementuje ukazatel vrcholu zásobníku numerického koprocesoru.
formát: 1101 1110 1110 0 ST(i) (de e)
funkce: (ST(i))-(ST)=>ST(i); (TOP)-1=>TOP
příznaky: mění registr SWR numerického koprocesoru
FISUB (Floating and Integer SUBtraction) : FISUB src
odečti celé číslo od reálného
Od obsahu vrcholu zásobníku registrů numerického koprocesoru odečte celočíselný operand (se znaménkem). Výsledek uloží na vrchol zásobníku numerického koprocesoru.
formát: 1101 1W10 mod 100 r/m [displ [disph]]
funkce:
  • W=0, (ST)-data16=>ST;
  • W=1, (ST)-data32=>ST;

příznaky: mění registr SWR kromě pole TOP
FISUBR (Floating and Integer SUBtraction Reverse) : FISUBR src
odečti reálné číslo od celého
Od operandu (celé číslo se znaménkem) odečte obsah vrcholu zásobníku registrů numerického koprocesoru. Výsledek uloží na vrchol zásobníku numerického koprocesoru.
formát: 1101 1W10 mod 101 r/m [displ [disph]]
funkce:
  • W=0, data16-(ST)=>ST;
  • W=1, data32-(ST)=>ST;

příznaky: mění registr SWR kromě pole TOP
FCHS (Floating CHange Sign) : FCHS
změna znaménka reálného čísla
Změní znaménko obsahu vrcholu zásobníku registrů numerického koprocesoru.
formát: 1101 1001 1110 0000 (d9 e0)
funkce: -(ST)=>ST;
příznaky: nemění
FTST (Floating TeST) : FTST
testuj reálné číslo
Na základě hodnoty vrcholu zásobníku numerického koprocesoru nastaví příznaky C0, C2 a C3 registru SWR numerického procesoru.
formát: 1101 1001 1110 0100 (d9 e4)
funkce:
  • (ST)=Nan, 1=>C3; 1=>C2; 1=>C0;
  • jinak, 0=>C2;
    • (ST)>0, 0=>C3; 0=>C0;
    • (ST)=0, 1=>C3; 0=>C0;
    • (ST)<0, 0=>C3; 1=>C0;

příznaky: mění bity C3,C2 a C0 registru SWR
FXAM (Floating eXAMine) : FXAM
zkus reálné číslo
Na základě hodnoty vrcholu zásobníku numerického koprocesoru nastaví příznaky C3 až C0 registru SWR numerického procesoru.
formát: 1101 1001 1110 0101 (d9 e5)příznaky: mění bity C3 až C0 registru SWR
FCOM (Floating COMpare) : FCOM src
porovnej reálná čísla
Nastaví bity registru SWR na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s operandem. Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number). (Instrukce FUCOM přerušení negeneruje).
příznaky: mění bity C3, C2 a C0 registru SWR
FCOMP (Floating COMpare and Pop) : FCOMP src
porovnej reálná čísla s odstraněním ze zásobníku
Nastaví bity registru SWR na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s operandem. Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number). (Instrukce FUCOMP přerušení negeneruje). Po porovnání dekrementuje ukazatel vrcholu zásobníku.
příznaky: mění bity C3, C2, C0 a TOP registru SWR
FCOMPP (Floating COMpare and Pop and Pop) : FCOMPP
porovnej reálná čísla s dvojnásobným odstraněním ze zásobníku
Nastaví bity registru SWR na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s registrem ST1 numerického koprocesoru. Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number). (Instrukce FUCOMPP přerušení negeneruje). Po porovnání dvakrát dekrementuje ukazatel vrcholu zásobníku.
příznaky: mění bity C3, C2, C0 a TOP registru SWR
FICOM (Floating and Integer COMpare) : FICOM src
porovnej reálné a celé číslo
Nastaví bity registru SWR na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s operandem. Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number).
příznaky: mění bity C3, C2 a C0 registru SWR
FICOMP (Floating and Integer COMpare and Pop) : FICOMP src
porovnej reálné a celé číslo s odstraněním ze zásobníku
Nastaví bity registru SWR na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s operandem (celé číslo se znaménkem). Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number). Po porovnání dekrementuje ukazatel vrcholu zásobníku.
příznaky: mění bity C3, C2 a C0 registru SWR
FCOMI (Floating COMpare setting Integer flags) : FCOMI st, src
porovnej reálná čísla s nastavením celočíselných příznaků
Nastaví příznakové bity na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s operandem (registr zásobníku numerického koprocesoru). Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number). (Instrukce FUCOMI přerušení negeneruje).
formát: 1101 1011 1111 0 ST(i) příznaky: mění příznaky CF, ZF, PF a SF
FCOMIP (Floating COMpare setting Integer flags and Pop) : FCOMIP st, src
porovnej reálná čísla s nastavením celočíselných příznaků s odstraněním ze zásobníku
Nastaví příznakové bity na základě porovnání hodnoty vrcholu zásobníku numerického koprocesoru s operandem (registr zásobníku numerického koprocesoru). Generuje požadavek o přerušení v případě, že jeden z operandů má hodnotu NaN (Not a Number). (Instrukce FUCOMIP přerušení negeneruje). Po porovnání dekrementuje ukazatel vrcholu zásobníku.
formát: 1101 1111 1111 0 ST(i) příznaky: mění příznaky CF, ZF, PF a SF
FMUL (Floating MULtiplication) : FMUL dst, src
vynásob reálná čísla
Vynásobí cílový operand (registr numerického koprocesoru) se zdrojovým operandem (reálné číslo). Výsledek uloží na místo cílového operandu.
příznaky: mění registr SWR kromě pole TOP
FMULP (Floating MULtiplication and Pop) : FMULP dst, st
vynásob reálná čísla s odstraněním ze zásobníku
Vynásobí cílový operand (registr numerického koprocesoru) s obsahem vrcholu zásobníku numerického koprocesoru. Výsledek uloží na místo cílového operandu a dekrementuje ukazatel vrcholu zásobníku numerického koprocesoru.
formát: 1101 1110 1100 1 ST(i)
funkce: (ST(i))*(ST)=>ST(i); (TOP)-1=>TOP
příznaky: mění registr SWR
FIMUL (Floating and Integer MULtiplication) : FIMUL src
vynásob reálné a celé číslo
Obsahu vrcholu zásobníku registrů numerického koprocesoru vynásobí celočíselným operandem (se znaménkem). Výsledek uloží na vrchol zásobníku numerického koprocesoru.
formát: 1101 1W10 mod 001 r/m [displ [disph]]
funkce:
  • W=0, (ST)*data16=>ST;
  • W=1, (ST)*data32=>ST;

příznaky: mění registr SWR kromě pole TOP
FDIV (Floating DIVision) : FDIV dst, src
vyděl reálná čísla
Vydělí cílový operand (registr numerického koprocesoru) se zdrojovým operandem (reálné číslo). Výsledek uloží na místo cílového operandu.
příznaky: mění registr SWR kromě pole TOP
FDIVP (Floating DIVision and Pop) : FDIVP st, src
vyděl reálná čísla s odstraněním ze zásobníku
Vydělí vrchol zásobníku numerického koprocesoru operandem (registr numerického koprocesoru). Výsledek uloží na místo cílového operandu a dekrementuje ukazatel vrcholu zásobníku numerického koprocesoru.
formát: 1101 1110 1111 1 ST(i)
funkce: (ST)/(ST(i))=>ST(i); (TOP)-1=>TOP
příznaky: mění registr SWR
FDIVR (Floating DIVision Reverse) : FDIVR dst, src
opačně vyděl reálná čísla
Vydělí zdrojový operand (reálné číslo) registrem numerického koprocesoru. Výsledek uloží na místo cílového operandu.
příznaky: mění registr SWR kromě pole TOP
FDIVRP (Floating DIVision Reverse and Pop) : FDIVRP st, dst
opačně vyděl reálná čísla s odstraněním ze zásobníku
Vydělí cílový operand (registr numerického koprocesoru) obsahem vrcholu zásobníku numerického koprocesoru. Výsledek uloží na místo cílového operandu a dekrementuje ukazatel vrcholu zásobníku numerického koprocesoru.
formát: 1101 1110 1111 0 ST(i)
funkce: (ST(i))/(ST)=>ST(i); (TOP)-1=>TOP
příznaky: mění registr SWR
FIDIV (Floating and Integer DIVision) : FIDIV src
vyděl reálné číslo celým číslem
Obsahu vrcholu zásobníku registrů numerického koprocesoru vydělí celočíselným operandem (se znaménkem). Výsledek uloží na vrchol zásobníku numerického koprocesoru.
formát: 1101 1W10 mod 110 r/m [displ [disph]]
funkce:
  • W=0, (ST)/data16=>ST;
  • W=1, (ST)/data32=>ST;

příznaky: mění registr SWR kromě pole TOP
FIDIVR (Floating and Integer DIVision Reverse) : FIDIVR src
vyděl celé číslo reálným
Operand (celé číslo se znaménkem) vydělí obsahem vrcholu zásobníku registrů numerického koprocesoru. Výsledek uloží na vrchol zásobníku numerického koprocesoru.
formát: 1101 1W10 mod 111 r/m [displ [disph]]
funkce:
  • W=0, data16/(ST)=>ST;
  • W=1, data32/(ST)=>ST;

příznaky: mění registr SWR kromě pole TOP
Kontakt
Prohlášení o dostupnosti
Tisk stránky
Autor: Václav Bubník © 2005
vbubnik@post.cz
XHTML 1.0| CSS