
- •Лабораторна робота №8
- •Хід роботи
- •Завдання
- •Додаток 1
- •Invoke MessageBox, null,addr MsgBoxText, addr MsgCaption, mb_ok
- •Invoke ExitProcess,null
- •Додаток 4
- •Invoke MessageBox, null,addr MsgBoxText, addr MsgCaption, mb_ok
- •Invoke ExitProcess,null
- •Додаток 5
- •Invoke ExitProcess,null
- •Invoke ExitProcess,null
- •Invoke ExitProcess,null
Лабораторна робота №8
Тема: Породження процесів та потоків у ОС Windows.
Мета: Навчитись породжувати процеси та потоки у ОС Windows за допомогою програм на мові Assembler, використовуючи пакет MASM32.
Хід роботи
Ознайомитись з основними теоретичними відомостями даної лабораторної роботи.
Ознайомитись з приведеними в основних теоретичних відомостях прикладами програм.
Ознайомитись з додатковими джерелами, приведеними в п.6 (Література).
Затвердити номер індивідуального завдання у викладача.
Виконати завдання згідно з номером.
Завдання
Скласти на мові асемблер для ОС 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 |
Контрольні запитання
Переваги програмування в ОС Windows на асемблері?
Різниця між асемблерними програмами під ОС MS-DOS та під ОС Windows?
Функції АРІ?
Що таке процес?
Як створити процес?
Що таке потік?
Як створити потік?
Додаток 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: