📄 err.doc
字号:
Cannot use PC as a register. PC only appears in the combination @A+PC in the statement movc A, @A+PC.Code address out of range. Code addresses can only range from 0 to ffff hex (or 0 to 65535 decimal).Data address out of range. Only direct data register addresses (0 to 7f hex, or 0 to 127), or special function register addresses can be used here.Decimal number has non-decimal digits. The number indicated has hexadecimal digits (a through f, or A through F) but no hexadecimal prefix (0x, 0X, 0h, 0H) or suffix (h, H, x, X).Division by 0. x / 0 is not defined.Empty character constant. A single quote cannot be quoted as a character ('''). Use '\'' instead. Alternatively, you attempted to define an empty string ("") with single quotes.Expected an argument/prefix operator. The expression indicated is probably missing a prefix operator, a symbol or constant, or an opening parenthesis '('.Expected segment type. The statement: seg Type, must have Type code, xdata, or data.Expected symbol after 'global' Only symbols can be declared as global.Expected symbol in 'extern' Only symbols can be declared as external.Expected type or 'equ' after 'extern'. External symbols must be declared as a type (sfr, bit, code, data, xdata) or as a numeric constant (equ). The valid forms are: extern (sfr, bit, code, data, xdata, or equ) Symbol, ..., SymbolExpression type does not match. The expression occurring on the right hand side of the statement of the form: Symbol Type Value, does not have the indicated type.Extra ','. An extra command was inserted after the last operand. Alternatively, the operand following the last comma is missing.Illegal combination: address + address Only numeric values can be added to or subtracted from addresses. The rules for address arithmetic are basically like those in C.Illegal combination: number - address Numbers can only be subtracted from addresses, not the other way around. The rules for address arithmetic are basically like those in C.Illegal combination: reg.bit Only numeric values in the range 0 to 7 can be used in place of "bit", not addresses.Indirect registers are not bit addressible. The register referred to ("reg") must be a data address in the range 20-2f. The address referred to lies above 80 (hex). It is possible you may have meant to use a Special Function Register here, not a data address.Invalid addressing mode: <MNEMONIC> This mnemonic is not defined for this combination of operands.Missing '(' in 'if (...)'. The if statement must have the form: if (x) ..., as it does in C.Missing ')' An unmatched closing parenthesis, ')', or possibly an extra opening parenthesis, '(', occurred.Missing ')' in 'if (...)'. The if statement must have the form: if (x) ..., as it does in C.Missing ':' The conditional indicated is missing a colon. Conditional expressions have the form x? x: x.Missing ';' Semi-colons must be used between two or more statements on the same line. You may have mistyped a colon (:) insteady.Missing '}'. An opening bracket '{' was never closed off with a ')'.Missing DPTR or PC after @A+ Only @A+DPTR, and @A+PC can be used with the 8051 language.Missing a ' in character constant. No more than one item can be enclosed between single quotes (e.g. 'ab', or 'a\n', though '\n' is okay.) You may have meant to define a string here. Use double quotes.Modulo by 0 x 684s not defined.Number <NAME> redeclared as address: <FILE> <FILE> The symbol indicated was declared as a global address in the first indicated files and as a global number in the second.Octal number has non-octal digits. A number with an octal prefix (0, other than those with an appropriate suffix), or an octal suffix (o, O, q, Q) can only contain the digits 0 through 7.Only code, xdata, or data segments allowed. The types sfr and bit cannot be used with segments.Paged address out of range. Paged jump or call instructions (ajmp, acall) must have destinations that lie on the same code page (every 800 hex bytes, starting at 0 is a code page). This only happens when your program gets beyond a certain size, or when it is located at an odd address (such as 7ff hex). Generally, it's a good idea to start your programs on even multiples of 800 hex. Stand-alone programs have to start at the reset address (0) anyway.Redeclaring address <NAME> as number. A symbol already defined as an address is being declared as an external numeric value.Redeclaring local symbol <NAME> as external. A symbol already defined as a local symbol is being defined as external. This may also be a name clash between a local and global symbol.Redeclaring number <NAME> as address. A symbol already defined as a number is being declared as an external address.Register address out of range. Only directly addressible data registers (0 to 7f hex, or 0 to 127) can be used here. This error may have inadvertently been created by the assembler if you defined relatively addresses data registers, and the assembler tried to map them beyond 80 hex. See the Bugs section of the document.Register in @Rn out of range. Only registers R0 or R1 can be used as register pointers.Register in reg.bit not bit addressible. The register referred to ("reg") must be a data address in the range 20-2f (hexadecimal, 32-47 decimal), or must be one of the Special Function Registers whose address is evenly divisible by 8 (in hexadecimal: 80, 88, 90, ..., f0, f8).Register must appear after @. Numeric or address expressions cannot appear after @.Relative address cannot be used here Only absolute addresses, or numeric values containing objects that have been previously defined (in terms of other such absolute objects) can appear in the conditional (if (E) ...), or in address setting/modifying statements (org/at, ds/rb, rw).Relative address out of range. Some jump instruction (cjne, djnz, sjmp, jz, jnz, jc, jnc, jbc, jb, jnb) require their destinations to be within a certain range (-80 hex to +7f hex) of the first byte following the jump instruction. Generally, you should not use these operations to jump across segment boundaries when one or more of the segments is relatively addressed.SFR address out of range. Special function register addresses can only have values in the range (80 to ff hex, or 128 to 255 decimal).Symbol <NAME> already declared as external number. The symbol indicated was declared as an external numeric constant but was defined as an address.Symbol <NAME> already declared as external. The symbol indicated was already declared as an external/global, and so cannot be defined as a variable, or local constant. If you had intended to define it as a global constant, precede the definition with the word 'global' or 'public'.Symbol <NAME> already declared as number. The symbol indicated was used in the context LABEL:, but is already declared as a numeric constant.Symbol <NAME> already defined as constant. Constant symbols cannot be redefined as variables.Symbol <NAME> already defined. Constant symbols can only be defined once.Symbol <NAME> cannot be equated to relative address. The symbol indicated was declared as an external numeric constant. It can only be set to an absolute address or numeric value.Symbol <NAME> cannot be set to relative address. Variables can only be set to absolute addresses, or numbers.Symbol <NAME> redefined: <FILE> <FILE>. The symbol indicated was defined as a global in both of the files listed. It can only be defined as a global once.Symbol <NAME>'s type does not match. The symbol indicated was declared as an external of one type and defined as a global of a different type.Syntax error This statement so totally eluded the assembler's ability to process it, that it didn't even know what you intended. This can also occur if it gets set off-track as a result of previous errors.Too many arguments specified. More operands were supplied than is accepted by this mnemonic.Too many gaps. Each time you issue a statement to the assembler to reserve space (ds/rb, rw) the assembler internally creates a gap for it. No more than 256 such statements can occur per file. You should probably break this file into smaller modules.Type mismatch <NAME>: <FILE> <FILE> The symbol indicated was declared as a global with different types in the files indicated.Type mismatch: <NAME>. A symbol already defined as an address of one type is being declared as an address of another type.Undefined expression The expression indicated must be defined either as an absolute or relative address, or number in this statemen. This occurs in any statement where a new label is being defined.Undefined label <DIGIT> A numeric label was used in a forward reference (e.g. 1f, 2f, 3f, ...), but was not defined anywhere in the current segment. Numeric labels can not be referenced across segments.Undefined local symbol <DIGIT>b A backward reference was made to a numeric label (e.g. 1b, 2b, 3b, ...) that was not previously defined in the current segment. References to numeric labels cannot be made across segments.Undefined symbol: <NAME> If a line number and file are indicated, then either the symbol is being used on the right hand side of a label definition (in which case, its value must be an already known absolute address, or number), you may be using a mnemonic not known to the assembler, may have misspelled one that is known, or you may have tried to write a label-defining statement but made an error somewhere. If no line and file numer are indicated, the symbol indicated was used in the file without ever being defined. It needs to be declared as an external (if it is defined in another file) or needs to be defined before it is used.Unexpected EOF inside // comment. A // comment occurred at the end of the current file, and no end of line marker was seen. This indicates your source file is not in text mode.Unexpected EOF inside ;; comment. A ;; comment occurred at the end of the current file, and no end of line marker was seen. This indicates your source file is not in text mode.Unexpected EOF inside comment. A /* comment was seen, but was never closed with a */.Unexpected EOF inside string. A double quote was seen without a matching pair anywhere.Unresolved external: <NAME>. A symbol was declared as an external but wasn't defined anywhere. If it's a register or bit address defined for one of the 8051 extensions (8052, or 8051fa), you will have to use one of the include files provided (8052.h or 8051fa.h), or make your own.Variables cannot be made global. The keyword 'global' cannot be used with the statements Var = Val, or Var set Val. Variables can only be defined as local symbols.Word value out of range. An immediate word value (range -8000 to ffff hex, or -32768 to 65535 decimal) is required here.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -