Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНА РОБОТА 4.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
297 Кб
Скачать
☆

1) Створення проекту

У Visual Studio звичайно програма створюється у вигляді проекту, що складається з декількох програмних модулів. Що стосується програм, які написані різними мовами, то їх зв’язок забезпечує вбудований компонувальник середовища. Програми, а точніше їх об’єктні файли, зв’язуються та об’єднуються в єдину програму.

Для створення нового проекта у Visual Studio, як вже відомо з виконання лабораторної роботи 4-2, необхідно у головному вікні перейти на меню File -> New ->Project, далі для типу проекта вибрати Visual С++ і Win32 Console Application (проекту мовою Асемблера немає), а в полі Name ввести назву проекту. Після натискання ОК з’являється нове вікно, в якому треба перейти на вкладку Application Settings і у вікні налаштувань відмітити поле Empty project, після чого натиснути кнопку Finish. Новий проект буде створений.

(Для розробки і компіляції С++ програми доцільно використовувати середовище Microsoft Visual C++, оскільки в ньому компіляція С++ програм відбувається за допомогою переведення програми мовою Асемблера з синтаксисом MASM, після чого подальша обробка здійснюється засобами трансляції та компонування з пакету Microsoft Assembler відповідної версії (для Visual Studio 2005 це MASM v8.0).

Звичайно Visual Studio не розпізнає файли мовою Асемблера. Для підтримки мови Асемблера треба включити у проекті умови побудови для файлів *.asm. Для цього обираємо пункт в меню Custom Build Rules.... У новому вікні слід увімкнути готове правило для *.asm файлів. Для цього треба поставити галочку навпроти правила «Microsoft Macro Assembler».

Далі необхідно додати файл test2011.cpp до проекту. Для цього потрібно перейти в Solution Explorer і зробити правий клік на вкладці Source Files. У випадаючому меню вибрати Add->New Item…, а далі слід вибрати С++ File (.cpp) і в полі Name ввести назву файлу, наприклад, test2011.cpp. Натиснувши кнопку Add, додамо файл до проекту. Далі в цей файл можна скопіювати код С++ програми.

2) Створення *.Asm файлу

Асемблерний файл можливо скомпілювати окремо, а потім додати у С/С++ проект лише його файл.

Для цього окремо скомпільований об’єктний файл асемблерної програми потрібно записати в папку проекту ProjectName\ProjectName\Debug. Потім додати цей файл до проекту допомогою меню проекту Add > Existing Item…

Проте, можливо і доцільно внести до проекту, крім С++ файлів, саме початковий асемблерний файл (з розширенням .asm).

Створити такий файл можна наступними способами:

  1. Відкрити меню Add > New Item… У вікні, що відкриється, написати назву файлу з розширенням .asm. Далі в цей файл внести чи скопіювати текст асемблерної підпрограми.

  2. Створити окремо файл з розширенням .asm за допомогою, наприклад, додатку Блокнот. Відкрити меню папки проекту Add > Existing Item… У вікні, що відкриється, знайти та обрати створений .asm файл. Якщо правило компіляції *.asm файлів досі не було обрано, вікно Custom Build Rules... відкриється саме.

3) Налагодження програми

Середовище Visual Studio надає зручні засоби для налагодження програми як мовою C++, так і мовою Асемблера. По-перше, можна поставити breakpoint у будь-якій частині програми та відслідковувати покроково за виконанням програми. По-друге, можна легко подивитись вміст регістру, навівши курсор мишки на його ідентифікатор у програмі. І, по-третє, існують спеціальні вікна стану регістрів та пам’яті під час налаштування. Їх можна увімкнути у меню

Debug > Windows > Registers (Alt+5)

та

Debug > Windows > Memory > Memory 1 (Alt+6)

під час виконання програми. Значення в цих вікнах подаються у 16-ковому форматі.

4-2.3. Приклад організації взаємодії програми на мові C++ і програми на мові Асемблера

Процедура на мові Асемблера (BigShowN) в файлі bigshown.asm має два параметри: перший із них – адреса байтового масиву, другий параметр передається за значенням і задає кількість байтів в масиві. Програма виводить байти масиву в шістнадцятирічному форматі на екран. Байти групуються при відображенні в подвійні слова. Байт з найменшою адресою (заданою першим параметром) завжди виводиться в найправішій позиції останнього рядка, що зручно для зорового порівняння двох масивів. Процедура призначена для перевірки вірності виконання завдань лабораторної роботи.

Для виведення на екран використовується функція printf. Їй передається зміщення рядка, котрий треба вивести на екран, та список параметрів для виводу, якщо вони потрібні.

Програма на мові C++ знаходиться в файлі lab4.cpp. Програма містить всі необхідні елементи для забезпечення зв'язку з асемблерною процедурою BigShowN. Програма демонструє незалежність процедури BigShowN від типу даних мови C++. Це означає, що процедуру BigShowN можна використовувати і для аналізу машинного формату типів даних мови C++. Наприклад, за допомогою процедури BigShowN легко визначається формат логічних значень True та False.

4-2.4. Завдання на виконання роботи