Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ
/
ЗВІТ
до лабораторної роботи № 4
з дисципліни
" Системне програмування"
Львів – 2012
Тема: ПРОГРАМУВАННЯ СПІВПРОЦЕСОРА З ВИКОРИСТАННЯМ КОМАНД ОБЧИСЛЕННЯ ТРАНСЦЕНДЕНТНИХ ФУНКЦІЙ ТА РЕАЛІЗАЦІЯ РОЗГАЛУЖЕНЬ ПРИ ПОРІВНЯННІ ДАНИХ ДІЙСНОГО ТИПУ.
Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення трансцендентних функцій та реалізації розгалужень.
ЗАВДАННЯ
1. Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу.
Вхідні дані повинні вводитися з клавіатури, під час виконання програми в десятковому форматі зі знаком.
Програма повинна складатися з двох модулів:
головний модуль – створюється мовою С і має забезпечити ввід необхідних даних, виклик асемблерної процедури для обчислення виразу та вивід результату обчислень;
модуль безпосередніх обчислень – здійснює всі необхідні арифметичні дії з використанням математичного співпроцесора;
2.Переконатися у правильності роботи кожного модуля зокрема та програми загалом.
3.Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
4.Дати відповідь на контрольні запитання.
ВАРІАНТИ ЗАВДАНЬ
5
Код програми:
Main.cpp
#include <stdio.h>
#include <math.h>
extern "C" void calc(void);
extern "C"
{
float X=0;
float A=0;
float Cv=0;
float D=0;
float Y=0;
};
int main()
{
printf("Please, enter X:\n");
printf("A = ");
scanf_s("%f",&A);
printf("C = ");
scanf_s("%f",&Cv);
printf("D = ");
scanf_s("%f",&D);
if (Cv>D){
if(log(1-A/4)<=0){
printf("ERROR: Ln <=0 ne dopystumuy\n");
}
else{
calc();
printf("X = %.4f\n",X);
}
}
if (D>=Cv){
if(Cv-tan(A/2)==0){
printf("ERROR: Dilennya na 0 nemojlyve!\n");
}
else{
calc();
printf("X = %.4f\n",X);
}
}
return 0;
}
Calc.asm
.586
.model flat,C
.data
EXTRN X:DWORD, A:DWORD, Cv:DWORD, D:DWORD
.data
tmp dd 0
.code
calc PROC
finit
fld Cv
fcomp D
fstsw ax
sahf
ja _bilshe
jmp _menshe
_bilshe:
mov tmp,2
fild tmp
fld Cv
fmul
fld D
mov tmp,23
fild tmp
fdiv
fsub
FLDLN2
mov tmp,1
fild tmp
fld A
mov tmp,4
fild tmp
fdiv
fsub
FYL2X
fdiv
jmp _kinets
_menshe:
mov tmp,4
fild tmp
fld Cv
fmul
fld D
fadd
mov tmp,1
fild tmp
fsub
fld Cv
fld A
mov tmp,2
fild tmp
fdiv
fptan
fmul
fsub
fdiv
_kinets:
fstp X
ret
calc endp
end
Результат виконання:
C>D
/
C<=D
/
Висновок: На даній лабораторній роботі оволодів навиками створення програм, частини яких написані різними мовами програмування Засвоїв правила взаємодії різних модулів.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!