Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Директивы . ERRDEF (ERRIFDEF)и . ERRNDEF (ERRIFNDEF)
Синтаксис директив . ERRDEF (ERRIFDEF)и . ERRNDEF (ERRIFNDEF): . ERRDEF (ERRIFDEF) символическое_имя . ERRNDEF (ERRIFNDEF) символическое_имя Директива . ERRDEF (ERRIFDEF) генерирует пользовательскую ошибку, если указанное символическое имя определено до выдачи этой директивы в программе. Директива . ERRNDEF (ERRIFNDEF)генерирует пользовательскую ошибку, если указанное символическое имя не определено до момента обработки транслятором этой директивы. Данные директивы генерируют ошибку трансляции в зависимости от того, определено или нет некоторое символическое имя в программе. Не забывайте о том, что компилятор TASM по умолчанию формирует объектный модуль за один проход исходного текста программы. Следовательно, директивы . ERRDEF (ERRIFDEF) . ERRNDEF(ERRIFNDEF) отслеживают факт определения символического имени только в той части исходного текста, которая находится до этих директив. Директивы . ERRDIF (ERRIFDIF)и . ERRIDN (ERRIFIDN) Синтаксис директив . ERRDIF (ERRIFDIF)и . ERRIDN (ERRIFIDN): . ERRDIF (ERRIFDIF)<строка_1>, <строка_2> . ERRIDN (ERRIFIDN)<строка_1>, <строка_2> Директива . ERRDIF (ERRIFDIF) генерирует пользовательскую ошибку, если две строки посимвольно не совпадают. Строки могут быть символическими именами, числами или выражениями и должны быть заключены в угловые скобки. Аналогично директиве условной компиляции IFDIF, при сравнении учитывается различие прописных и строчных букв. Директива . ERRIDN (ERRIFIDN) генерирует пользовательскую ошибку, если строки посимвольно идентичны. Строчные и прописные буквы воспринимаются как разные. Для того чтобы игнорировать различия строчных и прописных букв, существуют аналогичные директивы: ERRIFDIFI <строка_1>, <строка_2> ERRIFIDNI <строка_1>, <строка_2> Директива ERRIFDIFI аналогична директиве ERRIFDIF, но игнорируется различие строчных и прописных букв при сравнении строк <строка_1>и <строка_2>. Директива ERRIFIDNI аналогична директиве ERRIFIDN, но игнорируется различие строчных и прописных букв при сравнении строк <строка_1>и <строка_2>. Данные директивы, как и соответствующие им директивы условной компиляции, удобно применять для проверки передаваемых в макрос фактических параметров. Директивы . ERRE (ERRIFE)и . ERRNZ (ERRIF) Синтаксис директив .ERRE (ERRIFE) и .ERRNZ (ERRIF): .ERRE (ERRIFE)константное_выражение .ERRNZ (ERRIF)константное_выражение Директива . ERRE (ERRIFE)вызывает пользовательскую ошибку, если константное выражение ложно (равно нулю). Вычисление константного выражения должно приводить к абсолютному значению, и это выражение не может содержать ссылок вперед. Директива . ERRNZ(ERRIF) вызывает пользовательскую ошибку, если константное выражение истинно (не равно нулю). Вычисление константного выражения должно приводить к абсолютному значению и не может содержать ссылок вперед. Константные выражения в условных директивах Во многих условных директивах в формировании условия участвуют выражения. Результат вычисления этого выражения обязательно должен быть константой. Хотя его компонентами могут быть и символические параметры, но их сочетание в выражении должно давать абсолютный результат. Кроме того, константное выражение не должно содержать компоненты, которые транслятор еще не обработал к тому месту программы, где находится условная директива. Также мы отметили, что логические результаты «истина » и «ложь» являются условными в том смысле, что ноль соответствует логическому результату «ложь », а любое ненулевое значение — «истине ». Однако в языке ассемблера существуют операторы, которые позволяют сформировать и «чисто логический» результат. Это так называемые операторы отношений, выражающие отношение двух значений или константных выражений. В контексте условных директив вместе с операторами отношений можно рассматривать и логические операторы. Результатом работы тех и других может быть одно из двух значений: истина — число, которое содержит двоичные единицы во всех разрядах; ложь — число, которое содержит двоичные нули во всех разрядах. Операторы, которые можно применять в выражениях условных директив и ко- торые формируют логические результаты, приведены в табл. 14. 1 и 14. 2. Оператор отношения EQ (equal)— равно NE (not equal)— не равно LT (less than)— меньше LE (less or equal)— меньше или равно GT (greater than)- больше GE (greater or equal)— больше или равно Синтаксис выражение_1 EQ выражение_2 выражение_1 NE выражение_2 выражение_1 LT выражение_2 выражение_1 LE выражение 2 выражение_1 GT выражение_2 выражение_1 GE выражение_2 Результат Истина, если выражение_1 равно выражение_2 Истина, если выражение_1 не равно выражение_2 Истина, если выражение_1 меньше выражение_2 Истина, если выражение_1 меньше или равно выражение 2 Истина, если выражение_1 больше выражение_2 Истина, если выражение_1 больше или равно выражение_2
Логический оператор NOT — логическое отрицание AND — логическое И OR — логическое ИЛИ XOR — исключающее ИЛИ Синтаксис NOT выражение выражение_1 AND выражение_2 выражение_1 OR выражение 2 выражение_1 XOR выражение_2 Дополнительные средства управления трансляцией ТASM предоставляет средства для вывода текстового сообщения во время трансляции программы — директивы DISPLAY и %OUT. С их помощью можно при необходимости следить за ходом трансляции. К примеру, display “недопустимые аргументы макрокоманды” %out “недопустимое имя регистра” В результате обработки этих директив на экран (стандартный выход) будут выведены тексты сообщений. Если эти директивы использовать совместно с директивами условной компиляции, то, к примеру, можно отслеживать путь, по которому осуществляется трансляция исходного текста программы.
|
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 184. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |