DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Інститут підприємництва і перспективних технологій при національному університеті «Львівська політехніка» Контрольна розрахункова робота на тему «Створення елементарної 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:19

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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