Частина тексту файла (без зображень, графіків і формул):
ЛАБОРАТОНА РОБОТА №2
ТЕМА:ЗМІШАНЕ ПРОГРАМУВАННЯ НА МОВАХ С ТА АСЕМБЛЕР
Мета роботи: оволодіти навиками створення програм, частини яких написані різними мовами програмування. Засвоїти правила взаємодії між програмними модулями різних мов програмування
Завдання:
Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу.Вхідні дані повинні вводитися з клавіатури, під час виконання програми в десятковому форматі зі знаком. Програма повинна складатися з двох модулів:головний модуль – створюється мовою С і має забезпечити ввід необхідних даних, виклик асемблерної процедури для обчислення виразу та вивід результату обчислень;модуль безпосередніх обчислень – здійснює всі необхідні арифметичні дії з використанням математичного співпроцесора;
Переконатися у правильності роботи кожного модуля зокрема та програми загалом.
Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
Дати відповідь на контрольні запитання.
ВАРІАНТИ ЗАВДАНЬ
№
Вираз
K
11
X=(A4-B2-K)*2+E4/4
311
Лістинг програми:
//Модуль С
#include <stdio.h>
#include <conio.h>
extrn "C" const dword k;
extern "C" int calc(int,int,int);
int main()
{
int a=0;
int b=0;
int e=0;
int Result=0;
printf("(A4-B2-K)*2+E4/4:\n\n");//4*(B2-C1)+D2/4+K
printf("Please, enter your numbers:\n");
printf("A = ");
scanf_s("%d",&a);
printf("B = ");
scanf_s("%d",&b);
printf("E= ");
scanf_s("%d",&e);
Result=calc(a,b,e);
printf("Result in ASM: %d\n",Result);
printf("Result is C: %d\n", (a-b-k)*2+e/4);
_getch();
}
;Модуль ASM
.386
.model flat,c
PUBLIC calc
extern c k:dword
.const
PUBLIC k
k dq 311
.code
calc proc
push ebp
mov ebp,esp
mov eax,dword ptr[ebp+8] ;записати в еах значення яке є в комірці [ebp+8]
sub eax,dword ptr[ebp+12] ; відняти від [ebp+8] то що записано в [ebp+12]
sub eax,k ;відняти К
shl eax,1 ;1 зсув вліво(множення на 2)
mov ebx,dword ptr[ebp+16]; записати в еах значення яке є в комірці [ebp+16]
shr ebx,2 ;2 зсуви вправо (ділення на 4)
add eax,ebx ;додати до еах ебх
pop ebp
ret
calc endp
end
Висновок і результат роботи програми:
Висновок: познайомився з принципами роботи математичного співпроцесора і використав його можливості для обчислення арифметичних виразів.