Використання математичного співпроцесора

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

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

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

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування та операційні системи

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

Міністерство освіти і науки Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт з лабораторної роботи № 3 з дисципліни: “Системне програмування” на тему: “Використання математичного співпроцесора” Мета лабораторної роботи Ознайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення арифметичних виразів з числами з плаваючою комою. Теоретичні відомості Математичний співпроцесор запускається центральним процесором. Після запуску він виконує всі обрахунки самостійно і паралельно з роботою центрального процесора. Якщо центральний процесор направляє наступну команду співпроцесору в той момент, коли співпроцесор ще не закінчив виконання попередньої команди, центральний процесор переводиться в стан очікування. Якщо ж співпроцесор не зайнятий, центральний процесор, направивши команду співпроцесору, продовжує свою роботу, не очікуючи завершення обрахунку. Послідовне розташування команд співпроцесора і центрального процесора в коді програми створюють ілюзію послідовного їх виконання. Простіше кажучи можлива така ситуація, що коли центральний процесор звернеться до комірки пам’яті, куди арифметичний співпроцесор повинен був записати результат своїх обчислень і якщо співпроцесор ще не закінчив обрахунки то результату там не буде. Однак є спеціальні засоби синхронізації (команда FWAIT), що дозволять центральному процесорові дочекатися результатів роботи співпроцесора. Індивідуальне завдання Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. Вхідні дані повинні вводитися з клавіатури, під час виконання програми, як дійсні числа зі знаком. Програма повинна складатися з двох модулів: головний модуль – створюється мовою С і має забезпечити ввід необхідних даних, виклик асемблерної процедури для обчислення виразу та вивід результату обчислень; модуль безпосередніх обчислень – здійснює всі необхідні арифметичні дії з використанням математичного співпроцесора. Переконатися у правильності роботи кожного модуля зокрема та програми загалом. Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. Дати відповідь на контрольні запитання. 29. X=K-B1*C1+D2-F2/E1 12A0C029  А, В, С, D, E, F - дійсні числа, де індекс визнає точність внутрішнього подання (1 – одинарної, 2 – подвійної точності). Константу К подано у 16-му форматі. Код програми main.cpp #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <conio.h> extern "C" double calc(float, float, double, float, double); extern "C" const double K = 0x12A0C029; void main() { printf("X = %.0lf - B * C + D - F / E\n\n", K); float B, C, E; double D, F; printf("B = "); scanf("%f", &B); printf("C = "); scanf("%f", &C); printf("D = "); scanf("%lf", &D); printf("E = "); scanf("%f", &E); printf("F = "); scanf("%lf", &F); printf("\nC: X = %lf\nAsm: X = %lf\n", K - B * C + D - F / E, calc(B, C, D, E, F)); _getch(); } calc.asm .686 .model flat, c .data extrn K : qword .code calc proc push ebp mov ebp, esp fld dword ptr [ebp+8] ; ST(0) = B fmul dword ptr [ebp+12] ; ST(0) = B * C fsubr K ; ST(0) = K - B * C fadd qword ptr [ebp+16] ; ST(0) = K - B * C + D fld qword ptr [ebp+28] ; ST(0) = F | ST(1) = K - B * C + D fdiv dword ptr [ebp+24] ; ST(0) = F / E | ST(1) = K - B * C + D fsub ; ST(0) = K - B * C + D - F / E pop ebp ret calc endp end Результат виконання програми / / / Висновок Я оволодів навичками створення програм, частини яких написані різними мовами програмування та засвоїв правила взаємодії між програними модулями різних мов програмування.
Антиботан аватар за замовчуванням

07.05.2017 14:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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