Проект в среде MS Visual C++

Страницы работы

3 страницы (Word-файл)

Содержание работы

Задания

Создать проект в среде MS Visual C++. Для этого необходимо выполнить следующее:

·  выполнить команду File | New…;

·  в открывшемся окне указать тип проекта Win32 Console Application, имя проекта, путь к проекту и нажать кнопку ОК;

·  далее выбрать A simple application и нажать кнопку Finish;

Во всех вариантах необходимо написать две функции для вычисления Z(x, y) одну с использованием команд сопроцессора, вторую стандартными средствами языка С++, например:

double Z_asm(double x, double y);

double Z_cpp(double x, double y);

В главной функции main реализовать ввод исходных данных, вызов реализованных функций и вывод полученных результатов на экран (результаты должны совпадать для одних и тех же значений x и y).

Функции на ассемблере можно реализовать, используя ассемблерные вставки вида

__asm

{

    ...

}

Объявленные внутри функций локальные переменные можно использовать внутри ассемблерных вставок. Например:

double Z_asm(double x, double y)

{

    double tmp;

    __asm

    {

        fld y        ;загрузка y в вершину стека

         fld x        ;загрузка x в вершину стека

         fyl2x        ;вычисление y*log2(x)

         fst tmp      ;сохранение результата в tmp

    }

    return tmp       //возврат значения

}

Варианты заданий

1.      

2.      

3.      

4.      

5.      

6.      

7.      

8.      

9.      

10.    

11.    

12.    

13.    

Показательная функция вычисляется по следующей формуле:

где s = y*log2(x), p – целая часть s, q – дробная часть s.

Для разделения числа на целую и дробную часть можно воспользоваться следующим примером:

float a = 2.7f;  //исходное число

float b, c;     //целая и дробная части числа a

int d;

short cw1, cw2;

__asm

{

  finit

  fld    a      //загрузка исходного числа

  fstcw  cw1    //сохранить содержимое регистра управления CWR в переменной cw1

  mov    ax, cw1  //скопировать его в AX и установить биты 10 и 11 в значение 11

  or   ah, 0Ch    //т.е. установить режим округления с отбрасыванием дробн. части

  mov    cw2, ax  //сохранить новое значение в cw2

  fldcw  cw2    //загрузить новое значение CWR

  fistp  d      //сохранить целую часть числа в переменной d

  fldcw  cw1    //загрузить старое значение CWR

  fld    a

  fild   d

  fst    b      //сохранить целую часть числа

  fsub

  fst    c      //сохранить дробную часть числа

}

Похожие материалы

Информация о работе