DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

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

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

Про що ця робота

Звіт з лабораторної роботи присвячено вивченню принципів роботи математичного співпроцесора. У роботі реалізовано обчислення арифметичного виразу з використанням модулів на мовах C та Асемблер.

У роботі розглядаються

  • Системне програмування
  • Мова C
  • Обчислення з плаваючою комою
  • Арифметичні операції

Зміст і розділи

  1. Мета лабораторної роботи
  2. Теоретичні відомості
  3. Індивідуальне завдання
  4. Код програми
  5. Результат виконання програми
  6. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Лашко О.Л.

Ключові поняття

модульплаваюча комаіндивідуальне завданняпам'ятьрезультатпрограмасинхронізація

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

Міністерство освіти і науки Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт з лабораторної роботи № 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 Результат виконання програми / / / Висновок Я оволодів навичками створення програм, частини яких написані різними мовами програмування та засвоїв правила взаємодії між програними модулями різних мов програмування.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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