The high and low operators, like offset and seg , change the type of expression from whatever it was to a constant. These operators also affect the value of the expression - they decompose it into a high order byte and a low order byte. The high operator extracts bits eight through fifteen of the expression, the low operator extracts and returns bits zero through seven. Although you will rarely need to use a complex address expression employing more than two operands and a single operator, the need does arise on occasion. Operators of an equal precedence are left associative and evaluate from left to right.
Parentheses override the normal precedence.
Some operators, like sizeof and lengthof , require type names, not expressions. They do not allow you to put parentheses around the name. Keep this in mind when using parentheses to override operator precedence in an expression. If MASM generates an error, you may need to rearrange the parentheses in your expression. This generally makes the expression more readable and helps avoid precedence related bugs.