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



Download 12,06 Mb.
Pdf ko'rish
bet237/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   233   234   235   236   237   238   239   240   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Листинг 16.16. Фрагменты приложения
- программа, демонстрирующая
обработчик события.
db "Нажаты CTRL+C"
Text BREAK db "Нажаты CTRL+BREAK"
продолжение


444 Глава
Создание Windows-приложений на ассемблере
 (продолжение)
. code
CtrlHandler proc
arg
uses
esi ;эти регистры обязательно должны сохраняться
тип сигнала управления
je h_CTRL_C_EVENT
cmp
je
h_default
нажатии
выводим сообщение:
установим курсор
call
вывести строку
call
возвращаем признак обработки
mov
1
jmp
нажатии
выводим сообщение:
установим курсор
call
вывести строку
call
возвращаем признак обработки
mov
jmp
mov eax
-1
;все остальное не обрабатываем
ret
CtrlHandler endp
start proc near ;точка входа в программу:
. . .
стандартные дескрипторы ввода-вывода
;установим функцию-обработчик сигналов управления
push TRUE
push offset cs: CtrlHandler
call SetConsoleCtrlHandler
cmp
eax, 0
jz exit ;если неуспех
введем строку в буфер TitleText
установим курсор в позицию (2,6)
call
call ReadConsoleA
выведем введенную строку в заголовок окна консоли:
push offset TitleText
call
выведем строку в окно консоли с различных позиций и с разными цветами
mov
выведем 10 раз
mov bl,10000001b
атрибуты


Программирование консольных Windows-приложений 445
ml: push ecx
курсор в позицию
call
атрибуты выводимых символов:
;будем получать их циклически - сдвигом регистра
push eax
push
call SetConsoleTextAttribute
вывести строку TitleText
call
jz exit ;если неуспех
pop ecx
loop ml
Относительно этой программы можно сделать два замечания. Первое касается
функции
которая в нашей программе называется CtrlHandler. Как
упоминалось, эта функция является функцией обратного вызова. Она вызывается
при возникновении определенных событий неявно — из системы Windows. По
структуре и алгоритму работы она аналогична оконной функции, которую мы рас-
сматривали ранее (см. раздел «Каркасное Windows-приложение на
По-
этому за всеми подробностями отсылаем читателя к этому материалу. Второе за-
мечание касается порядка отладки приложений, содержащих определяемые
пользователем функции (процедуры) обратного вызова. Первое, что нужно сде-
лать в процессе пошагового выполнения программы в отладчике, — выяснить ад-
рес процедуры обратного вызова. В программе из листинга 16.16 это можно сде-
лать, выяснив, какое значение будет помещено в стек при выполнении команд:
функцию-обработчик сигналов управления
push TRUE
push offset
CtrlHandler
call SetConsoleCtrlHandler
cmp
e a x ,
0
jz exit ;если неуспех
После этого, сделав активным окно CPU отладчика (выбрав в меню команду
View CPU), необходимо установить указатель мыши в окно с командами процес-
сора и щелкнуть правой кнопкой мыши. В появившемся контекстном меню выбе-
рите пункт Goto. В результате этих действий отладчик отобразит окно диалога,
в которое необходимо внести адрес программы-обработчика CtrlHandler. После этого
в верхней части окна команд отобразится первая команда процедуры CtrlHandler.
Установите на нее курсор и нажмите клавишу F4. Программа начнет выполняться
по своему алгоритму. При нажатии пользователем управляющих комбинаций кла-
виш, допустимых функцией HandlerRoutine, управление будет передано этой функ-
ции, и вы сможете произвести ее отладку.
Низкий уровень консольного ввода-вывода по сравнению с высоким обладает
более широкими и гибкими возможностями. Низкоуровневые функции консоль-


446 Глава
Создание Windows-приложений на ассемблере
ного ввода-вывода обеспечивают прямой доступ к входному и экранным буферам
консоли, предоставляя приложению доступ к событиям мыши и клавиатуры, а так-
же к информации об изменении размеров окна консоли. Функции низкоуров-
невого ввода-вывода позволяют приложению иметь доступ по чтению-записи
к указанному числу последовательных символьных ячеек в экранном буфере
или к прямоугольному блоку символьных ячеек в указанной позиции экран-
ного буфера.
Итоги
Разработка Windows-приложения на языке ассемблера — вполне реальное и в
ряде случаев оправданное дело. Однако несмотря на имеющиеся в TASM
и MASM средства, для создания полноценного Windows-приложения требу-
ются дополнительные программные и информационные ресурсы, предостав-
ляемые пакетами языков высокого уровня. Лучше всего для этой цели подходит
пакет VC++ версии 6.0 и выше. Основную ценность в нем имеют включаемые
файлы, редактор ресурсов, работающий в составе интегрированной среды раз-
работки, и компилятор ресурсов. Интерес могут представлять также различ-
ные утилиты, входящие в состав пакета Visual C++, например Spy++.
и Приступать к разработке приложения для системы Windows на ассемблере луч-
ше всего, имея некоторый опыт разработки приложений на языке высокого уров-
ня. Это необходимо для понимания логики работы приложения. Когда пони-
мание логики работы Windows-приложения достигнуто, выбор языка для его
реализации приобретает в
степени техническое значение и определя-
ется постановкой задачи и предполагаемыми условиями ее
• Благодаря поддержке системой Windows консольных приложений можно ма-
лыми силами решать серьезные задачи, в том числе и по администрированию
системы. Консольным приложениям доступны практически все возможности,
предоставляемые Win32 API, при этом для построения приложений не требу-
ется реализовывать какие-то изощренные схемы.



Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   233   234   235   236   237   238   239   240   ...   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