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

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

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

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

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

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ

ЗВІТ до лабораторної роботи 3 з дисципліни " Системне програмування"
Львів – 2012
Тема: ВИКОРИСТАННЯ МАТЕМАТИЧНОГО СПІВПРОЦЕСОРА. Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення арифметичних виразів. ЗАВДАННЯ 1. Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. Вхідні дані повинні вводитися з клавіатури, під час виконання програми в десятковому форматі зі знаком.
Програма повинна складатися з двох модулів: головний модуль – створюється мовою С і має забезпечити ввід необхідних даних, виклик асемблерної
процедури для обчислення виразу та вивід результату обчислень; модуль безпосередніх обчислень – здійснює всі необхідні арифметичні дії з використанням математичного співпроцесора; 2. Переконатися у правильності роботи кожного модуля зокрема та програми загалом. 3. Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. 4. Дати відповідь на контрольні запитання. ВАРІАНТИ ЗАВДАНЬ А, В, С, D, E, F - знакові операнди, довжиною в байтах, згідно з індексу,
значення К подано у 16-му форматі. 29 X=K-B1*C1+D3-F2/E1 12A0C029 Код програми: Main.cpp
include include 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 decn");
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 = %dn",(K-(B*C))+(D-(F/E)));
// вивід с++ результату
X = calc(B,C,D,E,F);
//виклик файлу асм
printf("asm=X = %dn",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

Результат виконання:

Висновок:
Я ОВОЛОДІВ НАВИКАМИ СТВОРЕННЯ ПРОГРАМ, ЧАСТИНИ ЯКИХ НАПИСАНІ РІЗНИМИ МОВАМИ ПРОГРАМУВАННЯ ЗАСВОЇВ ПРАВИЛА ВЗАЄМОДІЇ РІЗНИХ МОДУЛІВ.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

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

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Новини