Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция 8 / Лекция 8.doc
Скачиваний:
25
Добавлен:
10.06.2015
Размер:
223.74 Кб
Скачать

Директивы .Erre (errife) и .Errnz (errif)

Синтаксис директив .ERRE (ERRIFE) и .ERRNZ (ERRIF):

.ERRE (ERRIFE) константное_выражение

.ERRNZ (ERRIF) константное_выражение

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

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

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

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

К примеру,

.data

mas db ...

ten dd …

.code

.erre (len-mas) It 10 ;генерация ошибки, если длина

;области mas меньше 10 байт

Кроме того, константное выражение не должно содержать компоненты, которые транслятор еще не обработал к тому месту программы, где находится условная директива. Также мы отметили, что логические результаты «истина» и «ложь» являются условными в том смысле, что ноль соответствует логическому результату «ложь», а любое ненулевое значение — «истине». Однако в языке ассемблера существуют операторы, которые позволяют сформировать и «чисто логический» результат. Это так называемые операторы отношений, выражающие отношение двух значений или константных выражений. В контексте условных директив вместе с операторами отношений можно рассматривать и логические операторы.Результатом работы тех и других может быть одно из двух значений:

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

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

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

Таблица 14.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

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

Логический оператор

Синтаксис

Результат

NOT — логическое отрицание

NOT выражение

Истина, если выражение ложно; ложь, если выражение истинно

AND — логическое И

выражение_1 AND выражение_2

Истина, если выражение_1 и выражение_2 истинны

OR — логическое ИЛИ

выражение_1 OR выражение 2

Истина, если выражение_1 или выражение 2 истинны

XOR — исключающее ИЛИ

выражение_1 XOR выражение_2

Истина, если выражение_1 равно логическому отрицанию выражения_2

Соседние файлы в папке Лекция 8