Програмування співпроцесора з використанням команд обчислення трансцендентних функцій та реалізація розгалужень при порівнянні даних дійсного типу

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

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

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

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

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

Лабораторна робота №4 Тема: Програмування співпроцесора з використанням команд обчислення трансцендентних функцій та реалізація розгалужень при порівнянні даних дійсного типу Мета: Познайомитися з принципами роботи математичного співпроцесора та оволодіти навиками використання вбудованих елементарних математичних функцій та реалізації розгалужень. ВАРІАНТИ ЗАВДАНЬ  Лістинг програми: //Модуль С #include <stdio.h> #include <math.h> extern "C" float calculation(float ,float ,float),res; void main(void) { float A; float C1; float D; double res=0; printf("if (C>D) X=(atan(12/C)+73)/(A*A-1) else X=(2*C/A-D*D)/(D+tan(A-1)) \n"); printf("A = "); scanf("%f",&A); printf("C = "); scanf("%f",&C1); printf("D = "); scanf("%f",&D); if (C1>D) printf("REsult is C: %f \n", (atan(12/C1)+73)/(A*A-1)); else printf("REsult is C: %f \n", (2*C1/A-D*D)/(D+tan(A-1))); printf("REsult is ASM: %f \n", calculation(A,C1,D)); } ;Модуль ASM .586 .model flat,c PUBLIC calculation ;if (C>D) X=(atan(12/C)+73)/(A*A-1) else X=(2*C/A-D*D)/(D+tan(A-1)) .data K12 dd 12.0 K73 dd 73.0 k1 dd 1.0 K2 dd 2.0 .code calculation proc push ebp mov ebp,esp finit fld dword ptr[ebp+8];в вершину стеку співпроцесора записати [ebp+8] fcomp dword ptr[ebp+16] ;порівняти fstsw ax sahf jbe els1 ;якщо C<=D fld K12 ;в вершину стеку співпроцесора записати к12 fdiv dword ptr[ebp+8] ; поділити на [ebp+8] FPATAN ; арктангенс fadd K73 ;додати к73 fld dword ptr[ebp+12]; в вершину стеку співпроцесора записати [ebp+12] fmul dword ptr[ebp+12];помножити на [ebp+12] fsub K1;відняти к1 fdiv jmp rez els1: fld K2; в вершину стеку співпроцесора записати к2 fmul dword ptr[ebp+8]; помножити на [ebp+8] fdiv dword ptr[ebp+12];поділити fld dword ptr[ebp+16]; в вершину стеку співпроцесора записати [ebp+16] fmul dword ptr[ebp+16] ;помножити fsub fld dword ptr[ebp+12] в вершину стеку співпроцесора записати [ebp+12] fsub K1 ;відняти к1 FPTAN ;тангунс fdiv fadd dword ptr[ebp+16];додати [ebp+16] fdiv rez: pop ebp ret calculation endp end Висновок і результат роботи програми:   Висновок: познайомився з принципами роботи математичного співпроцесора і використав його можливості для обчислення арифметичних виразів.
Антиботан аватар за замовчуванням

05.03.2015 22:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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