сопроцетор. Федеральное агенство связи федеральное государственное бюджетное
Скачать 100.64 Kb.
|
ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРСКИЙ ГОСУДАРСТВЕННИЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПБГУТ) ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС) КАФЕДРА ПРОГРАММНОЦ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ) ДИСЦИПЛИНА : « Машинно-зависимые языки программирования» Лабораторная работа Nº 5. ТЕМА: «Сопроцессор» Вариант Nº 9 Выполнил: Студент группы ИКПИ -94 Жоау Ошвалду Б. Педру Подпись__________ Приния: Морозов Д.П Подпись__________ «____»____________2020 А. Постановка задачи Вычислить заданное вещественное выражение для исходных данных в форматах Float(SINGLE для переменных a и b) и Int(INTEGER - все остальные переменные), используя арифметические операции сопроцессора. Исходные значения переменных вводятся пользователем с клавиатуры. Они должны быть максимально приближены к максимально-возможным для тех типов данных, с которыми решается задача. При вводе данных рекомендуется вывести диапазон возможных значений. Размер и тип числителя, знаменителя и результата зависит от заданного выражения. Вариант номер 9 (53+c*2-1)/(b-a+4) B. Результаты вычислений C. Программа на ASM //Signed Byte CPP #include extern "C" {void functGetAsm -(void);} short int a, b, c; float numerator = 0.0; float denominator = 0.0; int rezultat; void functionCPP() { numerator = (53+ c*2 -1); denominator =(b-a+4); rezultat = (float) (numerator / denominator); cout<< "CPP Numerator: " << numerator << "\n"; cout<< "CPP Denominador: " << denominator << "\n"; cout<< CPP Rezultat " << rezultat << "\n"; void functionASM() { rezultat = 0; functGetAsm(); cout<< "ASM Numerator: " << numerator << "\n"; cout<< "ASM Denominator: " << denominator << "\n"; cout<< ASM Rezultat " << rezultat << "\n"; } int main() { cout<< "Insert the number a: "; cin>> a; cout<< "\n Insert the number b: "; cin>> b; cout<< "\n Insert the number c: "; cin>> c; cout<< "\n"; functionCPP(); functionASM(); return 0; } .MODEL large, c .data Extrn aa: dword, bb: dword, cc: dword, numerator: dword, denominator: dword, rezultat: dword; .code public functGetAsm two dd 2. fiftyTree dd 53. four dd 4. one dd 1. functGetAsm proc far ;begin the program finit ; (b-a+4)-------------------------------- fild, cc ; st(0)=cc fmult two, st(0) ; st(0)=st(0)*2 fadd fiftyTree ; st(0)=st(0)+53 fsub one ;st(0)=st(0)-1 fst numerator ; nmerador= st(0) ; (b-a+4)-------------------------------------------------------------- fild bb ;st(0)=bb fild aa ;st(0)=aa ;st(1)=bb fsubp st(1),st(0) ; st(1)= st(1)-st((0) fadd four ; st(1) =st(1)+4 fst denominator ; denominador =(b-a+4) ;rezultat ((53+c*2-1)/(b-a+4))------------------------------------------- fild numerator ;st(0)= numerador fdiv st(0),st(1) ; st((0)/st(1) fst rezultat ; rezultat=st(0) ret functGetAsm endp ; finished the metod asm end ; finished the program D. Выводы Тот факт, что результат работы программы совпадает со всеми поставленными требованиями, я прихожу к выводу, что программа создана и работает верно. |