Сборник по задачам и примерам Assembler


Минимальная программа консольного приложения - часть 5


:prg05_11.asm - программа ввода-вывода в консоль с изменением атрибутов выводимого текста

!

.data

.code

start proc near -.точка входа в программу:

..........

:получим стандартные дескрипторы ввода-вывода

push STD_OUTPUT_HANDLE

call GetStdHandle

movdOut.eax :dOut-fleCKpnnTop вывода консоли

push STD_INPUT_HANDLE

call GetStdHandle

mov din.eax idln-дескриптор ввода консоли :введем строку

.¦установим курсор в позицию (2,6)

mov con.хх.2

mov con.yy,6

push con

push dOut

call SetConsoleCursorPosition cmp eax. 0

jz exit ;если неуспех

push 0

push offset NumWri количество действительно введенных символов

push 80 :размер буфера TitleText для ввода

push offset TitleText

push din

call ReadConsoleA

cmp eax, 0

jz exit :если неуспех

:выведем введенную строку в заголовок окна консоли:

push offset TitleText

call SetConsoleTitleA проверить успех вывода заголовка

test eax.eax

jz exit ;неудача

:выведем строку в окно консоли с различных позиций и
с разными цветами установим курсор в позицию (2.5)

mov ecx.10 ;строку выведем 10 раз

mov bl.10000001b начальные атрибуты

ml: push ecx

inc con.xx

inc con.yy

push con

push dOut

call SetConsoleCursorPosition

cmp eax.O

jz exit :если неуспех ;определим атрибуты выводимых символов -
будем получать их циклически сдвигом - регистр

BL

хог еах.еах

rol Ы.1

mov al.bl

push eax

push dOut

call SetConsoleTextAttribute

cmp eax.O

jz exit ;если неуспех :вывести строку

push 0

push offset NumWri действительное количество выведенных на экран

push NumWri ;длина строки для вывода на экран

push offset TitleText :адрес строки для вывода на экран

push dOut

call WriteConsoleA

cmp eax.O

jz exit :если неуспех pop ecx

loop ml

exit: :выход из приложения

Каждый консольный процесс имеет свой собственный список функций-обработчиков, которые вызываются системой, когда происходят определенные собы тия, например при активном окне консоли пользователь нажимает комбинации клавиш Ctrl+C, Ctrl+Break или Ctrl+Close. При запуске консольного приложения список функций-обработчиков содержит только заданную по умолчанию функцию-обработчик, которая вызывает функцию ExitProcess. Консольный процесс может добавлять или удалять дополнительные функции-обработчики, вызывая функцию SetConsoleCtrlHandler.




- Начало -  - Назад -  - Вперед -



Книжный магазин