Справочник по языку Ассемблера IBM PC

     

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


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

.data mas 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)



Содержание раздела