Basic arguments

Most arguments are just a number or label. The formats for these are below.

Numeric types

Label types

Normal labels are simply referred to by name. Anonymous labels may be referenced with strings of - or + signs (the label - refers to the immediate previous anonymous label, -- the one before that, etc., while + refers to the next anonymous label), and the special label ^ refers to the program counter at the start of the current instruction or directive.

Normal labels are defined by prefixing a line with the label name and then a colon (e.g., label:). Anonymous labels are defined by prefixing a line with an asterisk (e.g., *).

Temporary labels are only reachable from inside the innermost enclosing .scope statement. They are identical to normal labels in every way, except that they start with an underscore.

String types

Strings are enclosed in double quotation marks. Backslashed characters (including backslashes and double quotes) are treated literally, so the string "The man said, \"The \\ character is the backslash.\"" produces the ASCII sequence for The man said, "The \ character is the backslash."

Strings are generally only used as arguments to assembler directives—usually for filenames (e.g., .include) but also for string data (in association with .byte).

It is legal, though unusual, to attempt to pass a string to the other data statements. This will produces a series of words/dwords where all bytes that aren't least-significant are zero. Endianness and size will match what the directive itself indicated.