Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
291.79 Кб
Скачать

Лабораторна робота №8

Тема: Породження процесів та потоків у ОС Windows.

Мета: Навчитись породжувати процеси та потоки у ОС Windows за допомогою програм на мові Assembler, використовуючи пакет MASM32.

Хід роботи

  1. Ознайомитись з основними теоретичними відомостями даної лабораторної роботи.

  2. Ознайомитись з приведеними в основних теоретичних відомостях прикладами програм.

  3. Ознайомитись з додатковими джерелами, приведеними в п.6 (Література).

  4. Затвердити номер індивідуального завдання у викладача.

  5. Виконати завдання згідно з номером.

Завдання

Скласти на мові асемблер для ОС Windows програму, використовуючи пакет MASM32. Результат виводиться на екран.

Програма повинна виводити повідомлення, яке має містити:

Заголовок - № групи

Зміст – Ф.І.П

Тип – згідно варіанту:

Тип

1

2

MB_ABORTRETRYIGNORE

3

4

MB_OK

5

6

MB_OKCANCEL

7

8

MB_RETRYCANCEL

9

10

MB_YESNO

11

12

MB_YESNOCANCEL

13

14

MB_ICONEXCLAMATION

15

16

MB_ICONWARNING

17

18

MB_ICONINFORMATION

19

20

MB_ICONASTERISK

21

22

MB_ICONQUESTION

23

24

MB_ICONSTOP

25

26

MB_ICONERROR

27

28

MB_ICONHAND

Контрольні запитання

  1. Переваги програмування в ОС Windows на асемблері?

  2. Різниця між асемблерними програмами під ОС MS-DOS та під ОС Windows?

  3. Функції АРІ?

  4. Що таке процес?

  5. Як створити процес?

  6. Що таке потік?

  7. Як створити потік?

Додаток 1

Текст простої програми виводу повідомлення на екран.

.386

.model flat, stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\user32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

.data

MsgCaption db "Повiдомлення!",0

MsgBoxText db "Привiт Win32!",0

.code

start:

invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK

invoke ExitProcess,NULL

end start

Результат виконання програми:

Опис програми:

.386 – директива, яка говорить асемблеру використовувати набір операцій для процесора 80386.

MODEL FLAT, STDCALL - .MODEL – директива, яка визначає модель пам’яті програми. Під WIN32 існує тільки одна модель – плоска. .STDCALL – говорить асемблеру про порядок передачі параметрів: зліва направо чи справа наліво.

option casemap:none – Робить асемблер чутливим до регістру символів.

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\user32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

.DATA – В цій частині знаходяться ініціалізовані дані програми.

invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK - виклик функції MessageBox, яка виводить діалогове вікно. Параметрами цієї функції є: дескриптор вікна, адреса тексту, який виведеться у діалоговому вікні, адреса тексту, який виведеться у заголовку діалогового вікна, прапорець. Прапорець може мати різні значення: MB_ABORTRETRYIGNORE (тоді діалогове вікно буде мати три кнопки: Abort, Retry і Ignore), MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO,MB_YESNOCANCEL і багато інших.

invoke ExitProcess,NULL - Функція завершує всі породжені процеси і потоки.

Додаток 2

Текст програми створення процесу.

.386

.model flat,stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\user32.inc

include \masm32\include\kernel32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

.data

MsgBoxText db "Ця програма запустить новий процес!",0

MsgCaption db "Повiдомлення!",0

processInfo PROCESS_INFORMATION <>

programname db "Hello.exe",0

startInfo STARTUPINFO <>

.code

main: