Выражения

 

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

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

Операторы выполняют арифметические, логические, побитовые и другие операции над операндами выражений.

Ниже даны описания наиболее часто используемых в выражениях операторов.

 

Арифметические операторы.

 

выражение_1 * выражение_2
выражение_1 / выражение_2
выражение_1 MOD выражение_2
выражение_1 + выражение_2
выражение_1 - выражение_2
  + выражение
  - выражение

 

Эти операторы обеспечивают выполнение основных арифметических действий (здесь MOD - остаток от деления выражения_1 на выражение_2, а знаком / обозначается деление нацело). Результатом арифметического оператора является абсолютное значение.

 

Операторы сдвига.

 

выражение SHR счетчик
выражение SHL счетчик

 

Операторы SHR и SHL сдвигают значение выражения соответственно вправо и влево на число разрядов, определяемое счетчиком. Биты, выдвигаемые за пределы выражения, теряются. Замечание: не следует путать операторы SHR и SHL с одноименными инструкциями процессора.

 

Операторы отношений.

 

выражение_1 EQ выражение_2
выражение_1 NE выражение_2
выражение_1 LT выражение_2
выражение_1 LE выражение_2
выражение_1 GT выражение_2
выражение_1 GE выражение_2

 

Мнемонические коды отношений расшифровываются следующим образом:

 

EQ – равно;

NE – не равно;

LT – меньше;

LE – меньше или равно;

GT – больше;

GE – больше или равно.

 

Операторы отношений формируют значение 0FFFFh при выполнении условия и 0000h в противном случае. Выражения должны иметь абсолютные значения. Операторы отношений обычно используются в директивах условного ассемблирования и инструкциях условного перехода.

 

Операции с битами.

 

  NOT выражение
выражение_1 AND выражение_2
выражение_1 OR выражение_2
выражение_1 XOR выражение_2

 

Мнемоники операций расшифровываются следующим образом:

 

NOT – инверсия;

AND – логическое И;

OR – логическое ИЛИ;

XOR – исключающее логическое ИЛИ.

 

Операции выполняются над каждыми соответствующими битами выражений. Выражения должны иметь абсолютные значения.

 

Оператор индекса.

 

[[выражение_1]] [выражение_2]

 

Оператор индекса [] складывает указанные выражения подобно тому, как это делает оператор +, с той разницей, что первое выражение необязательно, при его отсутствии предполагается 0 (двойные квадратные скобки указывают на то, что операнд не обязателен).

 

Оператор PTR

 

тип PTR выражение

 

При помощи оператора PTR переменная или метка, задаваемая выражением, может трактоваться как переменная или метка указанного типа. Тип может быть задан одним из следующих имен или значений:

 

Таблица 1. Типы оператора PTR
Имя типа Значение
BYTE
WORD
DWORD
QWORD
TBYTE
NEAR 0FFFFh
FAR 0FFFEh

 

Оператор PTR обычно используется для точного определения размера, или расстояния, ссылки. Если PTR не используется, ассемблер подразумевает умалчиваемый тип ссылки. Кроме того, оператор PTR используется для организации доступа к объекту, который при другом способе вызвал бы генерацию сообщения об ошибке (например, для доступа к старшему байту переменной размера WORD).

 

Операторы HIGH и LOW

 

HIGH выражение
LOW выражение

 

Операторы HIGH и LOW вычисляют соответственно старшие и младшие 8 битов значения выражения. Выражение может иметь любое значение.

 

Оператор SEG

 

SEG выражение

 

Этот оператор вычисляет значение атрибута СЕГМЕНТ выражения. Выражение может быть меткой, переменной, именем сегмента, именем группы или другим символом.

 

Оператор OFFSET

 

OFFSET выражение

 

Этот оператор вычисляет значение атрибута СМЕЩЕНИЕ выражения. Выражение может быть меткой, переменной, именем сегмента или другим символом. Для имени сегмента вычисляется смещение от начала этого сегмента до последнего сгенерированного в этом сегменте байта.

 

Оператор SIZE

 

SIZE переменная

 

Оператор SIZE определяет число байтов памяти, выделенных переменной.