В приведенных выше примерах все числовые выражения были простыми числами, константами или метками. Но они могут быть более сложными, использующими арифметические или логические операторы для вычисления во время компиляции. Все эти операторы и их значения приоритета перечислены в таблице 1.4. Операции с более высоким приоритетом будет вычисляться в первую очередь, но это поведение, конечно, можно изменить, заключив некоторые части выражения в скобки. Операторы +, -, * и / ‑ это стандартные арифметические операции, mod вычисляет остаток от деления. Операторы and, or, xor, shl, shr и not выполняют те же логические операции, что и инструкции ассемблера с такими же названиями. Оператор rva выполняет преобразование адресов в перемещаемые смещения, что является специфичным для некоторых форматов вывода (см. п. 2.4).
Таблица 1.4 Приоритеты арифметических и логических операторов
Числа в выражении по умолчанию считаются десятичными, двоичными числа должны в конце иметь букву b, восьмеричное число должно заканчиваться буквой o, шестнадцатеричные числа должны начинаться с символов 0x (например, как в языке Си), либо с символа $ (например, как в языке Паскаль), или они должны заканчиваться буквой h. Также строка, заключенная в кавычки, когда встречаются в выражении, будет преобразованы в число, при этом первый символ станет младшим байтом числа.
Числовое выражение, используемое в качестве значения адреса, может содержать любой из регистров общего назначения, применяемых для адресации, они могут быть сложены и умножены на допустимые значения, также как это разрешено в инструкциях архитектуры x86.
Существуют также некоторые специальные символы, которые могут быть использованы внутри числового выражения. Первый из них $, который всегда равен значению текущего смещения, в то время как $$ равен базовому адресу текущего адресного пространства. Символ % определяет номер текущего повтора в повторяющихся частях кода, организованных благодаря использованию специальных директив (см. п. 2.2). А символ %t всегда равен текущему штампу времени.
Любое числовое выражение может состоять из одного значения с плавающей точкой (Flat Assembler не позволяет никаких операций с плавающей точкой на этапе компиляции). Такие числа должны заканчиваться буквой f или же включать в свой состав по крайней мере одного из символов . (точку) или букву E. Таким образом, числа 1.0, 1E0 и 1f определяют одно и то же значение с плавающей точкой, а просто 1 задает целое значение.