Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YaP_Vopros_8_Makrodirektivy.doc
Скачиваний:
5
Добавлен:
30.04.2015
Размер:
147.97 Кб
Скачать

Директивы . 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 “недопустимое имя регистра”

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