CMPS - - . . :
1. ( - ), :
ds:esi/si;
es:edi/di;
2. df esi/si edi/di: df=0, ; df=1, ; : , cf=1, zf=0; , cf=0, zf=1;
4. (repe/repne).
CMPS , - -. CMPS REPE (REPZ) CX ; REPNE (REPNZ) , .
CMPS
CMPSW
CMPSD
. AL, , .
SCAS _
SCASB
SCASW ESI/SI
SCASD
:
1. ( -(eax/ax/al)). es:edi/di. es ;
2. ;
3. edi/di , . df:
df=0 , ;
df=1 ,
, , :
LODS _
lodsb
lodsw
lodsd
:
1. , ds:esi/si, al/ax/eax.
2. ( lods) (lodsb, lodsw, lodsd);
3. si , .
4. df:
df=0 , ;
df=1 , .
, , :
|
|
STOS _
STOSB
STOSW
STOSD
:
1. al/ax/eax , es:di/edi.
2. ( stos) ( stosb, stosw, stosd);
3. di , .
3. df:
df=0 , ;
df=1 , .
-:
ins _,_
insb
insw
insd
-:
outs _,_
outsb
outsw
outsd
8 80- . (): ST(0), ST(1), , ST(7).
: CWR, SWR, TWR, FIP, FDR
(Tags Word Register). .
(Control Word Register)
(Status Word Register) .
FLD, FILD, FBLD ST(0) ,
FSTP <-ST(0),
FISTP <-ST(0),
FBSTP <-ST(0),
ST 1
:
fldz 0
fld 1
fld pi
fldl2t log2(10)
fldl2e log2(e)
fldlg2 lg2
fldln2 ln2
fxch , ST(0)
6 , FXXX (FADD, FSUB, FSUBR, FMUL, FDIV, FDIVR)
FXXX?: (), . .
FXXX : , ST(0)
, .
FIXXX , 16- 32-
FXXX ST, ST(i): ST(i) , ST(0) . .
FXXX ST(i), ST: ST(0) , ST(i) . .
: FSQRT ( ), FSCALE ( 2), FPREM, FRNDINT ( ), FXTRACT, FABS, FCHS
FCOM
FICOM
FCOMP
FICOMP
FCOMPP
FTST
FXAM
|
|
FCOM , ST(0)
FSTSW AX AX .
-:
Fsin sin(st)->st
fsincos sin(st)->st, cos(st)->st
fcos cos(st)
fptan tg(st)->st, fld1
fpatan arctg(st(st(1))->st
-
f2xm1 2^st-1->st, -1<x<1
fy2xpl st(1)*log2(st+1)->st(1), pop
fy12x st(1)*log2(st)->st(1), pop
FINIT
FSAVE
FSTST
P FPU: wait/fwait
CALL
call , .
ret, , , call. .
call :
- ( );
- ( , );
- ;
- .
call, - . , , :
near ptr - ;
far ptr - ;
word ptr - dword ptr - .