Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Inštrukčný súbor FPU

Presunové inštrukcie

Inštrukcie

fld real32/real64/real80/st(i)
fild int16/int32/int64
fbld BCD

presunú operand (reálnu, celočíselnú alebo BCD premennú alebo obsah registra st(i)) do st(0) s automatickým vykonaním potrebnej konverzie.

Inštrukcie

fst real32/real64/st(i)
fist int16/int32

presunú hodnotu z registra st(0) do operandu (reálnej alebo celočíselnej premennej alebo do registra st(i)) s automatickým vykonaním potrebnej konverzie.

Inštrukcie

fstp real32/real64/real80/st(i)
fistp int16/int32/int64
fbstp BCD

presunú hodnotu z registra st(0) do operandu (reálnej, celočíselnej alebo BCD premennej alebo do registra st(i)) s automatickým vykonaním potrebnej konverzie a odstránia prenesené číslo z vrcholu zásobníka.

Inštrukcia

fxch st(i)

navzájom vymení obsahy registrov st(0) a st(i). Možný je aj tvar inštrukcie bez operandu, kedy sa vymenia obsahy st(0) a st(1).

Inštrukcie pre vloženie konštanty do st(0):

Inštrukcia Konštanta
fldz 0
fld1 1
fldpi π
fldl2t log 2(10)
fldl2e log 2(e)
fldlg2 log 10(2)
fldln2 log e(2)

Inštrukcie aritmetické

Inštrukcie

fadd real32/real64
fiadd int16/int32

pripočítajú hodnotu operandu (reálnej alebo celočíselnej premennej) k registru st(0).

Inštrukcie

fadd st(0),st(i)
fadd st(i),st(0)

spočítajú hodnoty obidvoch operandov a výsledok uložia do ľavého operandu.

Inštrukcia

faddp st(i),st(0)

spočíta hodnoty registrov st(i) a st(0), výsledok uloží do st(i) a odstráni položku z vrcholu zásobníka.

Inštrukcie

fadd

a

faddp

vykonajú to isté ako faddp st(1),st(0).

Pre operácie odčítania, násobenia a delenia existujú podobné inštrukcie ako pre operáciu sčítania, len v zápise inštrukcie zmeníme add na sub, mul alebo div. Naviac inštrukcie pre odčítanie a delenie môžu mať reverzný tvar so zápisom subr, resp. divr, ktorý spôsobí, že operandy v inštrukcii sa prehodia, napr. fsub urobí st(1) := st(1) – st(0) a vyberie st(0), zatiaľ čo fsubr vypočíta st(1) := st(0) – st(1) a vyberie st(0).

Druhú skupinu aritmetických inštrukcií tvoria inštrukcie, ktoré vykonávajú funkčné operácie s obsahom st(0). Spomenieme len niektoré:

Inštrukcia Operácia
fchs st(0) ← -(st(0))
fsqrt st(0) ← sqrt(st(0))
fabs st(0) ← |st(0)|
fsin1 st(0) ← sin(st(0))
fcos1 st(0) ← cos(st(0))

Inštrukcie porovnávacie

Inštrukcie

fcom real32/real64/st(i)
ficom int16/int32

porovnajú operand s hodnotou v registri st(0) a nastavia príznaky C0, C2 a C3 v stavovom registri.

Inštrukcie

fcomp real32/real64/st(i)
ficomp int16/int32

porovnajú operand s hodnotou v registri st(0), nastavia príznaky C0, C2 a C3 v stavovom registri a odstránia položku z vrcholu zásobníka.

Inštrukcia

fcom

porovná hodnoty registrov st(1) a st(0), inštrukcia

fcomp

naviac odstráni položku z vrcholu zásobníka.

Inštrukcia

fcompp

porovná hodnoty registrov st(1) a st(0) a po nastavení podmienkového kódu obidve položky zo zásobníka odstráni.

Inštrukcia

ftst

porovná st(0) s nulou.

Nastavenie príznakov C3 až C0 podľa výsledku porovnania je nasledujúce:

C3 C2 C0 Výsledok operácie
0 0 0 st(0) > operand
0 0 1 st(0) < operand
1 0 0 st(0) = operand
1 1 1 nemožno porovnať

Inštrukcie riadiace

Inštrukcia

finit

inicializuje FPU: stavový register nastaví na hodnotu 0, riadiaci na 37Fh, register známok na 0FFFFh.

Inštrukcia

fldcw pamäť

prenesie (riadiace) slovo z pamäti do riadiaceho registra, inštrukcia

fstcw pamäť

naopak uloží obsah riadiaceho registra do slova v pamäti.

Inštrukcia

fstsw pamäť/AX

uloží obsah stavového registra do slova v pamäti alebo do registra AX.


1Inštrukcie fsin a fcos patria do rozšíreného inštrukčného súboru.

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Reálna aritmetika | Vyhodnotenie výrazov
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 29.10.2007.