This appendix contains the following sections:
Overview
Fatal Errors
Assembly Errors
Assembly Warnings
This appendix describes the error messages and warnings produced by the assembler asm51. There are three types of messages: fatal errors, assembly errors and assembly warnings.
The following errors cause the assembler to exit immediately.
This signifies an internal assembler error. If you get this message from the assembler please contact your local TASKING representative.
The file file cannot be opened because the file does not exist or the file permissions do not allow access.
The file file cannot be opened because the file does not exist or the file permissions do not allow access.
The file file cannot be created because the parent directory does not exist, the directory is not writable or file already exists and does not allow write access.
An error occurred during a write to the output file.
The following errors may occur during the assembly process and cause the assembler to stop at the end of the current pass. For errors marked (FATAL), the assembler stops immediately because it is impossible to continue.
Something is wrong with the assembler. Assistance can be obtained from your local TASKING representative.
The current line contains a syntax error.
A number with more than 20 digits is used.
Division by zero error during expression evaluation.
A forward reference was used in the expression defining an equate.
An attempt was made to define a symbol which is already defined.
Unexpected letters were found in a numerical constant.
A non-ASCII character was encountered in the input.
The location counter overflowed to a value greater than 0FFFFH.
The symbol was not defined local and not declared external.
The value of a DB expression is not between -256 and +255.
A DS , DBIT , DB or DW assembler directive was used in the wrong segment.
A string without a terminating single or double quote was encountered.
A string, used in an expression, may not be longer than two characters.
An absolute expression, not containing any relocatable symbols, is required here.
Conditional instructions cannot have a destination address outside the current segment.
External references are not allowed in equate definitions or ORG assembler directives.
Segment names are not allowed in equate definitions.
The total number of segments may not exceed 253.
The location counter may not be set to a value below the segment base address.
DATA segment must be declared BITADDRESSABLE to enable bit selections.
The register bank number must be 0, 1, 2 or 3.
An expression defining the value for an ORG directive may not contain relocatable symbols defined in other segments.
An expression must not contain references to different segment types.
The size of a segment with the INPAGE attribute exceeds 256.
The size of a segment with the INBLOCK attribute exceeds 2048.
One of the segment attributes is not allowed for this segment type:
- PAGE and INPAGE are allowed for CODE and XDATA only.
- INBLOCK is valid for CODE only,
- BITADDRESSABLE is valid for DATA only.
There is not enough memory to continue.
Each relocatable segment must be declared exactly once.
The name used in a segment definition is already used in another declaration.
A segment should be declared before it is first used.
The assembler control control_name requires a numerical argument.
The assembler control control requires an argument enclosed in parenthesis.
The assembler control control_name does not exist.
An attempt was made to define a label which is already declared external.
The label declared external is already declared local.
The operands of a binary operation have incompatible expression types.
The operands of a binary operation are incompatible, because they are defined in different memory spaces.
This error is generated if:
- A bit selection is attempted from a byte which is not in DATA space.
- The type of the expression defining the value for a typed equate does not match the equate type.
- The expression defining the value for an ORG directive has the wrong memory space attribute.
An expression involving the LOW/HIGH operators and relocatable symbols may not be used as operand in another expression. Thus in a relocatable expression, the operators LOW and HIGH must be at the outermost level.
The $INCLUDE(file) control must be interpreted by the macro preprocessor, where the control will be erased when the file is included. The assembler signals an error if the control is still there, because the user apparently forgot to invoke the preprocessor.
The parser encountered a syntax error from which it cannot recover, so the parsing is aborted. This error only occurs under very rare circumstances. Normally, error number 1 is generated for a syntax error.
This error is generated when the expression defining a byte value evaluates into a number less than -256 or greater than +255.
The offset for a branch or jump is too large to fit in the instruction.
This type of operand is not allowed for this instruction.
Generated if an indirect register (R0 or R1) is required, but another register is used.
The assembler cannot evaluate the defining expression of the equate.
This error is caused by an illegal operation involving a relocatable subexpression. The only operations possible on a relocatable (sub-)expression are adding and subtracting an absolute value, and performing the LOW or HIGH operation.
The byte used for a bit selection is not a bit-addressable memory location.
More than 10 external symbols are used on one source line.
The expression does not correspond to a valid address in the memory space associated with the expression.
The OVERLAY attribute is invalid for segments in CODE memory space.
The value of a symbol in pass 3 is different from its value in pass 2. This error only occurs under very rare circumstances.
The number of segment attributes, excluding the OVERLAY attribute, is greater than one.
Is is not allowed to have two external references in one expression. Make at least one of the symbols global.
The total length of the controls given on the command line exceeds 256 characters.
A string longer than 200 characters is encountered.
A bit number which is not in the range 0-7 is used.
The size of a segment with the SHORT attribute exceeds 256.
Only the SET directive can be used to redefine a symbol.
With the NOEXTERNALMEMORY control specified, the MOVX instruction is not allowed.
NOEXTERNALMEMORYThe .sfr file you specified with the -D option cannot be found in the search path. Check whether the specified .sfr file exists or change the search path with the -D option.
NOEXTERNALMEMORY-D -D The content of the accumulator after the execution of this instruction is undefined.
NOEXTERNALMEMORY-D -D A line longer than 1500 characters is encountered.
The following warnings may occur during the assembly process. Warnings do not cause the assembler to stop premature.
Two parts of the same segment overlap.
A primary control may be used only at the beginning of a source file.
A primary control may not be set more than once.
The assembler encountered an assembler control it does not recognize. This error indicates an inconsistency in the assembler.
The page width specified with the PAGEWIDTH(width) control is too small to produce a reasonable listing, so it is set to 64.
The END statement is missing.
The END statement is not on the last line of the source file. The remaining lines are ignored, although they appear in the listing.
The generation of a symbol table is not implemented.
The bit table used for jump optimizations is full, so that no further optimizations take place.
The assembler attempts to speed up disk I/O by using a large buffer in memory. If the allocation of the buffer fails, this warning is generated. If no further errors occur, the output file is created normally.