Студопедия

КАТЕГОРИИ:

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

Директивы . 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...