Дополнительные средства
управления трансляцией
предоставляет средства для вывода текстового сообщения во время транс-
ляции программы — директивы DISPLAY и
С их помощью можно при необхо-
димости следить за ходом трансляции. К примеру,
320 Глава 14. Макросредства языка ассемблера
display недопустимые аргументы макрокоманды
недопустимое имя регистра
В результате обработки этих директив на экран (стандартный выход) будут
выведены тексты сообщений. Если эти директивы использовать совместно с ди-
рективами условной компиляции, то, к примеру, можно отслеживать путь, по ко-
торому осуществляется трансляция исходного текста программы.
Можно предложить читателю уже с этого момента начать формировать набор
полезных в его практической работе макрокоманд. В качестве основы вы можете
взять файл mac.inc, который находится в каталоге данной главы среди файлов, при-
лагаемых к
В дальнейшем, если в этом возникнет необходимость, вы буде-
те самостоятельно дополнять его вашими макросами. Использовать макроопреде-
ления из этого файла очень просто: достаточно включить в нужном месте вашей
программы строку с директивой include, в результате в ваш файл будут вставлены
строки из файла, указанного в качестве операнда этой директивы.
Основная задача этой книги — научить вас программировать на языке ассемб-
лера. Как вы уже успели понять, нельзя изучать этот язык в отрыве от рассмотре-
ния процессов, происходящих во время выполнения программы на компьютере.
Одно из средств изучения таких процессов — отладчик. Однако он решает пробле-
му глобально, что нужно далеко не всегда. Тем более, как мы увидим далее, что
возможности отладчика не безграничны. Поэтому необходимо иметь более уни-
версальное средство, которое позволило бы «подглядывать» за содержимым реги-
стра или области памяти динамически, во время выполнения программы. Для это-
го разработаем еще один макрос и назовем его, к примеру, show. Его аргументом
может быть один из четырех регистров — AL,
АХ, ЕАХ. С помощью этого макроса
можно визуализировать содержимое любого из доступных регистров или области
памяти длиной до 32 битов. Для этого достаточно лишь переслать содержимое нуж-
ного объекта (регистра или ячейки памяти) с учетом его размера в один из регист-
ров AL, АН, АХ, ЕАХ. Имя одного из этих регистров указывается затем в качестве
фактического аргумента макрокоманды show. Второй аргумент этого макроса —
позиция на экране. Задавая определенные значения, мы можем судить о том, ка-
кая именно макрокоманда show сработала. Еще одна немаловажная особенность
данного макроса — в его возможности работать как в реальном, так и в защищен-
ном режимах. Распознавание текущего режима работы процессора выполняется
автоматически. Текст макроопределения show довольно велик и по этой причине
находится среди прилагаемых к книге файлов в каталоге данной главы. Пример
использования этого макроса приведен в листинге 14.6.
Листинг
Пример использования макроса show
MODEL
STACK 256
Include
Все прилагаемые к книге файлы можно найти по адресу http://www.piter.com/download. —
Примеч. ред.
Директивы управления файлом листинга
pole
3cdf436fh
main:
mov
xor
mov
show al,0
show
show
mov
show
mov
end main
Посвятить время рассмотрению этого макроса полезно еще и потому, что при
его разработке было использовано большинство средств, обсуждавшихся в этой
главе.
Do'stlaringiz bilan baham: |