Главная » Просмотр файлов » assembler. Учебник для вузов_Юров В.И_2003 -637с

assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 99

Файл №862834 assembler. Учебник для вузов_Юров В.И_2003 -637с (Юров В.И - Assembler. Учебник для вузов. 2003) 99 страницаassembler. Учебник для вузов_Юров В.И_2003 -637с (862834) страница 992021-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 99)

Это отладочный моментработы, и, учитывая учебный характер разрабатываемого приложения, он не убраниз его конечной версии.Макрокоманда show_eax также используется для отладки и является аналогоммакрокоманды show, описанной в главе 14. Попытка запустить макрокоманду showв нашем приложении ни к чему хорошему не приведет, поэтому для динамического контроля за работой программы макрокоманда show_eax может оказаться оченьполезной. Кстати, проблема отладки Windows-приложений довольно актуальна,и для ее решения подчас приходится применять самые нетрадиционные подходы,но это уже тема для отдельного разговора.Активизация окна диалогаДля того чтобы отобразить окно диалога на экране и выполнить с его помощьюнекоторую работу, используется функция DialogBoxParamA. Эта функция имеет следующий формат (в нотации C/C++):int DialogBoxParam (HINSTANCE h l n s t a n c e , / / д е с к р и п т о р приложенияLPCT5TR IpTemplateName, / / у к а з а т е л ь на строку с заголовком окнаHWND hWndParent,//дескриптор окнаDLGPROC IpDialogFunc,/ / у к а з а т е л ь на диалоговую процедуруLPARAM dwlnitParam) / / з н а ч е н и е , передаваемое в диалоговую функцию//через IParamВ программе prg!6_4.asm (см.

листинг 16.13) обращение к этой функции производится трижды при выборе соответствующих пунктов меню (строки 271,296 и 344в теле процедуры MenuProc). С ее помощью в диалоговую процедуру передается32-разрядное значение, которое извлекается посредством параметра IParam.Программирование консольных Windows-приложений435По окончании работы окно диалога должно быть закрыто функцией EndDialog,имеющей форматBOOL EndDialog (HWND hDlg, //дескриптор окна диалогаint nResult); //возвращаемое значениеОбычно закрытие окна производится щелчком на кнопке ОК или Cancel.Большой размер исходного текста приложения prg!6_4.asm может кого-то испугать.

Он может быть существенно сокращен за счет различных средств ассемблера, в том числе макрокоманд и процедур. Если с их помощью реорганизоватьисходный текст, то он станет гораздо читабельнее и удобнее для использования,почти как аналогичный текст на языке C/C++. Однако в отличие от текста наC/C++ текст на ассемблере — готовая машинная программа, в которую ничего лишнего не добавляется и код которой полностью контролируется. Более того, с этимтекстом можно проводить весь комплекс мероприятий по его оптимизации. В нашем примере намеренно ничего не сделано в плане улучшения внешнего вида исходного текста, чтобы не навязывать читателю свои подходы к этому процессу,тем более что это могло бы ввести его в заблуждение.

Текст программы в настоящем виде более всего отражает суть процессов, происходящих в системе Windowsво время исполнения приложения, и механизм взаимодействия приложения с системой.Нами остались не разработанными варианты реакции приложения на выборпользователем пунктов меню Графика > Эффекты > Павлин и Графика > Эффекты >Кружева. Их реализация требует использования команд сопроцессора и поэтомубудет рассмотрена в следующей главе.В начале главы отмечалось, что Windows поддерживает работу двух типов приложений — оконных, в полной мере использующих все достоинства графическогоинтерфейса, и консольных, работающих в текстовом режиме. Большая часть данной главы была посвящена разработке программ с оконным интерфейсом.

Заключительную часть главы посвятим рассмотрению основ программирования консольных приложений.Программирование консольныхWindows-приложенийЯзык ассемблера — язык системных программистов, исследователей принциповработы операционных систем, программ и аппаратных средств. Здесь не всегданужны красивые графические оболочки, а наоборот, велика потребность в удобных средствах для работы с текстовой информацией. Операционная системаWindows обеспечивает встроенную поддержку консолей, которые, по определению,являются интерфейсами ввода-вывода для приложений, работающих в текстовомрежиме. Понятие «консоль» существует в вычислительной технике давно. В общем случае под «консолью» подразумевают текстовый терминал для управлениякомпьютером.

Видимая часть такого терминала — клавиатура (для ввода управляющих воздействий) и монитор (как средство отображения-реакции вычислительной системы). В Windows консоль представляет собой приложение, которое позволяет взаимодействовать с операционной системой посредством ввода текстовых436Глава 16. Создание Windows-приложений на ассемблерекоманд. Такой способ управления компьютером позволяет решать в основном административные задачи.

Приложение, с помощью которого поддерживается этотрежим, называется консольным. Видимая часть консольных приложений называется окном консольного приложения.Написание консольных приложений на ассемблере — задача более актуальная,чем написание оконных. Причина простая — малыми затратами нам становятсядоступны практически все возможности Win32 API. Программист может запустить одновременно нескольких консольных приложений и при этом работать с мышьюи клавиатурой в стиле Windows. Далее мы рассмотрим порядок действий для запуска консольного Windows-приложения и организацию обмена данными с ним.API Win32 предоставляет два разных уровня работы с консолью — высокийи низкий. Выбор нужного уровня зависит от того, какая степень гибкости и полноты контроля требуется приложению для обеспечения своей работы с консолью.Функции высокого уровня обеспечивают простоту процесса ввода-вывода за счетиспользования стандартных дескрипторов ввода-вывода, но при этом невозможендоступ к входному и экранным буферам консоли.

Функции низкого уровня требуют учета большего количества деталей и написания большего объема кода, но этокомпенсируется большей гибкостью.Консоль состоит из одного входного и нескольких экранных буферов. Входнойбуфер представляет собой очередь, каждая запись которой содержит информациюотносительно отдельного входного события консоли. Экранный буфер — двухмерный массив, содержащий символы, выводимые в окно консоли, и данные об ихцвете.Очередь входного буфера содержит информацию о следующих событиях:и нажатии и отпускании клавиш;я манипуляциях мышью — движение, нажатие и отпускание кнопок;II изменении размера активного экранного буфера, состоянии прокрутки.С каждой консолью связаны две кодовые таблицы — по одной для ввода и вывода. Консоль использует входную кодовую таблицу для трансляции ввода с клавиатуры в соответствующие символьные значения.

Аналогичным образом используется кодовая таблица вывода — для трансляции символьных значений, формируемых различными функциями вывода, в символы, отображаемые в окне консоли.Для работы с кодовыми таблицами приложение может задействовать пары функций: SetConsoleCP и GetConsoleCP — для входных кодовых таблиц и SetConsoteOutputCPи GetConsoleOutputCP — для выходных кодовых таблиц. Идентификаторы кодовыхтаблиц, доступные на данном компьютере, сохраняются в системном реестре следующим ключом:HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Nls\\CodePageДля поддержки консольных приложений Win32 API содержит более сорокафункций, предназначенных для интеграции в среду Windows программ, работающих в текстовом режиме. Данные функции обеспечивают поддержку отмеченныхранее двух уровней доступа к консоли — высокого и низкого.

Консольные функции ввода высокого уровня позволяют приложению извлечь данные, полученныепри вводе с клавиатуры и сохраненные во входном буфере консоли. Консольныефункции вывода высокого уровня позволяют приложению записать данные в уст-Программирование консольных Windows-приложений437ройство стандартного вывода или в устройство ошибки с тем, чтобы отобразитьэтот текст в экранном буфере консоли. Функции высокого уровня также поддерживают переназначение стандартных дескрипторов ввода-вывода и управлениережимами работы консоли.

Консольные функции низкого уровня позволяют приложениям получить детальную информацию о вводе с клавиатуры, событиях нажатия и отпускания кнопок мыши и о манипуляциях пользователя с окном консоли. Все это обеспечивает высокую степень контроля над выводом данных на экран.Высокоуровневый и низкоуровневый консольный ввод-вывод не являются взаимоисключающими, и приложение может использовать любую комбинацию этихфункций.Минимальная программаконсольного приложенияМинимальная программа консольного приложения на ассемблере выглядит так,как показано в листинге 16.14.Листинг 16.14. Фрагменты приложения prg16_5.asm;prg!6_5.asm;Пример минимальной программы консольного Windows-приложения.486.model flat,STDCALL;модель памяти flatinclude WindowConA.inc;0бъявление внешними используемых в данной программе функций Win32 (ASCII):extrn AllocConsoleiPROCextrn SetConsoleTitleA:PROCextrn ExitProcess:PROC.dataTitleTextdb 'Win32-console application',0.codestart proc near;точка входа в программу:;запрос консолиcallAllocConsoleпроверить успех запроса консолиtesteax.eaxjz exit; неудача;выведем заголовок окна консоли SetConsoleTitie:pushoffset TitleTextcallSetConsoleTitleA;проверить успех вывода заголовкаtesteax.eaxjz exit;неудача;работаем ...exit:;выход из приложения;готовим вызов VOID ExitProcess(UINT uExitCode)push0callExitProcessstartendpend startЕсли убрать комментарии, то кода будет совсем немного.

Характеристики

Тип файла
PDF-файл
Размер
14,34 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее