You are on page 1of 9

Міністерство освіти і науки України

Херсонський національний технічний університет

Кафедра Програмних засобів і технологій

Звіт №4

Виконав студент групи 1ПРс Неласов І.О.

Перевірив Комісаров О.С.


Лабораторна робота № 4.

Тема: Консольні програми Assembler з MASM32.

Мета: Розробити консольні програми на Assembler під Windows.

Хід роботи

Завдання: Варіант 8. Розробити програми, котрі за допомогою іменованих


каналів передають між собою поточний час (00:00:00). Результат вивести у
вікно повідомлення.

Щоб розробити цю програму слід виконати наступні кроки:

1. Імпортувати необхідні бібліотеки функцій Windows. Для цього


використовується команда INCLUDE.

Рис. 1.1 - Іморт необхідних бібліотек

2. Оголосити тип даних SYSTEMTIME, який буде використовуватися


для зберігання інформації про час.

Рис. 1.2 – Оголошення SYSTEMTIME


3. Створити іменованований канал за допомогою функції
CreateNamedPipe.

Рис. 1.3 – Створення іменованого каналу

4. Отримати теперішній час за допомогою функції GetLocalTime.


Отримати теперішній час можна викликаючи цю функцію та передаючи їй
указівник на структуру SYSTEMTIME, яку було оголошено у кроці 2:

Рис. 1.4 – Створення іменованого каналу

5. Записати інформації про час у іменований канал з допомогою функції


WriteFile. Можна записати інформацію про час у канал, викликаючи цю
функцію та передаючи їй указівник на структуру SYSTEMTIME:

Рис. 1.5 – Записування інформації про час

6. Закрити іменований канал за допомогою функції CloseHandle. Це


може виглядати так:

Рис. 1.6 – Закриття іменнованого каналу


7. Відобразити результат у вікні повідомлення з допомогою функції
MessageBox. Результат можете відобразити використовуючи цю функцію та
форматуючи рядок у такому вигляді:

Рис. 1.7 – Форматування рядка для виводу

Рисунки 1.9, 1.10 та 1.11 – Код програми


Рисунок 1.13 – Результат виконання програми
Контрольні запитання

1. Назвати основні механізми міжпроцесової взаємодії.

Clipboard – буфер. Цей механізм міжпросесової взаємодії


використовується для копіювання та вставки текстової чи графічної
інформації.
COM – це протокол, котрий з’єднує один програмний модуль з іншим.
COM - є потужною інтеграційною технологією, котра дозволяє
складати різні частини програмного забезпечення в одну програму.
DDE - це протокол, котрий дає змогу програмам обмінюватись даними
різних форматів.
File Mapping – даний механізм дає можливість процесові
користуватись файлом на диску та як би він був занесений у пам’ять, в
адресний простір даного процесу.
Mailslot – цей механізм забезпечує однонаправлену міжпроцесову
взаємодію. Будь – який процес, котрий створить mailslot стає mailslot –
сервером. Інший процес, mailslot – клієнт, передає інформацію серверу,
вписуючи її у mailslot сервера.
Pipe – канал. Існує однонаправлений механізм передачі даних через
канал, використовуючи анонімні канали та двонаправлений –
використовуючи іменовані канали.
RPC – віддалений виклик процедур. Даний механізм дозволяє керувати
процесами на віддалених комп’ютерах.

2. Назвати основні механізми синхронізації процесів та потоків.

Для синхронізації доступу декількох програм до одного ресурсу


використовують об’єкти синхронізації (synchronization objects) та
очікуючі функції (wait functions).
Також існують інші механізми синхронізації:

• Взаємо – виключний ввід і вивід (overlapped input and output)

• Асинхронний виклик процедур (asynchronous procedure calls)

• Об’єкти критичної секції (critical section objects)

• Блокований змінний доступ (interlocked variable access)

3. Які об’єкти використовують для синхронізації процесів та потоків?.

Об’єкти, дескриптор котрих може використовуватись в одній з функцій


очікування для корегування виконання багатьох потоків. Більше ніж
один процес може мати дескриптор до одного і того ж об’єкту
синхронізації, таким чином роблячи міжпроцесову синхронізацію
можливою. Використовуються такі об’єкти: Event, Mutex, Semaphore,
Waitable timer, Change notification, Console input, Job, Process, Thread.

4. Назвати основні типи очікуючих функцій.

Існують три типи очікуючих функцій:

• Одно – об’єктні (single-object)

• Багато – об’єктні (multiple-object)

• Функції застереження (alertable)

5. Що таке атом?

Атом - це число або стрічка, котрі повертаються програмі після того, як


вона зробила запис у загальній таблиці атомів. В цій таблиці
розміщуються ідентифікатори (атоми) та стрічки (імена атомів).
6. Як компонувати та транслювати консольні програми в MASM32?
Для транслювання і компонування даного .ASM файлу
використовується пакет MASM32. Для того щоб відтранслювати
(ML.EXE) та скомпонувати (злінкувати) (LINK.EXE) даний .ASM код,
потрібно вказати в командній стрічці такі параметри:

ml /c /coff /Cp Hello.asm link /SUBSYSTEM:WINDOWS /LIBPATH:d:\


masm32\lib Hello.obj
Висновки

У процесі виконання даної лабораторної роботи, я дізнався, що:

 Існує багато різних механізмів, які дозволяють процесам


взаємодіяти між собою у системі.
 Кожен з механізмів має свої особливості та може бути
використаний в залежності від конкретних потреб і вимог.
 Для того, щоб оптимально використовувати механізми
міжпроцесової взаємодії у своїй програмі, слід ознайомитися з їх
документацією та прикладами коду.
 Ще одним важливим висновком є те, що міжпроцесова взаємодія є
важким і технічно складним процесом, що вимагає доброго
розуміння роботи системи та програмування. Нерідко, розробка
програм, що взаємодіють між собою, вимагає вирішення складних
технічних задач та вирішення різноманітних проблем.

You might also like