Как-то так:
uses graph;
const
x1=-6;{начало и конец графика в реальных значениях}
x2=6;
var mx,my,a,x,dx,y:real;
x0,y0,grD,px,py,grM,i,k:integer;
s,s1:string;
begin
grD:=detect;
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат в центре экрана}
Y0:=getmaxY div 2;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=600/(x2-x1);{длина в пикселах по оси Х/реальная длина}
my:=420/8;{длина оси по У/(максимум принятых значений функции}
SetBkColor(15); {цвет фона}
setlinestyle(0,0,1);{сплошная линия}
SetColor(8);{цвет линий осей}
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
for i:=1 to 8 do {максимальное количество засечек в одну сторону}
begin
line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));{засечки на оси У}
line(x0-3,y0+round(i*my),x0+3,y0+round(i*my));
line(x0+round(i*mx),y0-3,x0+round(i*mx),Y0+3); {засечки на оси Х}
line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
str(i,s);
{подпись оси У}
outtextXY(x0-25,y0-round(i*my),s);{соответственно засечкам}
outtextXY(x0-25,y0+round(i*my),'-'+s);
{подпись оси Х}
str(i,s);
outtextXY(x0+round(i*mx),y0+10,s);
outtextXY(x0-round(i*mx),y0+10,'-'+s);
end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=x1;
while x0.001 then{если х не очень близко к 0}
begin
y:=1/(x); {график в реальных координатах}
py:=y0-round(y*my);{в экранных}
putpixel(px,py,12);
end;
x:=x+dx; {наращиваем х}
end;
setcolor(10); {ассимптота}
line(x0+round(-1*mx),0,x0+round(-1*mx),2*y0);
setcolor(12);
outtextXY(50,30,'Grafik functii y=1/(x+1)');
outtextXY(50,65,'ODZ:x-1');
readln;
end.