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

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

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

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

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

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

Міністерство освіти, науки, молоді та спорту України Національний університет “Львівська політехніка” Кафедра ЕОМ Звіт до лабораторної роботи №3 на тему: «Використання математичного співпроцесора» з предмету: «Системне програмування» Підготувала: ст.гр. КІ-33 Надолинська Ольга Перевірив: Олексів М.В. Львів 2012 Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення арифметичних виразів. ТЕОРЕТИЧНІ ВІДОМОСТІ Математичний співпроцесор запускається центральним процесором. Після запуску він виконує всі обрахунки самостійно і паралельно з роботою центрального процесора. Якщо центральний процесор направляє наступну команду співпроцесору в той момент, коли співпроцесор ще не закінчив виконання попередньої команди, центральний процесор переводиться в стан очікування. Якщо ж співпроцесор не зайнятий, центральний процесор, направивши команду співпроцесору, продовжує свою роботу, не очікуючи завершення обрахунку. Послідовне розташування команд співпроцесора і центрального процесора в коді програми створюють ілюзію послідовного їх виконання. Простіше кажучи можлива така ситуація, що коли центральний процесор звернеться до комірки пам’яті, куди арифметичний співпроцесор повинен був записати результат своїх обчислень і якщо співпроцесор ще не закінчив обрахунки то результату там не буде. Однак є спеціальні засоби синхронізації (команда FWAIT). Префікс команд та адресація операндів Асемблерна мнемоніка всіх команд співпроцесора починається з букви F, наприклад: FADD, FDIV, FSUB и так далі. Команди співпроцесора можуть адресувати операнди, аналогічно звичайним командам центрального процесора Основні команди математичного співпроцесора Команда Функція Операнд 1 Операнд 2 Результат  Команди пересилки даних  FLD Завантажити відправник (змінна дійсного типу) до стеку (регістр ST(0)) відправник – ST(0)  FILD Завантажити відправник (змінна цілого типу) до стеку (регістр ST(0)) відправник – ST(0)  FST Копіювати значення зі стеку (регістр ST(0)) до приймача (змінна дійсного типу) приймач – приймач  FSTP Перенести значення зі стеку (регістр ST(0)) до приймача (змінна дійсного типу) приймач – приймач  FIST Копіювати значення зі стеку (регістр ST(0)) до приймача (змінна цілого типу) приймач – приймач  FISTP Перенести значення зі стеку (регістр ST(0)) до приймача (змінна цілого типу) приймач – приймач  FXCH Обмін значеннями регістрів ST(0) та відправника (інший регістр) відправник – –  FCMOVxx Група команд умовної пересилки даних приймач відправник ST(0)  Група команд умовної пересилки даних FCMOVxx  Команда Реальна умова Умова для команди FCOM  FCMOVE ZF = 1 Якщо рівні  FCMOVNE ZF = 0 Якщо нерівні  FCMOVB CF = 1 Якщо менше  FCMOVBE CF = 1 та ZF = 1 Якщо менше або рівні  FCMOVNB CF = 0 Якщо не менше  FCMOVNBE CF = 0 та ZF = 0 Якщо не менше або рівні  Основні команди математичного співпроцесора Команди управління FPU  FINIT Ініціювання роботи математичного співпроцесора FPU – – –  FSTCW Копіювання вмісту регістру CR до приймача (змінна розміром 2 байта або регістр загального призначення) приймач – змінна  FLDCW Копіювання відправника (змінна розміром 2 байта) до регістру CR відправник – CR  FSTSW Копіювання вмісту регістру SR до приймача (змінна розміром 2 байта або регістр AX) приймач – змінна або AX   Арифметичні команди математичного співпроцесора Співпроцесор використовує шість основних типів арифметичних команд: Fxxx Перший операнд береться з вершини стека (джерело), другий - наступний елемент стека. Результат виконання команди записується в стек  Fxxx пам’ять Джерело береться з пам’яті, приймачем є вершина стека ST(0). Покажчик стека ST не змінюється, команда дійсна тільки для операндів з одинарною і подвійною точністю  Fixxx пам’ять Аналогічно попередньому типу команди, але операндами можуть бути 16- або 32-розрядні цілі числа  Fxxx ST, ST(i) Для цього типу регістр ST(i) є джерелом, а ST(0) - верхівка стека - приймачем. Покажчик стека не змінюється  Fxxx ST(i), ST Для цього типу регістр ST(0) є джерелом, а ST(i) - приймачем. Покажчик стека не змінюється  FXXXP ST(i), ST Регістр ST(i) - приймач, регістр ST(0) - джерело. Після виконання команди джерело ST(0) витягується із стека   Рядок "xxx" може приймати наступні значення: ADD - Додавання SUB - Віднімання SUBR - Зворотне віднімання, тобто операнди міняються місцями MUL - Множення DIV - Ділення DIVR - Зворотне ділення, ділене і дільник міняються місцями Окрім основних арифметичних команд є додаткові арифметичні команди: FSQRT - Знаходження квадратного кореня FSCALE – Масштабування на ступінь числа 2 FPREM - Обчислення часткової остачі FRNDINT - Округлення до цілого FXTRACT - Виділення порядку числа і мантиси FABS – Знаходження абсолютного значення (модуля) числа FCHS - Зміна знаку числа Варіант: 21 X=A4/B2+C1*(D2 – E1+K) 21   Код програми: Calc.asm .586 .model flat,c .data K dd 33; 21h tmp dd 0 .code calc PROC public calc push ebp mov ebp,esp fld dword ptr[ebp+8] fdiv dword ptr[ebp+12] fstp tmp fld dword ptr[ebp+16] fsub dword ptr[ebp+20] fild K fadd fmul dword ptr[ebp+24] fld tmp fadd pop ebp ret calc ENDP END Main.cpp #include <stdio.h> #include <conio.h> extern "C" float calc(float A,float B,float D,float E,float C); void main() { float A,B,D,E,C,K=33; double X=0; printf("Enter data\n"); printf("A = "); scanf("%f",&A); printf("B = "); scanf("%f",&B); printf("D = "); scanf("%f",&D); printf("E = "); scanf("%f",&E); printf("C = "); scanf("%f",&C); X=calc(A,B,D,E,C); printf("asm: X = %f\n",X); X=A/B+C*(D-E+K); printf("C: X = %f\n",X); getch(); } Результати виконання програми:   Висновок: під час виконання даної лабораторної роботи Я познайомилася з принципами роботи математичного співпроцесора і використала його можливості для обчислення арифметичних виразів. Написала програму згідно свого варіанта, та підготувала звіт з результатами виконання програми.
Антиботан аватар за замовчуванням

28.01.2013 16:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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