Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра «Електронні обчислювальні машини»
Лабораторна робота №2
“ОСОБЛИВОСТІ ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ ФУНКЦІЙ АРІ”
з дисципліни:
“Системного програмування”
Мета роботи:
Ознайомитись з можливостями програмування на Асемблері під Windows та засвоїти навики використання функцій АРІ.
Порядок виконання роботи:
Набрати подану нижче програму для визначення імені комп'ютера (яке задається системним адміністратором при установці операційної системи), зберегти її у файлі з розширенням ".ASM ".
Відкомпілювати за допомогою MASM32 набрану програму та запустити одержаний exe-файл на виконання. Записати ім'я комп'ютера, яке отримала програма.
Розглянути текст програми, вивчити загальну структуру програми із застосуванням функцій Win32 API.
Замінити виклик функції API GetComputerNameA на виклик однієї з функцій (згідно варіанту), змінивши відповідним чином параметри.
Створити ехе-файл модифікованої програми та продемонструвати його роботу.
Підготувати та захистити звіт. В звіті обов’язково мають бути описані параметри виклику функції.
19
CharLowerA
Виконання роботи:
Лістинг програми
.586 ;для процесора не нижче INTEL-586
.model flat, STDCALL ;компілювати як програму для WIN32
option casemap :none ;код чутливий до регістру літер
;Визначення зовнішніх процедур:
include \masm32\include\windows.inc ;завжди першим
include \masm32\macros\macros.asm ;підтримка макросів MASM
;-------------------------------підключення файлів з форматами прототипів виклику функцій
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
;-------------------------------підключення заголовків бібліотек експортованих функцій
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data ;вміст сегменту даних
_title db ' Лабораторна робота № 5 ', 0 ;текст заголовку
_message_ConvertToLower db ' ConvertToLowerCase character ', 0 ;текст повідомлення
_message_ERROR db ' ERROR: illegal characters ',0 ;текст повідомлення
_Symbol db 'Program',0 ;текст, який перевіряємо
.code ;вміст сегменту коду
Start:
;формування параметрів для виклику заданої функції
xor eax, eax
mov al, _Symbol
push eax ;завантаження даного символу
.IF ( EAX >= 'A' && EAX <= 'Z' ) || ( EAX >= 'a' && EAX <= 'z' )
.ELSE
mov EBX, 0
jmp error ;перехід, якщо не виконується умова
.ENDIF
call CharLowerA ;виклик функції API
error:
;формування параметрів вікна для відображення результату
push 40h ;стиль вікна - одна кнопка "ОК"
push offset _title ;адреса рядка із заголовком
.IF EBX == 0 ;адреса потрібного повідомлення
push offset _message_ERROR
jmp go_error ;перехід, якщо помилка
.ENDIF
.IF EAX
push offset _message_ConvertToLower
.ENDIF
go_error:
push 0 ;хендл програми-власника вікна
call MessageBoxA ;виклик функції API
push 0 ;код виходу з програми
call ExitProcess ;завершення програми
end Start ;закінчення сегменту коду
Параметри виклику функції:
Функція CharLower конвертує рядок символів або одиничний символ у нижній регістр. Якщо операнд - рядок символів, функція перетворює символи на місці.
LPTSTR CharLower (
LPTSTR lpsz
);
Результати виконання програми:
/ /
а) б)
Рис.1 Результат виконання програми. Повідомлення, що перший символ даного рядка а) відконвертувало у нижній регістрі; б) помилковий і не є літерою англійської абетки.
Висновки:
Під час виконання даної лабораторної роботи, я ознайомився з можливостями програмування на ассемблерній мові під Windows та засвоїв навики використання функцій АРІ.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!