ЗМІШАНЕ ПРОГРАМУВАННЯ НА МОВАХ С ТА АСЕМБЛЕР

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

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

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

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
СП
Варіант:
11

Частина тексту файла (без зображень, графіків і формул):

ЛАБОРАТОНА РОБОТА №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 Висновок і результат роботи програми:  Висновок: познайомився з принципами роботи математичного співпроцесора і використав його можливості для обчислення арифметичних виразів.
Антиботан аватар за замовчуванням

10.03.2015 20:03-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!