Частина тексту файла (без зображень, графіків і формул):
Лабораторна робота №3
Тема:Використання математичного співпроцесора
Мета роботи: ознайомитися з принципом роботи математичного співпроцесора і використати його можливості для обчислення арифметичних виразів із числами з плаваючою комою
Завдання:
"X=(A2-B1-K)*D1+E4/F K = 311
Код програми:
Main.cpp
#include <stdio.h>
#include <conio.h>
extern "C" double calc(float,float,float,float,float);
extrn "C" const dword k;
void main(void)
{
double res=0;
float a=0;
float b=0;
float d=0;
float e=0;
float f=0;
printf("X=(A2-B1-K)*D1+E4/F2:\n\n");
printf("Please, enter your numbers:\n");
printf("A = ");
scanf_s("%f",&b);
printf("B = ");
scanf_s("%f",&b);
printf("D = ");
scanf_s("%f",&d);
printf("E = ");
scanf_s("%f",&e);
printf("F = ");
scanf_s("%f",&f);
res=calc(a,b,d,e,f);
printf("Result in ASM: %f\n", res);
printf("Result is C: %f\n",(a-b-k)*d+e/d) ;
_getch();
Calc.asm
.386
.model flat,c
PUBLIC C calc
.const
PUBLIC k
k dw 311.0
.code
calc proc
push ebp
mov ebp,esp
finit ;ініціалізація співпроцесора
fld dword ptr[ebp+8];записати в вершину стеку сівпроцесора значення шо записано в [ebp+8]
fsub dword ptr[ebp+12];від [ebp+8]відняти [ebp+12]
fsub k; відняти к
fmul dword ptr[ebp+16] ;помножити на [ebp+16]
fadd ;додати
fld dword ptr[ebp+20] ;записати в вершину стеку сівпроцесора значення шо записано в [ebp+20]
fdiv dword ptr[ebp+24] ;поділити на [ebp+24]
pop ebp
ret
calc endp
end
Результат виконання:
Висновок: Оволодів навиками створення програм, частини яких написані різними мовами програмування. Засвоїв правила взаємодії між програмними модулями різних мов програмування