Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

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

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

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

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

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

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

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

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

  8. Як компонувати та транслювати в MASM32?

6.Список використаної літератури

  1. Help по функціях API - www.nan32asm.cjb.net

  2. Книга по програмуванню під Windows - www.win32asm.cjb.net

  3. Пакет MASM32 www.masm32.cjb.net

  4. Книги та програми - www.sources.ru і www.win32asm.newmail.ru

  5. Домашня сторінка MSAM32 - www.movsd.com

  6. Assembler /В. Юров – СПб.: Питер,2001.-624с.

  7. 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]