Директивы управления листингом
Директивы управления листингом делятся на следующие группы:- общие директивы управления листингом
- директивы вывода в листинг включаемых файлов
- директивы вывода блоков условного ассемблирования
- директивы вывода в листинг макрокоманд
- директивы вывода в листинг информации о перекрестных ссылках
- директивы изменения формата листинга
- директивам режима MASM предшествует точка;
- директивам режима IDEAL предшествует знак “%”.
Общие директивы управления листингом
Директивы этой группы предназначены для управления видом файла листинга. Все директивы являются парными — это означает, что если одна директива что-то разрешает, то другая, наоборот, запрещает. Рассмотрим назначение этих пар директив.%LIST и %NOLIST (.LIST и .XLIST)
Директивы .LIST или %LIST определяют необходимость
вывода в файл листинга всех строк исходного кода. Эти директивы подразумеваются
по умолчанию.
Для запрета вывода в файл листинга всех строк исходного
кода необходимо использовать директивы .XLIST или %NOLIST.
В тексте программы их можно применять произвольное количество раз, при
этом очередная директива отменяет действие предыдущей.
%CTLS и %NOCTLS
Если предыдущие директивы влияют на полноту представления
исходного кода в целом, то директивы %CTLS и %NOCTLS управляют
выводом в файл листинга самих директив управления листингом.
%SYMS и %NOSYMS Эти директивы определяют, включать (%SYMS) или не включать (%NOSYMS) в файл листинга таблицу идентификаторов.
Директивы вывода текста включаемых файлов
%INCL и %NOINCLЭти директивы позволяют регулировать включение в файл листинга текста включаемых файлов (по директиве INCLUDE). По умолчанию включаемые файлы записываются в файл листинга. Директива %NOINCL запрещает вывод в файл листинга всех последующих включаемых файлов, пока вывод снова не будет разрешен директивой %INCL.
Директивы вывода блоков условного ассемблирования
%CONDS и %NOCONDS (.LFCOND и .SFCONDS)Для исследования исходного текста программы, содержащего директивы условной компиляции, удобно использовать директивы, регулирующие включение блоков условной компиляции в листинг программы.
Директива %CONDS (.LFCOND) заставляет TASM выводить в файл листинга все операторы условных блоков. При этом в файл листинга выводятся все блоки, в том числе с условием false. Директива %NOCONDS (.SFCONDS) запрещает вывод в файл листинга блоков условного ассемблирования с условием false.
Директива .TFCOND переключает режимы вывода %CONDS (.LFCOND) и %NOCONDS (.SFCONDS). Эту директиву можно использовать как отдельно, так и совместно с директивами .LFCOND и .SFCONDS.
Первая директива .TFCOND, которую обнаруживает TASM, разрешает вывод в листинг всех блоков условного ассемблирования.
Следующая директива .TFCOND будет запрещать вывод этих блоков. С директивой .TFCOND можно использовать параметр командной строки транслятора TASM ???????????????????????????????????? /X: согласно ему блоки условного ассемблирования будут сначала выводиться в листинг, но первая же директива .TFCOND запретит их вывод.
Директивы вывода макрорасширений
%MACS (.LALL) и %NOMACS (.SALL)Аналогично директивам вывода блоков условной компиляции при отладке программы удобно регулировать полноту информации о применяемых макрокомандах. По умолчанию транслятор включает макрорасширения в файл листинга. Можно запретить вывод макрорасширений в файл листинга, что удобно на некоторых стадиях отладки. Директива %MACS (.LALL) разрешает вывод в листинг всех макрорасширений. Директивы %NOMACS (.SALL) запрещает вывод всех операторов макрорасширения в файл листинга. В режиме MASM можно использовать директиву .XALL, позволяющую выводить в листинг только те макрорасширения, которые генерируют код или данные.
Директивы вывода листинга перекрестных ссылок
Приведенные выше директивы %SYMS и %NOSYMS регулировали вывод в листинг таблицы идентификаторов, в которой приводится информация о метках, группах и сегментах, но там не сообщается, где они определены и где используются. Информация в таблице перекрестных ссылок исправляет этот недостаток. Она облегчает поиск меток и полезна для отладки программы. В приложении 1 приведена опция командной строки TASM /c для получения таблицы перекрестных ссылок. Но действие этой опции распространяется на весь исходный файл, что может быть не совсем удобным. Поэтому TASM дополнительно предоставляет директивы для создания таблиц перекрестных ссылок только для отдельных частей исходного кода. Директивы %CREF (.CREF) и %NOCREF (.XCREF) соответственно разрешают и запрещают сбор информации о перекрестных ссылках, начиная с точки, где они были определены. При этом директивы %NOCREF (.XCREF) позволяют выборочно запрещать сбор информации о перекрестных ссылках для определенных идентификаторов в программе. Эти директивы имеют следующий синтаксис:Если в директиве %NOCREF (.XCREF) не указать идентификатор, то вывод перекрестных ссылок запрещается полностью, если указать некоторые идентификаторы, то информация не будет собираться только для этих идентификаторов.
Директивы изменения формата листинга
Директивы этой группы позволяют управлять форматом файла листинга..PAGE
Директива .PAGE задает высоту и ширину страницы
файла листинга и начинает его новую страницу. Она имеет следующий синтаксис:
Здесь:
- число_строк задает число строк, выводимых на странице листинга;
- число столбцов находится в диапазоне 59...255 и задает число столбцов на странице.
%PAGESIZE (.PAGESIZE)
Директива %PAGESIZE работает так же, как и директива
.PAGE, но, в отличие от последней, она не начинает новую страницу,
а лишь определяет ее параметры:
%NEWPAGE
Директива %NEWPAGE работает аналогично директиве
.PAGE без аргументов. Строки исходного текста после директивы %NEWPAGE
будут начинаться с новой страницы.
%BIN
Директива %BIN устанавливает длину поля объектного
кода в файле листинга. Ее синтаксис:
Здесь размер — некоторая константа.
По умолчанию поле объектного кода занимает в файле листинга
до 20 позиций.
%DEPTH
Директива %DEPTH устанавливает размер поля глубины в
файле листинга. Ее синтаксис:
Здесь размер задает количество столбцов в поле глубины
листинга.
Напомню, что данное поле показывает уровень вложенности
включаемых файлов (INCLUDE) и макрорасширений. Если указать в качестве
размера значение 0, то поле уровня вложенности не выводится. По умолчанию
это поле имеет значение 1.
%LINENUM
Директива %LINENUM позволяет задать размер поля
занимаемого номерами строк в файле листинга:
По умолчанию под номер строки отводятся четыре столбца.
%TRUNC и %NOTRUNC
Директивы %TRUNC и %NOTRUNC предназначены
для усечения длинных полей листинга. Их синтаксис:
Если некоторая строка исходного кода получается слишком длинной, то она автоматически усекается. Если возникает необходимость увидеть всю генерируемую строку, то можно использовать директиву %NOTRUNC, действие которой будет заключаться в том, что слишком длинная строка будет переноситься на следующую строку. Для включения режима усечения нужно использовать директиву %TRUNC. Такие переключения можно осуществлять неограниченное количество раз.
%PCNT
Директива %PCNT задает размер поля “сегмент:смещение”
в файле листинга. Ее синтаксис:
Здесь размер — число столбцов, которое необходимо отвести
для смещения в текущем ассемблируемом сегменте.
По умолчанию TASM устанавливает размер, равный 4 для
обычных 16-битных сегментов (атрибут размера адреса use16) и 8 для 32-битных
сегментов (атрибут размера адреса use32). Директива %PCNT позволяет
переопределить эти используемые по умолчанию значения.
%TITLE
Директива %TITLE задает заголовок файла листинга.
Ее синтаксис:
Здесь текст — строка, которая будет выводиться в верхней
части каждой страницы после имени исходного файла и перед заголовком, заданным
по директиве %SUBTTL.
В отличие от других директив, %TITLE можно использовать
в программе только один раз.
%SUBTTL
Директива %SUBTTL задает подзаголовок файла листинга.
Ее синтаксис:
Подзаголовок представляет собой текст, который выводится в верхней части каждой страницы после имени исходного файла и после заголовка, заданного директивой %TITLE. Директиву %SUBTTL можно указывать в программе столько раз, сколько необходимо. Каждая директива изменяет подзаголовок, который будет выводиться на следующей странице листинга.
%TABSIZE
Директива %TABSIZE задает позицию табуляции в
файле листинга. Ее синтаксис:
Здесь размер — число столбцов между двумя позициями табуляции в файле листинга (по умолчанию 8 столбцов).
%TEXT
Директива %TEXT используется для задания длины
поля исходного текста в файле листинга. Ее синтаксис:
Здесь размер — число столбцов, используемых для вывода
исходных строк. Если размер строки превышает длину этого поля, то строка
будет либо усекаться, либо переноситься на следующую строку, в зависимости
от директив %TRUNC или %NOTRUNC.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий