常见汇编错误信息

TOC

  1. 1. 常见警告信息及中文含义
  2. 2. 常见致命错误信息及中文含义
  3. 3. 常见的严重错误信息及中文含义

使用ML.EXE进行汇编过程中如果出现非法情况,会提示非法编号,并显示ML.ERR文件中的非法信息。

非法编号以字母A起头、后跟4位数字,形式是:Axyyy。其中x是非法的情况,yyy是从0开始的顺序编号。

Alyyy是致命错误(Fatal Erors)。

A2yyy是严重错误(Severe Errors)。

A4yyy、A5yyy和A6yyy依次是级别1、2和3的警告(Warnings)。

常见警告信息及中文含义

start address on END directive ignored with .STARTUP

.STARTUP 和 END 均指明程序起始位置,END指明的起始点被忽路

too many arguments in macro call

宏调用时的参数多于宏定义的参数

invalid command-line option value,default is used

无效命令行选项值,使用默认值

expected ‘>’ on text literal

调用时参数缺少“>”符号

multiple .MODEL directives found: .MODEL ignored

发现多个.MODEL语句,只使用第一个.MODEL语句

@@: label defined but not referenced

定义了标号,但没有被访问

types are different

INVOKE 语句的类型不同于声明语句,汇编程序进行适当转换

calling convention not supported in flat model

平展(flat)模式下不支特的调用规范

no return from procedure

PROC生成起始代码,但在其过程中没有RET政IRET指令

常见致命错误信息及中文含义

cannot open file
不能打开指定文件名的(源程序、包含或输出)文件
invalid command-line option
无效命令行选项(ML无法识别给定的参数)
nesting level too deep
汇编程序达到了嵌套(20层)的限制
line too long
源程序文件中语句行超出字符个数(512)的限制
unmatched macro nesting
模块没有结束标识符,或没有起始标识符
too many arguments
汇编程序的参数太多了
statement too complex
语句太复杂(汇编程序不能解析)
missing source filename
ML没有找到源程序文件

常见的严重错误信息及中文含义

memory operand not allowed in context
不允许存储器操作数
immediate operand not allowed
不允许立即数
extra characters after statement
语句中出现多余字符
symbol type conflict
符号类型冲突
symbol redefinition
符号重新定义
undefined symbol
无定义的符号
syntax error
语法错误
syntax error in expression
表达式中出现语法错误
invalid type expression
无效的类型表达式
.MODEL must precede this directive
该语句前必须有.MODEL语句
expression expected
当前位置需要一个表达式
operator expected
当前位置需要一个操作符
invalid use of external symbol
外部符号的无效使用
instruction operands must be the same size
指令操作数的类型必须一致(长度相等)
instruction operand must have size
指令操作数必须有数据类型
invalid operand size for instruction
无效的指令操作数类型
constant expected
当前位置需要一个常量
operand must be a memory expression
操作数必须是一个存储器表达式
multiple base registers not allowed
不允许多个基址寄存器(例如[BX+BP])
multiple index registers not allowed
不允许多个变址寄存器(例如[SI+D])
must be index or base register
必须是基址或变址寄存器(不能是[AX]或[DX])
invalid use of register
不能使用寄存器
DUP too complex
使用的DUP操作符太复杂了
invalid character in file
文件中出现无效字符
instruction prefix not allowed
不允许使用指令前缀
no operands allowed for this instruction
该指令不允许有操作数
invalid instruction operands
指令操作数无效
jump destination too far
控制转移指令的目标地址太远
cannot mix 16-and 32-bit registers
地址表达式不能既有16位寄存器又有32位寄存器
constant value too large
常量值太大了
instruction or register not accepted in current CPU mode
当前CPU模式不支持的指令或寄存器
END directive required at end of file
文件最后需要END伪指令
invalid operand for OFFSET
OFFSET的参数无效
language type must be specified
必须指明语言类型
ORG needs a constant or local offset
ORG语句需要一个常量或者一个局部偏移
too many operands to instruction
指令的操作数太多
macro label not defined
发现未定义的宏标号
invalid symbol type in expression
表达式中的符号类型无效
byte register cannot be first operand
字节寄存器不能作为第一个操作数
cannot use 16-bit register with a 32-bit address
不能在32位地址中使用16位寄存器
missing right parenthesis
缺少有括号
divide by zero in expression
表达式出现除以0的情况
INVOKE requires prototype for procedure
INVOKE 语句前需要对过程声明
missing operator in expression
表达式中缺少操作符
missing right parenthesis in expression
表达式中缺少有括号
missing left parenthesis in expression
表达式中缺少左括号
reference to forward macro definition
不能引用还没有定义的宏(先定义、后引用)
16bit segments not allowed with/coff option
/coff选项下不允许使用16位段
invalid.model parameter for flat model
无效的平展(flat)模型参数