Створення елементарної Windows-програми з віконним інтерфейсом на мові Асемблер

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Контрольна розрахункова робота
Предмет:
Підприємництво

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Інститут підприємництва і перспективних технологій при національному університеті «Львівська політехніка» Контрольна розрахункова робота на тему «Створення елементарної Windows-програми з віконним інтерфейсом на мові Асемблер» Створення вікон на Асемблері Мета: ознайомитись з створенням вікон в середовищі Асемблер Теоретичні відомості Windows містить дуже багато ресурсів для програм. Центральне місце в них займає Win32 API. Windows API це набір дуже корисних і готових до використання будь-якою програмою функцій, розташованих усередині Windows і функціонально об'єднаних в DLL-файлах, таких як Kernel32.dll, User32.dll і Gdi32.dll. Kernel32.dll містить API-функции, що працюють з пам'яттю і керуючі процесами. User32.dll управляє інтерфейсом Вашої програми. Gdi32.dll містить графічні функції. Окрім трьох основних існують і інші бібліотеки, інформація про них вам також доступна. Windows-програма динамічно пов'язана з dll-файлами, тобто код API-функції не включається у виконуваний файл, на це місце поміщається команда безумовного переходу в те місце відповідної бібліотеки, де знаходиться дана функція. Для того, щоб Ваша програма змогла знайти необхідні API-функции в процесі роботи, Ви повинні включити деяку інформацію .exe файл. Необхідна інформація знаходиться в бібліотечних функцій, що імпортуються. Ви повинні пов'язати свою програму з вірною бібліотекою функцій, що імпортуються, інакше вона не зможе знайти необхідну функцію. Існує два типи API-функций: ANSI і Unicode. Імена ANSI функцій закінчуються символом "А", наприклад стандартне вікно. Імена Unicode функцій закінчується символом "W" (Wide char), наприклад стандартне вікно. Windows 95 в основному використовує ANSI функції, Windows NT - Unicode. Текст програми: .386 .model flat, stdcall include win32.inc ;Файл win32.inc содержит некоторые нужные константы и структуры extrn CreateWindowExA:PROC extrn DefWindowProcA:PROC extrn DispatchMessageA:PROC extrn ExitProcess:PROC extrn GetMessageA:PROC extrn GetModuleHandleA:PROC extrn LoadCursorA:PROC extrn LoadIconA:PROC extrn PostQuitMessage:PROC extrn RegisterClassA:PROC extrn ShowWindow:PROC extrn TranslateMessage:PROC extrn UpdateWindow:PROC .data newhwnd dd 0 msg MSGSTRUCT <?> wc WNDCLASS <?> hInst dd 0 szTitleName db ‘Виконав Шиш володимир’,0 szClassName db 'ASMCLASS32',0 .code start: push 0 call GetModuleHandleA mov [hInst], eax ;Получим дискриптор программы. ;Далее инициализируем структуру WndClass для регистрации окна mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS ;clsStyle - определяет стиль класса mov [wc.clsLpfnWndProc], offset WndProc ;clsLpfnWndProc - указывает на процедуру окна mov [wc.clsCbClsExtra], 0 mov [wc.clsCbWndExtra], 0 mov eax, [hInst] mov [wc.clsHInstance], eax ;clsHInstance - содержит дискриптор программы push IDI_APPLICATION push 0 call LoadIconA mov [wc.clsHIcon], eax push IDC_ARROW push 0 call LoadCursorA mov [wc.clsHCursor], eax mov [wc.clsHbrBackground], COLOR_WINDOW + 1 mov dword ptr [wc.clsLpszMenuName], 0 mov dword ptr [wc.clsLpszClassName], offset szClassName ;clsLpszClassName - определяет имя класса окна push offset wc call RegisterClassA ;Создаем окно: push 0 push [hInst] ; дискриптор окна push 0 push 0 push CW_USEDEFAULT ; высота push CW_USEDEFAULT ; ширина push CW_USEDEFAULT ; y push CW_USEDEFAULT ; x push WS_OVERLAPPEDWINDOW ; стиль push offset szTitleName ; заголовок окна push offset szClassName ; имя класса push 0 ; дополнительный стиль call CreateWindowExA mov [newhwnd], eax ;newhwnd - дискриптор окна ;Покажем окно: push SW_SHOWNORMAL push [newhwnd] call ShowWindow ;Обновим окно: push [newhwnd] call UpdateWindow ;Создаем цикл для обработки сообщений окна msg_loop: push 0 push 0 push 0 push offset msg call GetMessageA cmp ax, 0 je end_loop push offset msg call TranslateMessage push offset msg call DispatchMessageA jmp msg_loop end_loop: ;выход из программы: push [msg.msWPARAM] call ExitProcess ;Процедура окна: WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\ wparam:DWORD, lparam:DWORD ;Win32 требует, чтобы EBX, EDI, и ESI были сохранены cmp [wmsg], WM_DESTROY je wmdestroy push [lparam] push [wparam] push [wmsg] push [hwnd] call DefWindowProcA jmp finish wmdestroy: push 0 call PostQuitMessage mov eax, 0 finish: ret WndProc endp ends end start Результат вікна:  Висновок: в цій роботі я ознайомився з створенням вікон в мові програмування Асемблер і застосував це для виконання даної роботи.
Антиботан аватар за замовчуванням

24.03.2013 20:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!