Программирование на ассемблере
под Win32 воспринимается весьма не однозначно.
Считается, что написание приложений слишком
сложно для применения ассемблера. Собственно
обсуждению того насколько оправдана такая
точка зрения и посвящена данная статья.
Она не ставит своей целью обучение программированию
под Win32 или обучение ассемблеру, я подразумеваю,
что читатели имеют определённые знания
в этих областях.
В отличие от программирования
под DOS, где программы, написанные на
языках высокого уровня (ЯВУ), были мало
похожи на свои аналоги, написанные на
ассемблере, приложения под Win32 имеют
гораздо больше общего. В первую очередь,
это связано с тем, что обращение к сервису
операционной системы в Windows осуществляется
посредством вызова функций, а не прерываний,
что было характерно для DOS. Здесь нет
передачи параметров в регистрах при обращении
к сервисным функциям и, соответственно,
нет и множества результирующих значений
возвращаемых в регистрах общего назначения
и регистре флагов. Следовательно, проще
запомнить и использовать протоколы вызова
функций системного сервиса. С другой стороны,
в Win32 нельзя непосредственно работать
с аппаратным уровнем, чем “грешили” программы
для DOS. Вообще написание программ под
Win32 стало значительно проще и это обусловлено
следующими факторами:
-
отсутствие startup кода,
характерного для приложений и динамических
библиотек написанных под Windows 3.x;
-
гибкая система адресации
к памяти: возможность обращаться к
памяти через любой регистр общего
назначения; “отсутствие” сегментных
регистров;
-
доступность больших
объёмов виртуальной памяти;
-
развитый сервис операционной
системы, обилие функций, облегчающих
разработку приложений;
-
многообразие и доступность
средств создания интерфейса с пользователем
(диалоги, меню и т.п.).
Современный ассемблер, к
которому относится и TASM 5.0 фирмы Borland
International Inc., в свою очередь, развивал
средства, которые ранее были характерны
только для ЯВУ. К таким средствам можно
отнести макроопределение вызова процедур,
возможность введения шаблонов процедур
(описание прототипов) и даже объектно-ориентированные
расширения. Однако, ассемблер сохранил
и такой прекрасный инструмент, как макроопределения
вводимые пользователем, полноценного аналога
которому нет ни в одном ЯВУ.
Все эти факторы позволяют
рассматривать ассемблер, как самостоятельный
инструмент для написания приложений под
платформы Win32 (Windows NT и Windows
95). Как иллюстрацию данного положения,
рассмотрим простой пример приложения,
работающего с диалоговым окном.
|