Створення програми з використанням програмного продукту Turbo Assembler

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст
  Введення
Дослідження WinAPI функцій
Висновок
Бібліографічний список
Програми


Введення

Метою даного курсового проекту є поглиблення та закріплення знань, отриманих з дисципліни "Системне програмне забезпечення", формування досвіду створення програм з використанням програмного продукту Turbo Assembler.
Головною ж перевагою мови асемблера, на відміну від мов типу Pascal або C, є те, що майстерний програміст, як правило, здатний написати більш ефективну програму на асемблері, ніж ті, що генеруються трансляторами з мов програмування високого рівня. Тобто для програм на асемблері характерне використання меншої кількості команд і звернень в пам'ять, що дозволяє збільшити швидкість і зменшити розмір програми.
Проте, в силу своєї машинної орієнтації ("низького" рівня) людині в порівнянні з мовами програмування високого рівня складніше читати і розуміти програму, вона складається з дуже "дрібних" елементів - машинних команд, відповідно ускладнюються програмування та налагодження, зростає трудомісткість, велика ймовірність внесення помилок. Значною мірою зростає складність спільної розробки.

Дослідження WinAPI функцій

Функція LoadIcon
Загpужается пойменований pесуpсам піктогpамми.
У разі успішного завеpшения - ідентіфікатоp піктогpамми; 0 - у пpотивном випадку.
Функція LoadCursor
Загpужается пойменований pесуpсам куpсоpа.
У разі успішного завеpшения - ідентіфікатоp куpсоpа; 0 - якщо куpсоp не знайдений, не визначено, якщо pесуpсам не є pесуpсам куpсоpа.
Функція RegisterClassEx
Регістpіpует клас вікна, атpибутов котоpого опpеделен паpаметpам WndClassEx, для подальшого використання. Клас вікна може pегістpіpоваться тільки один pаз.
Функція ShowWindow
Отобpажает або пpячет вікно обpазом, зазначеним паpаметpам CmdShow.
Функція GetMessage
Зчитує повідомлення, в pамках діапазону фильтpацией, з очеpеди повідомлень прикладні завдання. Залишає упpавление дpугим прикладні завданням, якщо повідомлень немає або якщо наступним повідомленням є wm_Paint або wm_Timer.
Функція DefWindowProc
Забезпечує стандаpтной обpаботкой повідомлень для повідомлень, які явно не оброблятися прикладні завданням.
Возвpащается значення: результат обpаботки повідомлення.

Висновок

У ході виконання даної курсової роботи були отримані практичні навички з програмування в Win32 API. Була реалізована програма на низькорівневої мовою Асемблер EXE-форматі з використанням програмного продукту Turbo Assembler, що задовольняє вимогам завдання: дана програма здійснює виведення повідомлення від клавіатури в своє вікно.

Бібліографічний список

1. Методичні вказівки до лабораторного практикуму / В.П. Кулюкін. Єкатеринбург: вид. ІПК УГТУ, 2004. - 40с.
2. Лабораторний практикум з дисципліни "Системне програмне забезпечення" / Уфимський. держ. авіац. техн. ун-т. Сост.: О.Д. Лянце. - Уфа, 2008. - 57 с.
3. Калашников О.А. Асемблер? Це просто! Вчимося програмувати. СПб.: БХВ-Петербург, 2006. - 384 с.: Іл.
4. Абель П. Асемблер. Мова і програмування для IBM PC / Пер. з англ. - К.: Століття +, М.: ентропія, 2005. - 736 с.

Програми

Додаток А - Оригінальний текст програми
.586
. model flat, stdcall
extern GetModuleHandleA: near
extern LoadIconA: near
extern LoadCursorA: near
extern RegisterClassA: near
extern CreateWindowExA: near
extern GetMessageA: near
extern ShowWindow: near
extern UpdateWindow: near
extern TranslateMessage: near
extern DispatchMessageA: near
extern ExitProcess: near
extern DefWindowProcA: near
extern PostQuitMessage: near
extern BeginPaint: near
extern EndPaint: near
extern TextOutA: near
extern SetBkColor: near
extern InvalidateRect: near
includelib user32. lib
includelib kernel32. lib
includelib gdi32. lib
include windows. inc
style equ CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
_Data Segment
hWnd dd 0
msg MSG <? >
wc WNDCLASS <? >
pnt PAINTSTRUCT <? >
hInst dd 0
TitleName db 'Програма 1', 0
ClassName db 'Class32', 0
char WPARAM 20h
clear db '', 0
hdc dd 0
_Data Ends
_Code Segment
Start:
push 0
call GetModuleHandleA
mov [hInst], eax
mov [wc. style], style
mov [wc. lpfnWndProc], offset WndProc
mov [wc. cbClsExtra], 0
mov [wc. cbWndExtra], 0
mov eax, [hInst]
mov [wc. hInstance], eax
push IDI_APPLICATION
push 0
call LoadIconA
mov [wc. hIcon], eax
push IDC_CROSS
push 0
call LoadCursorA
mov [wc. hCursor], eax
mov [wc. hbrBackground], 0
mov dword ptr [wc. lpszMenuName], 0
mov dword ptr [wc. lpszClassName], offset ClassName
push offset wc
call RegisterClassA
push 0
push [hInst]
push 0
push 0
push 400
push 400
push 100
push 100
push WS_OVERLAPPEDWINDOW
push offset TitleName
push offset ClassName
push 0
call CreateWindowExA
cmp eax, 0
jz _err
mov [hWnd], eax
push SW_SHOWNORMAL
push [hWnd]
call ShowWindow
push [hWnd]
call UpdateWindow
msg_loop:
push 0
push 0
push 0
push offset msg
call GetMessageA
cmp eax, 0
je end_loop
push offset msg
call TranslateMessage
push offset msg
call DispatchMessageA
jmp msg_loop
end_loop:
push [msg. wParam]
call ExitProcess
_err:
jmp end_loop
WndProc proc
push ebp
mov ebp, esp
push ebx
push esi
push edi
cmp dword ptr [ebp +0 ch], WM_DESTROY
je wmdestroy
cmp dword ptr [ebp +0 ch], WM_CREATE
je wmcreate
cmp dword ptr [ebp +0 ch], WM_PAINT
je wmpaint
cmp dword ptr [ebp +0 ch], WM_CHAR
je wmchar
jmp defwndproc
wmchar:
push dword ptr [ebp +10 h]
pop char
push TRUE
push NULL
push dword ptr [ebp +08 h]
call InvalidateRect
wmpaint:
push offset pnt
push dword ptr [ebp +08 h]
call BeginPaint
mov hdc, eax
push 5
push offset clear
push 100
push 100
push hdc
call TextOutA
push 1
push offset char
push 100
push 100
push hdc
call TextOutA
push offset pnt
push eax
call EndPaint
mov eax, 0
jmp finish
wmcreate:
mov eax, 0
jmp finish
defwndproc:
push dword ptr [ebp +14 h]
push dword ptr [ebp +10 h]
push dword ptr [ebp +0 ch]
push dword ptr [ebp +08 h]
call DefWindowProcA
jmp finish
wmdestroy:
push 0
call PostQuitMessage
mov eax, 0
finish:
pop edi
pop esi
pop ebx
pop ebp
ret 16
WndProc endp
lenstr proc
push ebp
mov ebp, esp
push esi
mov esi, dword ptr [ebp +8]
xor ebx, ebx
lbl1:
cmp byte ptr [esi], 0
jz lbl2
inc ebx
inc esi
jmp lbl1
lbl2:
pop esi
pop ebp
ret 4
lenstr endp
_Code Ends
end Start
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
11.3кб. | скачати


Схожі роботи:
Створення програмного продукту на мові програмування Visual Basic for Applications
Створення довідника Парфумерний магазин за допомогою програми Turbo Pascal
Методика створення програмного забезпечення для систем управління підприємствами з використанням типових
Поняття програмного продукту
Розробка програмного продукту Тестер
Розробка програмного продукту Тестер
Розробка програмного продукту на мові високого рівня
Програми в середовищі Turbo Pascal
Техніко-економічний аналіз та обгрунтування ринкової новизни програмного продукту
© Усі права захищені
написати до нас