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

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

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

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

Например, возможна ситуация, когда несколько классов окон применяют одну и ту же оконнуюфункцию для обработки сообщений, поступающих в созданные на базе этих классов окна. Имеет смысл сохранять не только названные регистры, используемыесамой системой Windows, но и другие (за исключением ЕАХ), если они задействованы в оконной функции. Исходя из требования рекурсивности, все переменные, используемые в оконной функции, должны быть локальными. Чтобыудовлетворить требование сохранения регистров, лучше применить (строка 166листинга 16.4) соответствующее средство транслятора ассемблера — директиву USES(см. также главы 10 и 15).

При этом транслятор вставляет в начало и конец оконной функции соответствующую последовательность команд ассемблера PUSH. Выможете убедиться в этом, посмотрев файл листинга (файл .1st) программы из листинга 16.4 после ее трансляции.Центральным местом оконной функции является синтаксическая конструкция,в задачу которой входит распознавание поступившего сообщения по его типу(параметр message) и передача управления на ту ветвь кода оконной функции, которая продолжает далее работу с параметрами сообщения.

В языке C/C++ (см.листинг 16.1) для этого используется оператор switch (переключатель). В языкеассемблера такого средства нет, поэтому его приходиться моделировать (см. главу 11). В листинге 16.4 строки 168-174 показывают, как это можно сделать с помощью команды СМР, а также команд условного (JE) и безусловного (JMP) переходов.Соответствие символических имен константам, обозначающим тип сообщенийWindows, приведено во включаемом файле windowsA.h. Совершенно необязательно анализировать типы всех возможных сообщений, параметры которых передаются в оконную функцию. Структуру, подобную строкам 168-174, и вообще структуру всей оконной функции можно сравнить с ситом, а сообщения — с зернамиразной величины.

Отверстия в сите непростые — каждое из них пропускает зерносвоего размера. Зерна (сообщения) в сите (оконной функции) не задерживаются,попав в него, они через одно из отверстий обязательно уходят. Уходят куда? Этоопять-таки определяется особой структурой нашего сита. Представьте, что к каждому отверстию припаяна трубка, которая определяет, куда данное зернышко попадет для дальнейшей обработки. Таким образом, каждому сообщению, попадающему в оконную функцию, соответствует ветвь в коде процедуры, которая начинаетобработку этого сообщения. В ходе этой обработки, возможно, понадобится вызовдругих функций или применение синтаксических конструкций, подобных описанному ситу, для дальнейшей более тонкой селекции сообщений, но уже одного типа(по полям IParam или wParam).

Для наглядности аналогию структуры оконной функции с ситом можно упрощенно представить в виде схемы (рис. 16.1).Представленная схема показывает, что оконная функция, обрабатывающая сообщения, имеет одну точку входа и множество точек выхода. Выход осуществляется из той ветви оконной функции, где обрабатывалось сообщение. Сообщения,Средства TASM для разработки Windows-приложений401Среда WindowsСообщениеВсё——остальныесообщенияWM_PAINT-WM_COMMAND-Q(J|T.wParamСреда Windows0000 0Рис. 16.1. Абстрактное представление структуры оконной функции Windowsдля которых не предусмотрена отдельная обработка, должны обрабатываться функцией DefWindowProc (строки 219-227).

Эта процедура по отношению к переданнымей сообщениям предпринимает действия по умолчанию. В принципе, ей можнопередавать на обработку все сообщения, что в контексте рассмотренной ранее абстракции означает сито, содержащее одно отверстие, в которое проваливаются всепоступающие сообщения.По завершении работы оконная функция формирует значение в регистре ЕАХ.Если сообщение обрабатывалось в оконной функции, то в ЕАХ необходимо поместить нулевое значение. Если обработка осуществлялась по умолчанию, то естьфункцией DefWindowProc, то в ЕАХ уже сформировано возвращаемое значение,и именно его нужно возвратить в качестве результата работы оконной функции.В нашем примере оконная функция обрабатывает три сообщения: создание окнаWM_CREATE, перерисовку области окна WM_PAINT, закрытие окна WM_DESTROY.Более подробно с условиями возникновения и обработкой этих и других сообщений можно познакомиться в литературе по Windows, где эти вопросы освещены более полно.Средства TASM для разработкиWindows-приложенийРанее мы подробно разобрались с тем, что собой представляет простое Windowsприложение, написанное на языке ассемблера.

Излагая материал, мы упоминалиимена файлов, которые нужны для получения работоспособного исполняемогомодуля программы. Для устранения возможных неясностей соберем и систематизируем эту информацию.402Глава 16. Создание Windows-приложений на ассемблереПри разработке Windows-приложений на языке ассемблера с помощью Win32API вам нужен один из пакетов ассемблера — не обойтись без пакета TASM версии 5.0. Современные 32-разрядные операционные системы Windows используютформат РЕ исполняемого файла.

В состав пакета TASM 5.0 входят два компилятора ассемблера — 16- и 32-разрядный. Они имеют имена исполняемых файлов, соответственно, tasm.exe и tasm32.exe. То же касается и редакторов связей — tlink.exeи tlink32.exe. Получить файл формата РЕ можно только при совместном использовании файлов tasm32.exe и tlink32.exe. Для удобства работы, подобно тому, как мыэто делали для 16-разрядных программ в главе 6, скопируйте все файлы 32-разрядной версии в отдельный каталог и назовите его, например, Work32. Сюда женеобходимо поместить файлы windowsA.inc и import32.lib, находящиеся среди файлов, прилагаемых к книге.Для создания программы нужны еще два файла: файл определений компоновщика и файл описания ресурсов.

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

Вы можете без проблем задействовать готовый вариант этого файла, находящийся среди файлов, прилагаемых к книге.Перечислим необходимые для разработки Windows-приложения файлы.» Файл с исходным текстом программы (.asm). Формируется программистом.Ш Включаемый файл с описаниями структур данных и констант Win32 (.inc или.ash). Файл формируется программистом по мере расширения используемыхим средств Win32. Источником информации для этого файла служат включаемые файлы (.h) из пакета компилятора C/C++, например VC++ версии 4.0и выше.я Файл с библиотекой импорта import32.lib.

Этот файл требуется компоновщикудля разрешения внешних ссылок на функции Win32 API. Вы можете создатьэтот файл сами. Такая необходимость может возникнуть, если вам понадобятсяфункции из библиотек DLL, информация о которых отсутствует в существующем варианте файла import32.lib. Для этого существует специальная утилитаimplib.exe, поставляемая в пакете TASM 5.O. Командная строка для ее запускаимеет видimplib имя_файла_11 bПолучить информацию о местонахождении конкретной функции Win32 APIдовольно просто. Многие справочные руководства по Windows при описанииконкретной функции приводят и информацию о библиотеке DLL, где эта функция содержится.Файл с описанием ресурсов, используемых в приложении.Другие файлы. Например, в рассмотренной нами программе каркасного приложения (см. листинг 16.4) используются звуковые файлы (.wav).Средства TASM для разработки Windows-приложений403т Файлы tasm32, tlink32.exe и, возможно, некоторые другие вспомогательные файлы из пакета TASM 5.O.

Следите внимательно за сообщениями. В том случае,если какого-либо файла будет недоставать, его нужно просто найти в каталоге\Ып пакета TASM 5.0 и скопировать в свой рабочий каталог. Непосредственнов каталоге \trin работать не рекомендуется, иначе он моментально превратитсяв слабоструктурируемое нагромождение файлов.II Компилятор ресурсов brc32.exe или brcc32.exe. Компиляторы взяты из пакетаC/C++ фирмы Borland.

Но если вы работаете с пакетом VC++, то вам можетпонадобиться компилятор ресурсов, входящий в этот пакет. Он называетсягс.ехе.т Файл makefile и утилита make.exe. Эти файлы призваны облегчить процесс сборки приложения в единый исполняемый модуль.Приведенный список файлов, необходимых для сборки Windows-приложения,довольно велик. Ранее процесс получения исполняемого файла у нас был простыми вполне управлялся из командной строки (без использования, например, makeфайлов). Более сложные приложения требуют учета взаимосвязей между несколькими файлами. Данные файлы, в свою очередь, создаются или обрабатываютсяразными программными средствами, которые иногда требуют задания режимовработы многочисленными параметрами.

Запоминать их и постоянно вводить вручную тяжело, и такая работа вряд ли может быть признана эффективной. Для облегчения процесса получения исполняемого файла используйте возможности, предоставляемые make-файлами.Make-файл для программиста — существенное облегчение в его работе. Тщательно разработав один раз make-файл для создания исполняемого файла своегоприложения, вы впоследствии избавите себя от рутинной работы по формированию необходимых для этого командных строк. Второй положительный эффект отиспользования make-файлов — упрощается работа автора по описанию процессаполучения исполняемого модуля.

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

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

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

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