.


:




:

































 

 

 

 


 

 

) , . FPU.

 

) .

MF (memory format) :

00 , (32 )

01 (32 )

10 , (64 )

11 (16 ) (80 )

 

) FPU

reg ST(i). R (reverse) , (R=0) (R=1), .. . P (Pop) , (P = 1 -> TOP + 1) (P = 0)

 

) , . .

 

) FPU, , .

 

FPU 5 :

1)

2)

3)

4)

5)

:

- (TOP--) | PUSH

- ST(0)

 

FLD r/m

FILD m

FBLD m

 

FLD ST(0);

FLD QWORD PTR [bx];

FILD WORD PTR AR1[si];

 

:

, .. ST(0) TOP SW

 

FST r/m;

FST mem ->

 

FIST m;m -> , ( FPU)

RC , .

 

FST ST(4);ST(0) -> ST(4)

FIST WORD PTR MEM1;ST(0) -> MEM1 ( )

FST DWORD PTR MEM2;ST(0) -> MEM2 (.)

 

 

FXCH reg ST(0) . . :

 

FXCH st(5); st(0) ß à st(5).

 

FLDZ - +0.0

FLD1 - ------------------- 1.0

FLDPI - ------------

FLDLG2 --------- log10 (2)

FLDLN2 --------- ln(2)

FLDL2T ---------- log2(10)

FLDL2E ---------- log2(e)

 

2.

 

:

F (floating) ( )

I (integer) , (Binary-coded decimal) ,

R ( )

() , .

 

+, -, *, / - ( ) :

ß () ()

(-) (/) :

ß () ()

ST(0) - . :

 

FADD; st(0) + st(1) à st(0)

FADD qword ptr [bx]; st(0) + (64) à st(0)

FADD mem1

FADDP; st(1) + st(0) à st(1), TOP++, st(1) à st(0)

,
FADD FIADD FADDP (+)
FSUB FISUB FSUBP (-)
FSUBR FISUBR FSUBRP
FMUL FIMUL FMULP (*)
FDIV FIDIV FDIVP (/)
FDIVR FIDIVR FDIVRP

.

 

FSUB; [st(0), st(1)] à st(0) st(1) à st(0);

 

FSUB mem32/64; mem . : st(0) [mem] à st(0).

 

FSUB op1, op2; 1 st(0) |st(i) 2, , st(i)|st(0);

1) st(0) st(i) à st(0)

2) st(i) st à st(i)

:

.DATA

x dd 20.0

y dd 5.0

 

.CODE

FLD x; st = 20.0

FSUB y; st = 15.0

FLD y; st = 5, st(1) = 15.0

FSUB st(1), st(0); st = 5.0, st(1) = 10.0

 

FSUBP;

: st(1) st(0) à st(1); TOP++ à rezultat st(0)

, FSUB, (st(1) st(0) à st(1)), FSUBP st(1), st(0) FSUB st(1), st

FSUBP st(i); st(i) - , :

st(i) st à st(i); TOP++; st(i-1);

FSUBP st(i), st(0); .

:

.DATA

x dd 20.0

y dd 5.0

.CODE

.

.

FLD x; st(0) = 20.0

FLD y; st(0) = 5; st(1) = 20.0

FSUBP; st(0) = 15.0; (st = 5, st(1) = 15, TOP++, st =15.)

FLD y; st = 5.0, st(1) =15.

FSUBP st(1), st(0); st(0) =10.0

 

FSUBR - . :

 

st(1) st(0) à st(0)

 

FSUBR mem32/64; [ mem32/64 ] st à st

 

FSUBR st(0), st(i); st(i) - st à st

FSUBR st(i), st; st st(i) à st(i)

 

:

.DATA

x dd 20.0

y dd 5.0

.CODE

.

FLD y; st(o) = 5.0

FSUBR x; st(o) = 15.0

FLD x; st = 20.0; st(1) = 15.0

FSUB st(1), st; st(1) = -5.0; st = 20.0

 

FSUBRP;

st(1) - st à st(1); TOP ++, st(1) à st(0).

FSUBRP st(i), st; st st(i) à st(i); TOP++; st(i) à st(i-1).

 

:

 

FABS; | st(0) | à st(0),

FCHS; st(0),

FRNDINT; RC ,

FSCALE; st(0) ( st(1)), .. st(0)= st(0) * 2 st(1) , st(1) .

FXTRACT; st(0) () à st(0), TOP --, à st(0), st(1).

FSQRT; st(0) à st(0).

 

SW (C0, C2, C3). , ( ) ( ). , , , . (). FSTSW ax SAHF C3, C2 C0 ZF, PF, F EFLAGS.

 

FCOM; st - st(1) à C3, C2, C0

FCOM op; st op à C3,C2, C0; op - st(i) .

 

 

3 2 0
ST(0) > op      
ST(0) < op      
ST(0) = op      
     

 

 



<== | ==>
 |
:


: 2015-10-01; !; : 530 |


:

:

,
==> ...

1952 - | 1718 -


© 2015-2024 lektsii.org - -

: 0.015 .