Assembler Errors
MPASM assembler errors are listed numerically below:
101 ERROR:
User error, invoked with the ERROR directive.
102 Out of memory.
Not enough memory for macros, #defines or internal processing. Eliminate any TSR's, close any open applications, and try assembling the file again. If this error was obtained using the Real Mode DOS executable, try using either the Windows version (MPASMWIN) or DPMI version (MPASM_DP)
103 Symbol table full.
No more memory available for the symbol table. Eliminate any TSR's, close any open applications, and try assembling the file again. If this error was obtained using the Real Mode DOS executable, try using either the Windows version (MPASMWIN) or DPMI version (MPASM_DP)
104 Temp file creation error.
Could not create a temporary file. Check the available disk space.
105 Cannot open file.
Could not open a file. If it is a source file, the file may not exist. If it is an output file, the old version may be write protected.
106 String substitution too complex.
Too much nesting of #defines.
107 Illegal digit.
An illegal digit in a number. Valid digits are 0-1 for binary, 0-7 for octal, 0-9 for decimal, and 0-9, a-f, and A-F for hexadecimal.
108 Illegal character.
An illegal character in a label. Valid characters for labels are alphabetic (a..f, A..F), numeric (0-9), the underscore (_), and the question mark (?). Labels may not begin with a numeric.
109 Unmatched (
An open parenthesis did not have a matching close parenthesis. For example, "DATA (1+2".
110 Unmatched )
An close parenthesis did not have a matching open parenthesis. For example, DATA 1+2).
111 Missing symbol.
An EQU or SET statement did not have a symbol to assign the value to.
112 Missing operator.
An arithmetic operator was missing from an expression. For example, DATA 1 2.
113 Symbol not previously defined.
A symbol was referenced that has not yet been defined. Only addresses may be used as forward references. Constants and variables must be declared before they are used.
114 Divide by zero.
Division by zero encountered during an expression evaluation.
115 Duplicate label.
A label was declared as a constant (e.g., with the EQU or CBLOCK directive) in more than one location.
116 Address label duplicated or different in second pass.
The same label was used in two locations. Alternately, the label was used only once but evaluated to a different location on the second pass. This often happens when users try to write page-bit setting macros that generate different numbers of instructions based on the destination.
117 Address wrapped around 0.
The location counter can only advance to FFFF. After that, it wraps back to 0.
118 Overwriting previous address contents.
Code was previously generated for this address.
119 Code too fragmented.
The code is broken into too many pieces. This error is very rare, and will only occur in source code that references addresses above 32K (including configuration bits).
120 Call or jump not allowed at this address.
A call or jump cannot be made to this address. For example, CALL destinations on the PIC16C5x family must be in the lower half of the page.
121 Illegal label.
Labels are not allowed on certain directive lines. Simply put the label on its own line, above the directive. Also, HIGH, LOW, PAGE, and BANK are not allowed as labels.
122 Illegal opcode.
Token is not a valid opcode.
123 Illegal directive.
Directive is not allowed for the selected processor; for example, the
_ _IDLOCS directive on the PIC17C42.
124 Illegal argument.
An illegal directive argument; for example, LIST STUPID.
125 Illegal condition.
A bad conditional assembly. For example, an unmatched ENDIF.
126 Argument out of range.
Opcode or directive argument out of the valid range; for example, TRIS 10.
127 Too many arguments.
Too many arguments specified for a macro call.
128 Missing argument(s).
Not enough arguments for a macro call or an opcode.
129 Expected.
Expected a certain type of argument. The expected list will be provided.
130 Processor type previously defined.
A different family of processor is being selected.
131 Processor type is undefined.
Code is being generated before the processor has been defined. Note that until the processor is defined, the opcode set is not known.
132 Unknown processor.
The selected processor is not a valid processor.
133 Hex file format INHX32 required.
An address above 32K was specified. For example, specifying the configuration bits on the PIC17CXXX family.
134 Illegal hex file format.
An illegal hex file format was specified in the LIST directive.
135 Macro name missing.
A macro was defined without a name.
136 Duplicate macro name.
A macro name was duplicated.
137 Macros nested too deep.
The maximum macro nesting level was exceeded.
138 Include files nested too deep.
The maximum include file nesting level was exceeded.
139 Maximum of 100 lines inside WHILE-ENDW.
A WHILE-ENDW can contain at most 100 lines.
140 WHILE must terminate within 256 iterations.
A WHILE-ENDW loop must terminate within 256 iterations. This is to prevent infinite assembly.
141 WHILEs nested too deep.
The maximum WHILE-ENDW nesting level was exceeded.
142 IFs nested too deep.
The maximum IF nesting level was exceeded.
143 Illegal nesting.
Macros, IF's and WHILE's must be completely nested; they cannot overlap. If you have an IF within a WHILE loop, the ENDIF must come before the ENDW.
144 Unmatched ENDC.
ENDC found without a CBLOCK.
145 Unmatched ENDM.
ENDM found without a MACRO definition.
146 Unmatched EXITM.
EXITM found without a MACRO definition.
147 Directive not allowed when generating an object file.
The ORG directive is not allowed when generating an object file. Instead, declare a data or code section, specifying the address if necessary.
148 Expanded source line exceeded 200 characters.
The maximum length of a source line, after #DEFINE and macro parameter substitution, is 200 characters. Note that #DEFINE substitution does not include comments, but macro parameter substitution does.
149 Directive only allowed when generating an object file section.
Certain directives, such as GLOBAL and EXTERN, only have meaning when an object file is generated. They cannot be used when generating absolute code.
150 Labels must be defined in a code or data section when making an object file.
When generating an object file, all data and code address labels must be defined inside a data or code section. Symbols defined by the EQU and SET directives can be defined outside of a section.
151 Operand contains unresolvable labels or is too complex.
When generating an object file, operands must be of the form [HIGH|LOW]([<relocatable address label>]+[<offset>]).
152 Executable code and data must be defined in an appropriate section.
When generating an object file, all executable code and data declarations must be placed within appropriate sections.
153 Page or Bank bits cannot be evaluated for the operand.
The operand of a PAGESEL, BANKSEL or BANKISEL directive must be of the form <relocatable address label> or <constant>.
154 Each object file section must be contiguous.
Object file sections, except UDATA_OVR sections, cannot be stopped and restarted within a single source file. To resolve this problem, either name each section with its own name or move the code and data declarations such that each section is contiguous. This error will also be generated if two sections of different types are given the same name.
155 All overlaid sections of the same name must have the same starting address.
If multiple UDATA_OVR sections with the same name are declared, they must all have the same starting address.
156 Operand must be an address label.
When generating object files, only address labels in code or data sections may be declared global. Variables declared by the SET or EQU directives may not be exported.
157 UNKNOWN ERROR.
An error has occurred which the assembler cannot understand. It is not any of the errors described in this appendix. Contact your Microchip Field Application Engineer (FAE) if you cannot debug this error.
Microchip Technology Inc. Microchip's Web Site Voice: (480) 792-7200 Fax: (480) 899-9210 Microchip's E-mail Address |