Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Директивы управления файлом листинга




       Ассемблер предоставляет ряд директив для управления содержимым файла листинга.

       Общие директивы управления листингом призваны управлять видом файла листинга. Все директивы являются парными, это означает, что если одна директива что-то разрешает, то другая, наоборот, запрещает.

       Директивы %LIST и %NOLIST (.LIST и .XLIST) определяют необходимость вывода в файл листинга всех строк исходного кода (по умолчанию).

       Для запрета вывода в файл листинга всех строк исходного кода необходимо использовать директивы .XLIST или %NOLIST. В тексте программы их можно применять произвольное количество раз, при этом очередная директива отменяет действие предыдущей.

       Директивы %CTLS и %NOCTLS управляют выводом в файл листинга самих директив управления листингом, в то время как директивы %LIST и %NOLIST (. LIST и . XLIST) влияют на полноту представления исходного кода в целом.

       Директивы %SYMS и %NOSYMS определяют включение (%SYMS) или не включение (%NOSYMS)таблицы идентификаторов в файл листинга.

       Директивы вывода текста включаемых файлов %INCL и %NOINCL регулируют включение в файл листинга текста включаемых файлов (по директиве INCLUDE). По умолчанию включаемые файлы записываются в файл листинга. Директива %NOINCL запрещает вывод в файл листинга всех последующих включаемых файлов, пока вывод снова не будет разрешен директивой %INCL.

       Директивы вывода блоков условного ассемблирования регулируют включение блоков условной компиляции в листинг программы.

       Директива %CONDS (. LFCOND)заставляет ассемблер выводить в файл листинга все операторы условных блоков (в том числе с условием false). Директива %NOCONDS (.SFCONDS)запрещает вывод в файл листинга блоков условного ассемблирования с условием false.

       Директива . TFCOND переключает режимы вывода %CONDS (. LFCOND) и %NOCONDS (.SFCONDS). Эту директиву можно использовать как отдельно, так и совместно с директивами . LFCOND и . SFCONDS. Первая директива . TFCOND, которую обнаруживает TASM, разрешает вывод в файл листинга всех блоков условного ассемблирования. Следующая директива . TFCOND запретит вывод этих блоков. С директивой . TFCOND можно использовать ключ /х командной строки транслятора TASM — в этом случае блоки условного ассемблирования будут сначала выводиться в файл листинга, но первая же директива . TFCOND запретит их вывод.

       Директивы вывода макрорасширений, как явствует из названия, управляют выводом макрорасширений:

       Директива %MACS (. LALL)разрешает вывод в файл листинга всех макрорасширений.

       Директива %NOMACS (. SAIL)запрещает вывод всех операторов макрорасширения в файл листинга.

       В трансляторе MASM можно использовать директиву . XALL, позволяющую выводить в листинг только те макрорасширения, которые генерируют код или данные.

Итоги

       Преимущества языка ассемблера связаны, в частности, с макросредствами. Как говорят, если бы макросредств в нем не было, то их нужно было бы придумать.

       Макросредства — это основные инструменты модификации текста программы на этапе ее трансляции. Принцип работы макросредств основан на препроцессорной обработке, которая заключается в том, что текст, поступающий на вход транслятора, перед собственно компиляцией подвергается преобразованию и может значительно отличаться от синтаксически правильного текста, воспринимаемого компилятором. Роль препроцессора в трансляторе TASM выполняет макрогенератор.

       Для того чтобы макрогенератор мог выполнить свою работу, текст программы должен удовлетворять определенным требованиям. Макрогенератору необходимо сообщить, на какие элементы исходного текста он должен реагировать и какие действия должны быть произведены. Можно выделить несколько типов таких элементов.

       Псевдооператоры EQU и =предназначены для присвоения некоторому выражению символического имени или идентификатора. Эти действия выполняет макрогенератор, заменяя в последующем тексте программы символические имена из правой части этих операторов строками из левой.

       Макрокоманда — строка в исходной программе, которой соответствует специальный блок — макроопределение. Макрокоманда может иметь аргументы, с помощью которых можно изменять текст макроопределения. Макрогенератор, встречая макрокоманду в тексте программы, корректирует текст соответствующего макроопределения, исходя из аргументов этой макрокоманды, и вставляет его в текст программы вместо данной макрокоманды. Процесс такого замещения называется макрогенерацией.

       Условные директивы компиляции позволяют не просто модифицировать отдельные строки программы, но и, исходя из определенных условий, управлять включением в загрузочный модуль отдельных фрагментов программы. Эти директивы наиболее эффективны для работы с аргументами, передаваемыми при макрогенерации в макроопределения из макрокоманд, хотя отдельные директивы есть смысл применять и вне макроопределений в любом месте программы.

       Директивы генерации ошибок, подобно условным директивам, позволяют анализировать определенные условия в процессе трансляции программы и генерировать ошибку по результатам анализа.

       Для удобства формирования файла листинга компиляторы ассемблера предоставляют в распоряжение программиста ряд директив. С помощью этих директив можно довольно гибко изменять формат и полноту информации, выводимой ассемблером в файл листинга.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 170.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...