К операндам команд применимы следующие операции:
Арифметические операторы.
К ним относятся:
- унарные “+” и “–”;
- бинарные “+” и “–”;
- умножение “*”;
- целочисленное деление “/”;
- получение остатка от деления “mod”.
Mov ax, 5+7 ;ax <- 12
Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов. (shl, shr, sal, sar и т.п.)
Операторы сравнения (возвращают значение “истина” или “ложь”) предназначены для формирования логических выражений. Логическое значение “истина” соответствует цифровой единице, а “ложь” — нулю.
Логические операторы выполняют над выражениями побитовые операции (AND OR, XOR, NEG, NOT)
Например: val equ 10010011 mov al, val xor 10010010; al= 00000001;
Индексный оператор [ ] (квадратные скобки). Транслятор их наличие воспринимает как указание сложить значение выражение_1 за этими скобками с выражение_2, заключенным в скобки.
mov ax, mas[si] ;пересылка слова по адресу ;mas+(si) -> ax
Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением. Тип может быть: byte, word, dword, qword, tbyte, near, far.
my_var dd 0 ... mov ah,byte ptr my_var +1 ;пересылка второго байта ;из двойного слова
Оператор переопределения сегмента :(двоеточие) заставляет вычислять физический адрес относительно конкретно задаваемой сегментной составляющей: “имя сегментного регистра”, “имя сегмента” из соответствующей директивы SEGMENT. Сегмент CS переопределить нельзя.
Операторы получения специальных значений:
- seg (физический адрес сегмента в котором было объявлено выражение),
- offset (смещение выражения в байтах относительно начала того сегмента, в котором выражение определено
- type (возвращает размер директивы, с помощью которой было описано выражение ),
- length (возвращает количество элементов в выражении),
- size (length * type).
Оператор изменения приоритета (). Операторы операндов имеют разный приоритет, операторы с одинаковым приоритетом выполняются последовательно слева на право. Изменить приоритет того или иного оператора можно при помощи оператора (), который имеет наивысший приоритет.