Задания
Создать проект в среде 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 //сохранить дробную часть числа
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.