User manual
ST Assembler-Linker Error messages
Doc ID 11392 Rev 4 81/89
51
Phase inconsistency (P1=X,P2=Y) 'label': Reports that the named label was allocated different values
from pass-1 and pass-2, implies awful things. It's generally caused when for some reason the assembler
has generated different lengths for the same instruction between pass-1 and pass-2. Sometimes if the
assembler has problems identifying which addressing mode you wanted for a particular instruction
because of typographical errors, or labels that are discovered to be undefined during the second pass it
may give an error (see Error 54) and create no object code for that line. All labels after that line will then be
allocated different values seeing as the object code is now that many bytes shorter, causing tons of Phase
Inconsistency errors. Because this mass of Error 51s can sometimes hide the real cause of the error, a
special assembler switch /np for 'no phase [errors]' can be used to switch them off. We strongly suggest
that you don't always use /np on all your assemblies; only use it when you need it or you might miss critical
phase errors.
52 Public symbol undefined: You defined a symbol in a PUBLIC directive that was not defined in the module.
53 Missing hex number: The assembler was led to expect a hex number but found one of zero length.
54
Cannot match addressing mode: This error is a catchall for the assembler if it cannot see anything wrong
with your line but cannot match it to a known addressing mode either.
There are two main causes of errors: significant ordering and numeric range errors. The significant
ordering error is a simple typographical error: what should have been (val),y was coded as (valy, or
whatever. All the components of the addressing mode are properly formed; it is just that the ordering is
wrong. The numeric range errors can be harder to detect. For example, an 8-bit relative branch branching
out of range would be trapped as an addressing mode error.
To aid diagnostics of what went wrong the assembler dumps out its model of the line to the screen just
before the error. Numerics are printed as a hex value followed by an attribute string: INTernal, EXTernal,
ABSolute, RELative and .b, .w, .l. Significands are printed as the characters they represent, and strings are
printed with their string.
Numeric range errors are also trapped at the link stage (See Section 5.1 on page 38).
55 Bad PSIG index: An 'impossible' error that could only occur through corruption of the .TAB file.
56
Un-recognized opcode: The Opcode (second field) could not be matched against any opcode names for
this instruction set, nor could it be matched against any macro names or directives.
57 No closing quote: String must have closing double-quote before the end of the line.
58
No more than 12 numerics allowed on one line: There is a limit of 12 numeric units allowed on one line:
this usually only matters on long DC.B-type directives where data tables are being defined. If it is a
problem, simply cut the offending long line into two shorter lines.
59
Out of space for macro definition: The macro storage area (ca 64K) has overflowed. You must have some
really big macros!
60 Too many macros attempted: There is a limit of 128 Macros allowed per source code module.
61 Mend only allowed in macro: MEND directive found with no matching MACRO directive.
62 No closing single quote: See error 29.
63 Bad ending: Another 'impossible' error, saying that the CR on the end of a source code line was missing.
64
Bad character in line: As each source code line is read into the assembler it is checked for non-ASCII
characters (that is >128).
65
Parameter mismatch: The macro definition implies that there is a different number of parameters than
there actually were in this calling line.
66
Currently unknown numeric type: An error in your Tabgen file, or a corrupted .TAB file: the numeric handler
was asked to check a number against an undefined numeric type. Are you using the latest version of
ASM.EXE and your .TAB file?
Table 82. Assembler errors (continued)
Error Definition