Оператор |
Синтаксис |
Описание |
Пример |
+(плюс) |
Выражение1 + Выражение2 (сложение) или + Выражение (унарный плюс)
|
Сложение или унарный плюс. Бинарный "+" суммирует значения двух выражений. Унарный "+" сохраняет знак и значение выражения.
Примечания: Оператор сложения ('+') может использоваться для прибавления целого числа к операнду, перемещаемому в памяти. Операндом,перемещаемым в памяти, может быть только одно из выражений. Оба выражения могут быть целыми числами. Унарная операция '+' обладает более высоким приоритетом,чем оператор сложения. Смотри 'Старшинство операций', где описан порядок старшинства операций. |
mov eax,[ebp+08h] |
Операторы с их значениями приоритета перечислены в таблице 1.4.
Операции с высшим приоритетом выполняются первыми, однако вы, конечно, можете изменить такой образ действий, заключив некоторые части выражения в скобочки. "+", "-", "*" и "/" - это стандартные арифметические операции, "mod" вычисляет остаток от деления нацело. "and", "or", "xor", "shl", "shr" и "not" совершают те же логические операции, что и инструкции ассемблера с такими же названиями. "rva" характерна только для формата вывода PE и производит превращение адреса в RVA.
Числа в выражениях по умолчанию обрабатываются как десятичные, двоичные числа должны иметь "b" в конце, восьмеричные числа должны заканчиваться на букву "o", шестнадцатеричные цифры должны начинаться символами "0x" (как в языке C), или символом "$" (как в языке Pascal) или должны заканчиваться буквой "h". Также заключенная в кавычки строка при включении в выражение будет конвертирована в число - первый символ станет минимальным значащим байтом числа. Числовые выражения, используемые как значения адреса, могут также содержать любой из общих регистров, используемых для адресации, они могут быть сложены или умножены на подходящие значения так, как это позволено в инструкциях архитектуры x86.
Также есть несколько специальных символов, которые могут быть использованы в числовом выражении. Первое - это "$", которое всегда равно значению текущего смещения, тогда как "$$" равно базовому адресу текущего диапазона адресов. Следующий символ - "%" - это номер текущего повтора в частях кода, которые повторяются, благодаря использованию некоторых специальных директив. Также существует символ "%t", который всегда равен текущей отметке времени.
Любое численное выражение также может состоять из одного значения с плавающей точкой (flat assembler не может производить во время компиляции операции с плавающей точкой) в научной записи. Для распознания компилятором, эти значения должны содержать в конце букву "f", либо включать в себя по крайней мере один символ "." или "E". Так, "1.0", "1E0" и "1f" определяют одно и то же значение с плавающей точкой, когда как просто "1" определяет целочисленное значение.
Таблица 1.4 Арифметические и логические операторы в порядке приоритета
Приоритет |
Операторы |
0 |
+ - |
1 |
* / |
2 |
mod |
3 |
and or xor |
4 |
shl shr |
5 |
not |
6 |
rva |
Совместимость:
MASM: Выполняет теже функции.