Дипломированных специалистов «Информатика и вычислительная техника»



Download 12,06 Mb.
Pdf ko'rish
bet226/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   222   223   224   225   226   227   228   229   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Листинг 16.8. Фрагменты приложения
в программе
приложения
для Win32 с использованием меню

окна для перерисовки содержимого окна;
.386
применение локальных меток (с префиксом (
flat,
памяти flat,
;STDCALL - передача параметров в стиле С (справа
процедура чистит за собой стек
include
файл с описаниями базовых структур
;и констант Win32
include
файл с определением имен пунктов
;0бъявпение внешними используемых в данной
;функций Win32
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
extrn
:PROC
EndPaint:PROC
PatBlt:PROC
dd
dd
dd
глобальная переменная
глобальная переменная
;!!!это глобальная переменная
RECT
. code
start proc near
;точка входа в программу:
start endp
;
proc
arg
uses ebx,
ebx ;эти регистры обязательно должны сохраняться
local


Углубленное программирование на ассемблере для Win32
je wmdestroy
cmp
je
cmp
je
crap
je
default
;создание растрового изображения, совместимого с окном приложения
;получим размер экрана в пикселах
push SM_CXSCREEN
call
maxX, eax
push SM_CYSCREEN
call GetSystemMetrics
mov
eax
;лолучить контекст устройства окна на экране
push
call GetDC
mov
eax
совместимый контекст устройства памяти
push
call CreateCompatibleDC
mov
eax
- глобальная переменная
;получить дескриптор растрового изображения в памяти
;
push maxY
push maxX
push @@hdc
call
mov
eax
растр в контекст памяти
push
push memdc
call SelectObject
первичное заполнение растра серым цветом
;получим дескриптор серой кисти
push
call GetStockObject
mov
eax
кисть в контекст памяти
@@hbrush)
push
push memdc
call SelectObject
выбранной кистью виртуальное окно
;BOOL PatBlt(HDC hdc, int nXLeft. int
int
DWORD
push PATCOPY
push maxY
push maxX
push NULL
push NULL
push memdc
call PatBlt
;освободим контекст устройства
push
push
call ReleaseDC
;обозначим создание окна звуковым эффектом
вызов функции BOOL PlaySound(LPCSTR pszSound,
DWORD fdwSound)
push
14
256


 Глава 16. Создание Windows-приложений на ассемблере
push NULL
push offset playFileCreate
call PlaySoundA
значение О
mov
0
jmp
контекст устройства
push offset ps
push
call BeginPaint
mov @@hdc, eax
перерисовку окна звуковым эффектом
push
push NULL
push offset
call PlaySoundA
строку текста в окно
nYStart,
push
push offset
push 100
push 10
push
call TextOutA
вывод виртуального окна в реальное окно
BOOL
hdcDest, int nXDest, int nYDest, int nWidth,
int nHeight,
hdcSrc, i n t nXSrc, int nYSrc, DWORD
push SRCCOPY
push NULL
push NULL
push memdc
push
push maxX
push NULL
push NULL
push
call BitBlt
контекст BOOL
hWnd,
;CONST PAINTSTRUCT *lpPaint);
push offset ps
push
call EndPaint
mov eax, 0
значение - 0
jmp
процедуры обработки сообщений от меню
(DWORD
DWORD
push
push
call MenuProc
jmp
default:
exi
ret
endp
MenuProc- - -
;обработка сообщений от меню


Углубленное программирование на ассемблере для Win32
uses ebx
local
Ьх идентификатор меню
размер рабочей области BOOL GetClientRect(HWND
;LPRECT
push offset IpRect
push
call GetClientRect
строку текста в окно int
;LPCTSTR
int nCount, length,
;LPRECT IpRect,
push DT_SINGLELINE+DT_BOTTOM
push offset IpRect
push -1
push offset
push
call
сообщения
для вывода строки на экран
;BOOL InvalidateRect(HWND hWnd,
RECT
BOOL bErase)
push 1
push NULL
push
call InvalidateRect
jmp
строку текста в окно BOOL TextOut(HDC hdc, int nXStart,
;int nYStart, LPCTSTR IpString, int cbString)
push lenTXT_TEXTOUT
push offset
push 150
push 10
push memdc
call TextOutA
сообщения
для вывода строки на экран
push 0
push NULL
push
call InvalidateRect
jmp
jmp
jmp
jmp
jmp
jmp
mov eax, 0
ret
db
0


420 Глава
Создание Windows-приложений на ассемблере
Листинг
@@TXT_LACES
'
' , 0
db
Э
db
0
, 0
@@TXT_TEXTOUT db
выведен функцией
db
выведен функцией
0
start
Возможно, результаты работы программы из листинга 16.8 вам покажутся не
очень красивыми, но такая цель и не ставилась. Назначение этой программы —
исследовательское. Из-за задержек, вызванных воспроизведением звуковых фай-
лов, хорошо виден момент перерисовки окна. Такую технологию можно использо-
вать для более глубокого исследования механизмов работы Windows.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   222   223   224   225   226   227   228   229   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish