| |||
| Home > Assembler Reference > Expressions, literals, and operators > Binary operators | |||
Binary operators are written between the pair of subexpressions they operate on.
Binary operators have lower precedence than unary operators. Binary operators appear in this section in order of precedence.
The order of precedence is not the same as in C, see Operator precedence in armasm and C.
Multiplicative operators have the highest precedence of all binary operators. They act only on numeric expressions.
Table 3.9 shows the multiplicative operators.
Table 3.9. Multiplicative operators
| Operator | Alias | Usage | Explanation |
|---|---|---|---|
|
| Multiply | |
|
| Divide | |
| % |
| A modulo B |
Table 3.10 shows
the string manipulation operators. In CC, both A and B must
be strings. In the slicing operators LEFT and RIGHT:
A must
be a string
B must be a numeric expression.
Table 3.10. String manipulation operators
Operator | Usage | Explanation |
|---|---|---|
|
| B concatenated onto the end of A |
|
| The left-most B characters of A |
|
| The right-most B characters of A |
Shift operators act on numeric expressions, shifting or rotating the first operand by the amount specified by the second.
Table 3.11 shows the shift operators.
Table 3.11. Shift operators
Operator | Alias | Usage | Explanation |
|---|---|---|---|
|
| Rotate A left by B bits | |
|
| Rotate A right by B bits | |
| << |
| Shift A left by B bits |
| >> |
| Shift A right by B bits |
SHR is a logical shift and does not propagate
the sign bit.
Addition and subtraction operators act on numeric expressions.
Logical operators act on numeric expressions. The operation is performed bitwise, that is, independently on each bit of the operands to produce the result.
Table 3.12 shows addition, subtraction, and logical operators.
Table 3.12. Addition, subtraction, and logical operators
Operator | Alias | Usage | Explanation |
|---|---|---|---|
|
| Add A to B | |
|
| Subtract B from A | |
| & |
| Bitwise AND of A and B |
| ^ |
| Bitwise Exclusive OR of A and B |
| | |
| Bitwise OR of A and B |
Table 3.13 shows the relational operators. These act on two operands of the same type to produce a logical value.
The operands can be one of:
numeric
program-relative
register-relative
strings.
Strings are sorted using ASCII ordering. String A is
less than string B if it is a leading substring
of string B, or if the left-most character in
which the two strings differ is less in string A than
in string B.
Arithmetic values are unsigned, so the value of 0>-1 is {FALSE}.
Table 3.13. Relational operators
Operator | Alias | Usage | Explanation |
|---|---|---|---|
| == |
| A equal to B |
|
| A greater than B | |
|
| A greater than or equal to B | |
|
| A less than B | |
|
| A less than or equal to B | |
| <> != |
| A not equal to B |
These are the operators with the lowest precedence. They perform the standard logical operations on their operands.
In all three cases both A and B must be expressions that evaluate
to either {TRUE} or {FALSE}.
Table 3.14 shows the Boolean operators.
Table 3.14. Boolean operators
Operator | Alias | Usage | Explanation |
|---|---|---|---|
|
|
| Logical AND of A and B |
|
| Logical Exclusive OR of A and B | |
|
|
| Logical OR of A and B |