Найти

Методические указания по Организации ЭВМ и систем

Лабораторная работа 9.

Пример решения:

{Лабораторная работа №9. Выполнила: Товбис Е.М., гр.22-6 18.11.00
Задание: Е(sinXi)+sinx+tgx, i=1..5}
{$N+}
uses crt;
var x,y1,result:single;
    i:integer;
    xi:array[1..5] of single;

procedure sinus(x1:single); assembler; {Процедура вычисления синуса }
asm				    {по формуле: tgx/(v(tgx*tgx+1))}
  fld x1             {Помещаем в стек х1}
  fptan              {вычисляем тангенс, причем значение тангенса
                     записывается в st(1),а в st(0) помещается 1}
  fld st(1)          {помещаем в st(0) значение тангенса}
  fmul st(0),st(0)   {(tgx)^2}
  faddp              {по умолчанию складываем значения
                     st(0) и st(1) с выталкиванием из стека}
  fsqrt              {вычисляем квадратный корень}
  fdivp st(1),st(0)  {делим содержимое st(1) на содержимое st(0) с выталкиванием
                     из стека и результат помещаем в st(1)}
  fstp y1            {результат выталкиваем из стека в у1}
end;

begin
  clrscr;
  writeln('Input x');
  readln(x);
  writeln('Input Xi');
  for i:=1 to 5 do
     readln(xi[i]);
  sinus(x);
  result:=y1;
  for i:=1 to 5 do
    begin
      sinus(xi[i]);
      result:=result+y1;
    end;
  asm
     fld x
     fptan
     fstp y1
     fstp y1
  end;
  result:=result+y1;
  writeln('y=',result:0:3);
  readln;
end.
Рейтинг SIMPLETOP.NET
Rambler's Top100 Powered byCeleron©
Бесплатный хостинг от EOMY.NET