你的位置:
首页
>
IT圈
>
汇编程序出错提示
2024年6月5日发(作者:阙振宇)
汇编程序出错信息
编 码
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Block nesting error
嵌套过程、段、结构、宏指令等不是正确结束。
Extra character on line
当一行上已接受了定义指令的足够信息,而又出现了多余的字符。
Register already defined
汇编内部出现逻辑错误。
Unknown symbol type
在符号语句的类型字段中,有些不能识别的东西。
Redefinition of symbol
在第二遍扫视时,接着又定义一个符号。
Symbol is multi-defined
重复定义一个符号。
Phase error between passes
程序中有模棱两可的指令,以至于在汇编程序的两次扫视中,
程序标号的位置在数值上改变了。
Already had ELSE clause
在ELSE从句子试图再定义ELSE从句。
Not in conditional block
在没有提供条件汇编指令的情况下,指定了ENDIF或ELSE。
Symbol not defined
符号没有定义。
Syntax error
语句的语法与任何可识别的语法不匹配。
Type illegal in context
指定的类型在长度上不可接收。
Should have been group name
给出的组合不符合要求。
Must be declared in pass 1
得到的不是汇编程序所要求的常数值。例如,向前引用的向量长度。
Symbol type usage illegal
PUBLIC符号的使用不合法。
Symbol already different kind
企图定义与以前定义不同的符号。
Symbol is reserved word
企图非法使用一个汇编程序的保留定(例如,宣布MOV为一个变量)。
Forward reference is illegal
向前引用必须是在第一遍扫视中定义过的。
Must be register
希望寄存器作为操作数,但用户提供的是符号而不是寄存器。
Wrong type of register
说 明
20
21
22
23
24
25
26
27
编 码
28
29
30
31
32
33
34
35
36
37
38
39
40
指定的寄存器类型并不是指令中或伪操作中所要求的。例如ASSUME AX。
Must be segment or group
希望给出段或组,而不是其它。
Symbol has no segment
想使用带有SEG的变量,而这个变量不能识别段。
Must be symbol type
必须是WORD、DW、QW、BYTE或TB,但接收的是其它内容。
Already defined locally
试图定义一个符号作为EXTERNAL,但这个符号已经在局部定义过了。
Segment parameters are changed
SEGMENT的自变量与第一次使用这个段的情况不一样。
Not proper align/combine type
SEGMENT参数不正确。
Reference to mult defined
指令引用的内容已是多次定义过的。
Operand was expected
汇编程序需要的是操作数,但得到的却是其它内容。
说 明
Operator was expected
汇编程序需要的是操作符,但得到的却是其它内容。
Division by 0 or overflow
给出一个用0作除数的表达式。
Shift count is negative
移位表达式产生的移位计数值为负数。
Operand type must match
在自变量的长度或类型应该一致的情况下,汇编程序得到的并不一样。例如,交换。
Illegal use of external
用非法手段进行外部使用。
Must be record field name
需要的是记录字段名,但得到的是其它东西。
Must be record or field name
需要的是记录名或字段名,但得到的是其它东西。
Operand must have size
需要的是操作数的长度,但得到的是其它内容。
Must be var,label or constant
需要的是变量、标号或常数,但得到的是其它内容。
Must be structure field name
需要的是结构字段名,但得到的是其它内容。
Left operand must have segment
操作数的右边要求它的左边必须是某个段。
One operand must be const
这是加法指令的非法使用。
Operands must be same or 1 abs
这是减法指令的非法使用。
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
编 码
58
59
60
61
62
Normal type operand expected
当需要变量、标号时,得到的却是STRUCT、FIELDS、NAMES、BYTE、WORD或DW。
Constant was expected
需要的是一个常量,得到的却是另外一个内容。
Operand must have segment
SEG伪操作使用不合法。
Must be associated with data
有关项用的是代码,而这里需要的是数据,例如一个过程的DS取代。
Must be associated with code
有关项用的是数据,而这里需要的是代码。
Already have base register
试图重复基地址。
Already have index register
试图重复变址地址。
Must be index or base register
指令需要基址或变址寄存器,而指定的是其它寄存器。
Illegal use of register
在指令中使用了8088指令中没有的寄存器。
Value is out of range
数值大于需要使用的,例如将DW传送到寄存器中。
Operand not in IP segment
由于操作数不在当前IP段中,因此不能存取。
Improper operand type
使用的操作数不能产生操作码。
Relative jump out of range
指定的转移超出了允许的范围(-128~+127字节)。
Index be constant
试图使用脱胎换骨离变址寄存器的变量位移量。位移量必须是常数。
Illegal register value
拽定的寄存器值不能放入“reg”字段中。(即“reg”字段大于7)
No immediate mode
指定的立即方式或操作码都不能接收立即数。例如:PUSH。
Illegal size for item
引用的项的长度是非法的。例如:双字移位。
说 明
Byte register is illegal
在上下文中,使用一个字节寄存器是非法的。例如:PUSH AL。
CS register illegal usage
试图非法使用CS寄存器。例如:XCHG CS,AX
Must be AX or AL
某些指令只能用AX或AL。例如:IN指令。
Improper use of segment reg.
段寄存器使用不合法。例如:1立即数传送到寄存器。
No or unreachable CS
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
试图转移到不可到达的标号。
Operand combination illegal
在双操作数指令中,两个操作数的组合不合法。
Near JMP/CALL to different CS
企图在不同的代码段内执行NEAR转移或调用。
Label can’t have seg override
非法使用段取代。
Must have opcode after prefix
使用前缀指令之后,没有正确的操作码说明。
Can’t override ES segment
企图非法地在一条指令中取代ES寄存器。例如:存储字符串。
Can’t reach with segment reg.
没有使变量可达到的ASSUME语句。
Must be in segment block
企图在段外产生代码。
Can’t use EVEN on BYTE segment
被提出的是一个字节段,但试图使用EVEN。
Forward needs override
目前不使用这个信息。
Illegal value for DUP count
DUP计数必须是常数,不能是0或负数。
Symbol already external
企图定义一个局部符号,但此符号已经是外部符号了。
DUP is too large for linker
DUP嵌套太长,以至于从连接程序不能得到所要的记录。
Usage of ? ( indeterminate ) bad
“?”使用不合适。例如:?+5。
More values than defined with
Only initialize list legal
Directive illegal in STRUC
Override with DUP is illegal
Field cannot be overridden
Override is of wrong type
Register can’t be farward ref
Circular chain of EQU aliases
Feature not supported by Small Assembler (ASM)
2024年6月5日发(作者:阙振宇)
汇编程序出错信息
编 码
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Block nesting error
嵌套过程、段、结构、宏指令等不是正确结束。
Extra character on line
当一行上已接受了定义指令的足够信息,而又出现了多余的字符。
Register already defined
汇编内部出现逻辑错误。
Unknown symbol type
在符号语句的类型字段中,有些不能识别的东西。
Redefinition of symbol
在第二遍扫视时,接着又定义一个符号。
Symbol is multi-defined
重复定义一个符号。
Phase error between passes
程序中有模棱两可的指令,以至于在汇编程序的两次扫视中,
程序标号的位置在数值上改变了。
Already had ELSE clause
在ELSE从句子试图再定义ELSE从句。
Not in conditional block
在没有提供条件汇编指令的情况下,指定了ENDIF或ELSE。
Symbol not defined
符号没有定义。
Syntax error
语句的语法与任何可识别的语法不匹配。
Type illegal in context
指定的类型在长度上不可接收。
Should have been group name
给出的组合不符合要求。
Must be declared in pass 1
得到的不是汇编程序所要求的常数值。例如,向前引用的向量长度。
Symbol type usage illegal
PUBLIC符号的使用不合法。
Symbol already different kind
企图定义与以前定义不同的符号。
Symbol is reserved word
企图非法使用一个汇编程序的保留定(例如,宣布MOV为一个变量)。
Forward reference is illegal
向前引用必须是在第一遍扫视中定义过的。
Must be register
希望寄存器作为操作数,但用户提供的是符号而不是寄存器。
Wrong type of register
说 明
20
21
22
23
24
25
26
27
编 码
28
29
30
31
32
33
34
35
36
37
38
39
40
指定的寄存器类型并不是指令中或伪操作中所要求的。例如ASSUME AX。
Must be segment or group
希望给出段或组,而不是其它。
Symbol has no segment
想使用带有SEG的变量,而这个变量不能识别段。
Must be symbol type
必须是WORD、DW、QW、BYTE或TB,但接收的是其它内容。
Already defined locally
试图定义一个符号作为EXTERNAL,但这个符号已经在局部定义过了。
Segment parameters are changed
SEGMENT的自变量与第一次使用这个段的情况不一样。
Not proper align/combine type
SEGMENT参数不正确。
Reference to mult defined
指令引用的内容已是多次定义过的。
Operand was expected
汇编程序需要的是操作数,但得到的却是其它内容。
说 明
Operator was expected
汇编程序需要的是操作符,但得到的却是其它内容。
Division by 0 or overflow
给出一个用0作除数的表达式。
Shift count is negative
移位表达式产生的移位计数值为负数。
Operand type must match
在自变量的长度或类型应该一致的情况下,汇编程序得到的并不一样。例如,交换。
Illegal use of external
用非法手段进行外部使用。
Must be record field name
需要的是记录字段名,但得到的是其它东西。
Must be record or field name
需要的是记录名或字段名,但得到的是其它东西。
Operand must have size
需要的是操作数的长度,但得到的是其它内容。
Must be var,label or constant
需要的是变量、标号或常数,但得到的是其它内容。
Must be structure field name
需要的是结构字段名,但得到的是其它内容。
Left operand must have segment
操作数的右边要求它的左边必须是某个段。
One operand must be const
这是加法指令的非法使用。
Operands must be same or 1 abs
这是减法指令的非法使用。
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
编 码
58
59
60
61
62
Normal type operand expected
当需要变量、标号时,得到的却是STRUCT、FIELDS、NAMES、BYTE、WORD或DW。
Constant was expected
需要的是一个常量,得到的却是另外一个内容。
Operand must have segment
SEG伪操作使用不合法。
Must be associated with data
有关项用的是代码,而这里需要的是数据,例如一个过程的DS取代。
Must be associated with code
有关项用的是数据,而这里需要的是代码。
Already have base register
试图重复基地址。
Already have index register
试图重复变址地址。
Must be index or base register
指令需要基址或变址寄存器,而指定的是其它寄存器。
Illegal use of register
在指令中使用了8088指令中没有的寄存器。
Value is out of range
数值大于需要使用的,例如将DW传送到寄存器中。
Operand not in IP segment
由于操作数不在当前IP段中,因此不能存取。
Improper operand type
使用的操作数不能产生操作码。
Relative jump out of range
指定的转移超出了允许的范围(-128~+127字节)。
Index be constant
试图使用脱胎换骨离变址寄存器的变量位移量。位移量必须是常数。
Illegal register value
拽定的寄存器值不能放入“reg”字段中。(即“reg”字段大于7)
No immediate mode
指定的立即方式或操作码都不能接收立即数。例如:PUSH。
Illegal size for item
引用的项的长度是非法的。例如:双字移位。
说 明
Byte register is illegal
在上下文中,使用一个字节寄存器是非法的。例如:PUSH AL。
CS register illegal usage
试图非法使用CS寄存器。例如:XCHG CS,AX
Must be AX or AL
某些指令只能用AX或AL。例如:IN指令。
Improper use of segment reg.
段寄存器使用不合法。例如:1立即数传送到寄存器。
No or unreachable CS
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
试图转移到不可到达的标号。
Operand combination illegal
在双操作数指令中,两个操作数的组合不合法。
Near JMP/CALL to different CS
企图在不同的代码段内执行NEAR转移或调用。
Label can’t have seg override
非法使用段取代。
Must have opcode after prefix
使用前缀指令之后,没有正确的操作码说明。
Can’t override ES segment
企图非法地在一条指令中取代ES寄存器。例如:存储字符串。
Can’t reach with segment reg.
没有使变量可达到的ASSUME语句。
Must be in segment block
企图在段外产生代码。
Can’t use EVEN on BYTE segment
被提出的是一个字节段,但试图使用EVEN。
Forward needs override
目前不使用这个信息。
Illegal value for DUP count
DUP计数必须是常数,不能是0或负数。
Symbol already external
企图定义一个局部符号,但此符号已经是外部符号了。
DUP is too large for linker
DUP嵌套太长,以至于从连接程序不能得到所要的记录。
Usage of ? ( indeterminate ) bad
“?”使用不合适。例如:?+5。
More values than defined with
Only initialize list legal
Directive illegal in STRUC
Override with DUP is illegal
Field cannot be overridden
Override is of wrong type
Register can’t be farward ref
Circular chain of EQU aliases
Feature not supported by Small Assembler (ASM)