
- •6.050101 «Комп’ютерні науки»
- •Загальні вимоги до виконання лабораторних робіт
- •Лабораторна робота №1
- •1. Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Створення процесу
- •1.3 Створення потоку
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Функція CreateProcess створює новий процес.
- •Додаток 4
- •Додаток 5
- •Addr ThreadId – Створює новий потік.
- •Додаток 6
- •Додаток 7
- •Лабораторна робота №2
- •1. Основні теоретичні відомості
- •1.1 Механізми міжпроцесової взаємодії
- •1.2 Механізми синхронізації процесів та потоків
- •1.3 Об’єкти синхронізації
- •1.4 Очікуючі функції
- •1.5 Створення атома
- •1.6 Створення каналу
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Додаток 4
- •Додаток 5 Детальний опис функції створення анонімного каналу
- •Додаток 6 Детальний опис функції створення іменованого каналу
- •Додаток 7
- •Додаток 8
- •Додаток 9 Текст програми створення анонімного каналу
- •Додаток 10
- •Лабораторна робота №3
- •1. Основні теоретичні відомості
- •2. Приклад програми створення dll
- •Опис програми My_dll.Asm та файлу лістінга My_dll.Def
- •4. Трансляція та компонування dll Для того, щоб відтранслювати(ml.Exe) та зкомпонувати (link.Exe) даний .Asm код, потрібно використовувати наступні параметри:
- •5. Приклад використання функції з бібліотеки
- •Приклад програми завантаження dll
- •7. Створення файлу лістінгу існуючої бібліотеки
- •8. Приклад передачі даних у функцію бібліотеки Створення динамічно завантажуваної бібліотеки
- •Передача параметру у функцію бібліотеки
- •9. Хід роботи
- •11. Завдання
- •12. Контрольні запитання
- •13. Список використаної літератури
- •Лабораторна робота №4
- •1. Основні теоретичні відомості
- •Параметри функції CreateToolhelp32Snapshot:
- •2. Перегляд процесів
- •3. Перегляд потоків
- •Значення результуючого параметру (регістр еах) таке саме як в Process32First і Process32Next.
- •4. Перегляд хіпів асоційованих з процесом
- •5. Перегляд модулів, які використовує процес
- •6. Керування процесами
- •7. Хід роботи
- •9. Завдання На 75 балів виконати 4 завдання:
- •10. Контрольні запитання
- •11. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №5
- •Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Категорії даних
- •1.3 Відкриття і закриття ключів реєстру
- •1.4 Створення підключа у відкритому ключі реєстру
- •1.5 Отримання інформації з ключа реєстру
- •1.6 Перелічення списку значень для заданого ключа реєстру
- •1.7 Виявлення змін в гілці реєстру
- •1.8 Робота з налаштуваннями операційної системи через реєстр
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №6
- •1. Основні теоретичні відомості
- •Породження процесів
- •1.2 Породження потоків
- •2. Хід роботи
- •4. Індивідуальні завдання
- •5. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
5. Контрольні запитання
Переваги програмування в ОС Windows на асемблері?
Різниця між асемблерними програмами під ОС MS-DOS та під ОС Windows?
Функції АРІ?
Що таке процес?
Як створити процес?
Що таке потік?
Як створити потік?
Як компонувати та транслювати в MASM32?
6.Список використаної літератури
Help по функціях API - www.nan32asm.cjb.net
Книга по програмуванню під Windows - www.win32asm.cjb.net
Пакет MASM32 www.masm32.cjb.net
Книги та програми - www.sources.ru і www.win32asm.newmail.ru
Домашня сторінка MSAM32 - www.movsd.com
Assembler /В. Юров – СПб.: Питер,2001.-624с.
Assembler : практикум /В. Юров – СПб.: Питер,2001.-400с.
Додаток 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:
invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
invoke CreateProcess,ADDR programname,NULL,NULL,NULL,FALSE,\
NORMAL_PRIORITY_CLASS,\
NULL,NULL,ADDR startInfo,ADDR processInfo
invoke ExitProcess,NULL
e
nd
main
Результат виконання програми:
Опис програми :
processInfo PROCESS_INFORMATION <> - Оголошується структура processInfo, яка має тип структури PROCESS_INFORMATION. Цю структуру заповнює даними, які містять інформацію про новостворений процес і його головний потік, функція CreateProcess.
PROCESS_INFORMATION STRUCT
hProcess DWORD ? ;Дескриптор створеного процесу
hThread DWORD ? ;Дескриптор головного потоку створеного процесу
dwProcessId DWORD ? ;Ідентифікатор процесу
dwThreadId DWORD ? ;Ідентифікатор основного потоку
PROCESS_INFORMATION ENDS
startInfo STARTUPINFO <> - Оголошується структура startInfo, котра визначає властивості створеного процесом вікна.
Дескриптор процесу - це значення, яке повертає Windows для використання іншими АРІ - функціями, зв’язаними з процесами. Дескриптор процесу не може використовуватися для ідентифікації процесу, так як він не унікальний. Процес можна примусово зупинити функцією TerminateProcess.