Flat Assembler 1.64. Мануал программера | страница 7
Операции с высшим приоритетом выполняются первыми, однако вы, конечно, можете изменить такой образ действий, заключив некоторые части выражения в скобочки. «>+
», «>-
", «>*
» и «>/
» — это стандартные арифметические операции, «>mod
» вычисляет остаток от деления нацело. «>and
», «>or
», «>xor
», «>shl
», «>shr
» и «>not
» совершают те же логические операции, что и инструкции ассемблера с такими же названиями. «>rva
» характерна только для формата вывода PE и производит превращение адреса в RVA.
Числа в выражениях по умолчанию обрабатываются как десятичные, двоичные числа должны иметь «>b
» в конце, восьмеричные числа должны заканчиваться на букву «>o
», шестнадцатеричные цифры должны начинаться символами «>0x
» (как в языке C), или символом «>$
» (как в языке Pascal) или должны заканчиваться буквой «>h
». Также заключенная в кавычки строка при включении в выражение будет конвертирована в число — первый символ станет минимальным значащим байтом числа. Числовые выражения, используемые как значения адреса, могут также содержать любой из общих регистров, используемых для адресации, они могут быть сложены или умножены на подходящие значения так, как это позволено в инструкциях архитектуры x86.
Также есть несколько специальных символов, которые могут быть использованы в числовом выражении. Первое — это «>$
», которое всегда равно значению текущего смещения, тогда как «>$$
» равно базовому адресу текущего диапазона адресов. Следующий символ — «>%
» — это номер текущего повтора в частях кода, которые повторяются, благодаря использованию некоторых специальных директив (смотрите 2.2). Также существует символ «>%t
», который всегда равен текущей отметке времени.
Любое численное выражение также может состоять из одного значения с плавающей точкой (flat assembler не может производить во время компиляции операции с плавающей точкой) в научной записи. Для распознания компилятором, эти значения должны содержать в конце букву «>f
», либо включать в себя по крайней мере один символ ">.
» или «>E
». Так, «>1.0
», «>1E0
» и «>1f
» определяют одно и то же значение с плавающей точкой, когда как просто «>1
» определяет целочисленное значение.
1.2.5 Переходы и вызовы
Операнд любого перехода или инструкция вызова может предваряться не только операторами размера, но также одним из операторов, определяющих тип перехода: «>near
» или «>far
». Например, если ассемблер в 16-битном режиме, инструкция «