Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Директивы .ERRDIF (ERRIFDIF) и .ERRIDN (ERRIFIDN)



Синтаксис директив:

.ERRDIF (ERRIFDIF) < строка_1>, < строка_2> — директива, генерирующая пользовательскую ошибку, если две строки посимвольно не совпадают. Строки могут быть символическими именами, числами или выражениями и должны быть заключены в угловые скобки. Аналогично директиве условной компиляции IFDIF, при сравнении учитывается различие прописных и строчных букв.

.ERRIDN (ERRIFIDN) < строка_1>, < строка_2> — директива, генерирующая пользовательскую ошибку, если строки посимвольно идентичны. Строчное и прописное написание одной и той же буквы воспринимается как разные символы.

Для того чтобы игнорировать различия строчных и прописных букв, существуют аналогичные директивы:

ERRIFDIFI < строка_1>, < строка_2> — то же, что и ERRIFDIF , но игнорируется различие строчных и прописных букв при сравнении < строка_1> и < строка_2>.

ERRIFIDNI < строка_1>, < строка_2> — то же, что и ERRIFIDN, но игнорируется различие строчных и прописных букв при сравнении < строка_1> и < строка_2>.

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

Директивы.ERRE (ERRIFE) и.ERRNZ (ERRIF)

Синтаксис директив:

.ERRE (ERRIFE) константное_выражение — директива вызывает пользовательскую ошибку, если константное_выражение ложно (равно нулю). Вычисление константного_выражения должно приводить к абсолютному значению, и это выражение не может содержать компонентов, являющихся ссылками вперед.

.ERRNZ(ERRIF) константное_выражение — директива вызывает пользовательскую ошибку, если константное_выражение истинно (не равно нулю). Вычисление константного_выражения должно приводить к абсолютному значению и не может содержать компонентов, являющихся ссылками вперед.

Константные выражения в условных директивах

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

К примеру:

.datamas db...len dd.......code....erre (len-mas) lt 10; генерация ошибки, если длина; области mas меньше 10 байт...

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

Также мы отметили, что логические результаты “истина” и “ложь” являются условными в том смысле, что ноль соответствует логическому результату “ложь”, а любое ненулевое значение — “истине”.

Но в языке ассемблера существуют операторы, которые позволяют сформировать и “чисто логический” результат. Это так называемые операторы отношений, выражающие отношение двух значений или константных выражений.

В контексте условных директив вместе с операторами отношений можно рассматривать и логические операторы. Результатом работы и тех, и других может быть одно из двух значений:

  • истина — число, которое содержит двоичные единицы во всех разрядах;
  • ложь — число, которое содержит двоичные нули во всех разрядах.

Операторы, которые можно применять в выражениях условных директив и которые формируют логические результаты, приведены в табл. 1 и 2.

Таблица 1. Операторы отношений

Оператор/ Синтаксис Результат отношения
EQ (equal) — равно выражение_1 EQ выражение_2 истина — если выражение_1 равно выражение_2
NE (not equal) — не равно Выражение_1 NE выражение_2 Истина — если выражение_1 не равно выражение_2
LT (less than) — меньше Выражение_1 LT выражение_2 Истина — если выражение_1 меньше выражение_2
LE (less or equal) — меньше или равно Выражение_1 LE выражение_2 Истина — если выражение_1 меньше или равно выражение_2
GT (greater than) — больше Выражение_1 GT выражение_2 Истина — если выражение_1 больше выражение_2
GE (greater or equal) — больше или равно Выражение_1 GE выражение_2 Истина — если выражение_1 больше или равно выражение_2

Таблица 2. Логические операторы

Оператор Синтаксис Результат
NOT — логическое отрицание NOT выражение Истина — если выражение ложно; ложь — если выражение истинно
AND — логическое И выражение_1 AND выражение_2 Истина — если выражение_1 и выражение_2 истинны
OR — логическое ИЛИ выражение_1 OR выражение_2 Истина — если выражение_1 или выражение_2 истинны
XOR — исключающее ИЛИ выражение_1 XOR выражение_2 Истина — если выражение_1 = (NOT выражение_2)

Дополнительное управление трансляцией

TASM предоставляет средства для вывода текстового сообщения во время трансляции программы — директивы DISPLAY и %OUT. С их помощью можно, при необходимости, следить за ходом трансляции.

К примеру:

display недопустимые аргументы макрокоманды...%out недопустимое имя регистра

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

 

Самостоятельная работа. Опции транслятора TASM и редактора связей TLINK

В данном документе приведены опции командной строки:

  • для транслятора Turbo Assembler фирмы Borland (TASM) (версия 3.0 и выше);
  • редактора связей TLINK.

Во избежание несовместимости используйте программы TLINK и TASM одной версии.

Опции транслятора TASM


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-28; Просмотров: 506; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.015 с.)
Главная | Случайная страница | Обратная связь