ВИКОРИСТАННЯ

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

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

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

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Системне програмування

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  ЗВІТ до лабораторної роботи № 3 з дисципліни " Системне програмування" Львів – 2012 Тема: ВИКОРИСТАННЯ МАТЕМАТИЧНОГО СПІВПРОЦЕСОРА. Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення арифметичних виразів. ЗАВДАННЯ 1. Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. Вхідні дані повинні вводитися з клавіатури, під час виконання програми в десятковому форматі зі знаком. Програма повинна складатися з двох модулів: головний модуль – створюється мовою С і має забезпечити ввід необхідних даних, виклик асемблерної процедури для обчислення виразу та вивід результату обчислень; модуль безпосередніх обчислень – здійснює всі необхідні арифметичні дії з використанням математичного співпроцесора; 2. Переконатися у правильності роботи кожного модуля зокрема та програми загалом. 3. Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. 4. Дати відповідь на контрольні запитання. ВАРІАНТИ ЗАВДАНЬ А, В, С, D, E, F - знакові операнди, довжиною в байтах, згідно з індексу, значення К подано у 16-му форматі. 29 X=K-B1*C1+D3-F2/E1 12A0C029   Код програми: Main.cpp #include<stdio.h> #include<conio.h> extern "C" int calc(int B, int C, int D, int E, int F); //опис параметрів ф-ції int main() { int B=0; int C=0; int D=0; int E=0; int F=0; int X; int K=312524841; printf("X=(K-(B*C))+(D-(F/E)) k=12A0C029 hex = 312524841 dec\n"); printf("Please, enter your numbers:\n"); printf("B = "); scanf("%d",&B); printf("C = "); scanf("%d",&C); printf("D = "); scanf("%d",&D); printf("E = "); scanf("%d",&E); printf("F = "); scanf("%d",&F); printf("\nC++: Result = %d\n",(K-(B*C))+(D-(F/E))); // вивід с++ результату X = calc(B,C,D,E,F); //виклик файлу асм printf("asm=X = %d\n",X); //вивід асм результату getch(); return 0; }  Calc.asm .586 .model flat,c .data Bfl dd 0 Cfl dd 0 Ffl dd 0 Dfl dd 0 Efl dd 0 D1 dd 0 D2 dd 0 tmp dd 0 .code calc PROC ;X=(K-(B*C))+(D-(F/E)) k=12A0C029 hex = 312524841 dec push ebp mov ebp,esp mov eax,[ebp+8] mov Bfl,eax mov eax,[ebp+12] mov Cfl,eax mov eax,[ebp+16] ; <- зчитування чисел з клавіатури і збереження їх в змінні Bfl,Cfl,Dfl,Efl,Ffl mov Dfl, eax mov eax,[ebp+20] mov Efl,eax mov eax,[ebp+24] mov Ffl,eax fild Bfl fild Cfl fmul mov tmp,312524841 fild tmp fsubr fistp D1 fild Ffl fild Efl fdiv fild Dfl fsubr fistp D2 fild D1 ;завантаження до співпроцесора D1 fild D2 ;завантаження до співпроцесора D2 fadd fistp tmp ;збереження результату в змінну tmp, вилучаючи зі стеку mov eax,tmp ;занесення значення змінної tmp в регістр еах, для виводу в С++ pop ebp ret calc ENDP END   Результат виконання:  Висновок: Я ОВОЛОДІВ НАВИКАМИ СТВОРЕННЯ ПРОГРАМ, ЧАСТИНИ ЯКИХ НАПИСАНІ РІЗНИМИ МОВАМИ ПРОГРАМУВАННЯ ЗАСВОЇВ ПРАВИЛА ВЗАЄМОДІЇ РІЗНИХ МОДУЛІВ.
Антиботан аватар за замовчуванням

20.05.2013 22:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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