(GiG)*fh, ок! Вот она вся:
Код: Выделить всё
{$N+}
{$G+}
Program kostja2;
uses crt{, graph};
var
x,dx,i,y2,a,c,os,mnogitel, step, sto: word;
y, gradus, b, e,mem: double;
bit :byte;
{grDriver: integer;
grMode: integer;
Errcode: integer;}
begin
clrscr;
{grDriver:=EGA;
grMode:=EGAHi;
InitGraph(grDriver, grMode,'');
ErrCode:=GraphResult;
if ErrCode<>grOK then Halt(1); }
mnogitel:=10000; {koefficient rastjagivanija po y}
c:=6;
a:=2;
b:=200;
sto:=100;
gradus:=1/97; {koefficient rastjagivanija po x}
e:=2.73;
asm
mov ax, 0 {vkl. grafiku}
mov al, 10h
int 10h
mov ah, 0ch {osi}
mov al, 10
mov cx, 400
mov bh, 0h
mov dx, 0
@metka1:
push cx
mov os, cx
mov dx, os
mov cx,0
int 10h
pop cx
loop @metka1
mov ah, 0ch
mov al, 10
mov cx, 639
mov bh, 0h
mov dx, 200
@metka2:
int 10h
loop @metka2
mov cx, 639 {grafik}
@loopx:
mov x, cx
cmp cx, 280
jl @bad_x
fild x
fmul gradus
wait
{count exponent}
push cx
xor cx,cx
fld1
fld e
fimul a
fyl2x
fmul
fst mem
fld1
fcom
fstsw ax
sahf
jnc @m2
xor cx, cx
@m12:
inc cx
fsub
fst mem
fld1
fcom
fstsw ax
sahf
jz @m12
jnc @m2
jmp @m12
@m2:
mov step, cx
fxch
f2xm1
fadd
fild step
fld1
fscale
fxch
fincstp
fmul
fstp y
pop cx
{st(0)=(2e)^x}
jmp @1 {prosto metki dlja dlinnogo perehoda}
@2: jmp @loopx
@1:
fild x
fmul gradus
DB 0D9h, 0FEH {fsin}
fild sto
fmul
fld y
fmul {full func is done!}
fidiv mnogitel {rastjagivaem gfafik po y}
fchs
fadd b
frndint
fistp y2 {y2 - koord. y tochki na ekrane; cx - koord. x}
mov ah, 0ch {vivod}
mov bh,0h
mov dx, y2
mov al, 15
int 10h
@bad_x:
loop @2
mov ah, 8
int 21h
end;
{readln;
CloseGraph;}
end.