The following is common for all AVR Assembler projects, regardless of the assembler version used.
Use of-ASCII characters (like шедиЂ) in project names, directory names, or source file names is not supported. The full pathname down to the project directory must consist of ASCII characters only. AVR Studio will allow the create projects with these characters, but building will fail.
AVR Assembler 2 Known Issues
Note that AVR Assembler 1 is obsoleted, these issues are not likely to be fixed. None of them are an issue in AVRASM2. New AVR devices introduced after AVR Studio 4.11 are NOT supported. AVR Assembler 1 should NOT be used in new projects.
The following list applies to AVRASM V1.77. Earlier versions may have more issues.
Some syntax errors are not detected by the parser. For instance, the conditional .if A = 0 is incorrect (the correct syntax is .if A == 0). Not only is this error undetected, but the assembler evaluates the statement as .if A which is the exact opposite of what was intended in this example. In some cases such errors has gone undetected until the program is assembled with AVRASM2.
will not detect improperly formatted numbers. Example:
.def FOO = 3F
will not produce an error message, and FOO gets the value 3. (the correct syntax is .def FOO = 0x3f or .def FOO = $3F
The characters '#' and ';' are taken as comment delimiters even when appearing in quotes, causing their use in strings ("#") or character constants (';') to produce "garbage at and of line" errors.
In a macro definition, the .endmacro directive
must appear on a separate line, not at the same line as a label.
will produce an incorrect error message: "Macro call within macro not supported".
The work-around is to split the line, i.e.:
The assembler does not detect misplaced .elif
conditionals in sequences like .if
... .else ... .elif ... .endif.
Example: the following program will assemble without errors, and output the message "a != 1 && a != 0".
.equ a = 0
.if a == 1
.message "a = 1"
.message "a != 1 && a != 0"
.elif a == 0
.message "a = 0"
The assembler does not support Motorola Hex output format for addresses > 0x10000 (64kB). Addresses > 0x10000 should be encoded as 3-byte S2 records but are incorrectly encoded as 2-byte S1 records - no warning is issued.
Maximum size of an assembler label is 31 chars. If the size extends this maximum, an error message will be given.