Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування
Група:
КІ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Національний університет “Львівська політехніка” / Кафедра ЕОМ Лабораторна робота №4 дисципліни:” Системне програмування” ПРОГРАМУВАННЯ СПІВПРОЦЕСОРА З ВИКОРИСТАННЯМ КОМАНД ОБЧИСЛЕННЯ ТРАНСЦЕНДЕНТНИХ ФУНКЦІЙ ТА РЕАЛІЗАЦІЯ РОЗГАЛУЖЕНЬ ПРИ ПОРІВНЯННІ ДАНИХ ДІЙСНОГО ТИПУ Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення трансцендентних функцій та реалізації розгалужень. Теоретичні відомості : Команди порівняння чисел У центральному процесорі команди умовних переходів виконуються відповідно до значень окремих бітів регістра прапорців процесора. У арифметичному співпроцесорі існують спеціальні команди порівнянь, за наслідками виконання яких, встановлюються біти кодів умов в регістрі стану: FCOM - Порівняння FICOM - Цілочисельне порівняння FCOMP - Порівняння і вилучення зі стеку ST(0) FICOMP - Цілочисельне порівняння і вилучення зі стеку FCOMPP - Порівняння і подвійне вилучення зі стеку (ST(0), ST(1)) FTST - Порівняння операнда з нулем FXAM - Аналіз операнда на тип Трансцендентні команди Cписок всіх трансцендентних команд математичного співпроцесора: FPTAN Обчислення часткового тангенса FPATAN Обчислення часткового арктангенса FYL2X Обчислення y*log2(x) FYL2XP1 Обчислення y*log2(x+1) F2XM1 Обчислення 2x-1 FCOS Обчислення cos(x) FSIN Обчислення sin(x) FSINCOS Обчислення sin(x) і cos(x) одночасно Команда FPTAN обчислює частковий тангенс ST(0), розміщуючи в стеку такі два числа x та у, що y/x = tg(ST(0)). Команда FPATAN обчислює частковий арктангенс: z=arctg(ST(1) /ST(0))=arctg(x/y).Перед виконанням команди числа x і у розташовуються в ST(1) і ST(0), відповідно. Аргументи команди FPATAN повинен знаходиться в межах: 0 ≤ x < y < +( . Результат записується в ST(1), а операнд в ST(0) вилучається зі стеку. Таким чином результат після виконання інструкції розміщується у ST(0). Команда FYL2X обчислює вираз y*log2 (x), операнди x і у розміщуються, відповідно, в ST(0) і ST(1). Операнди вилучаються зі стеку, а результат записується в стек. Параметр x повинен бути додатнім числом. Функція FYL2XP1 обчислює вираз y*log2 (x+1), де x відповідає ST(0), а у - ST(1). Результат записується в ST(0), обидва операнди вилучаються зі стеку і втрачаються. На операнд x накладається обмеження: 0 < x < 1 - 1/sqrt(2) Команда F2XM1 обчислює вираз 2x-1, де x - ST(0). Результат записується в ST(0), параметр повинен знаходиться в наступних межах: 0 <= x <= 0,5 Команда FCOS обчислює cos(x). Параметр x винен знаходиться в ST(0), туди ж записується результат виконання команди. Команда FSIN аналогічна команді FCOS, але обчислює значення синуса ST(0). Команда FSINCOS обчислює одночасно значення синуса і косинуса параметра ST(0). Значення синуса записується в ST(1), косинуса - в ST(0). 28   Варіант №28 Виконання роботи : Коди програм  #include <math.h> #include <stdio.h> #include <conio.h> extern "C" void TransFunc(void); extern "C" { float var_A; float var_C; float var_D; float Result_FPU =0; }; int main() { float C_Result; printf("Please, enter your numbers:\n"); printf("A = "); scanf("%f",&var_A); printf("C = "); scanf("%f",&var_C); printf("D = "); scanf("%f",&var_D); TransFunc(); if(var_C>var_D){ C_Result= (var_A+tan(var_D/4-1))/(var_C/3 -var_A*var_D); } if(var_C<=var_D){ C_Result= (var_C*var_A+ var_C/2)/(var_C-tan(var_D+1)); } printf("Result of using FPU is X = %.6f\n",Result_FPU); printf("REsult of using C is X = %.6f\n",C_Result); getch(); return 0; } .586 .model flat,C .data EXTRN var_A:DWORD, var_C:DWORD,var_D:DWORD,Result_FPU:DWORD .data tmp dd 0 con_1 dd 1 con_2 dd 2 con_3 dd 3 con_4 dd 4 Numerator dd 0 .code TransFunc PROC finit fld var_C fld var_D fcompp fstsw ax sahf jnle MoreThan jle LessThan MoreThan: fld var_D fild con_4 fdiv fild con_1 fsub fptan fdiv fld var_A fadd fstp Numerator fld var_A fld var_D fmul fstp tmp fld var_C fild con_3 fdiv fld tmp fsub fstp tmp fld Numerator fld tmp fdiv fstp Result_FPU jmp EndFunc LessThan: fld var_c fld var_A fmul fstp tmp fld var_c fild con_2 fdiv fld tmp fadd fstp Numerator fld var_D fild con_1 fadd fptan fdiv fstp tmp fld var_C fld tmp fsub fstp tmp fld Numerator fld tmp fdiv fstp Result_FPU EndFunc: ret TransFunc ENDP END   На рис.1 зображено результат виконання програми. / РИС.1 Висновок : на даній лабораторній роботі я оволодів навиками зі співпроцесором з використанням трансцендентних функцій . Навчився використовувати співпроцесор із трансцендентними функція для обчислення певних задач
Антиботан аватар за замовчуванням

19.11.2012 14:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!