2024年6月1日发(作者:)

如有你有帮助,请购买下载,谢谢!

汇编程序MASM 5.0编译出错信息表-中文说明

用MASM 5.0对汇编程序进行汇编的时候,如果检查出某行语句有错误,就会在屏幕上给出出错信

息,若指定了列表文件(.LST),MASM 5.0也会在列表文件中给出错误信息。

MASM5.0出错信息格式: WARNING/ERROR错误信息码:错误描述信息

错误描述信息码由五个字符组成,第一个是字母A,表示汇编语言程序出错;接着有一个数字指明出

错类别:2为致命错误,4为严肃警告,5为建议性警告,最后三位为错误编号。

下面的手册中给出了错误编号、错误描述以及中文解释说明,方便大家查阅,包括MASM 5.0常见编

译错误。

000 Block nesting error

嵌套出错.嵌套的过程,段,结构,宏指令或重复块等非正常结束.例如在嵌套语句中有外层的结束语句,而无内

层的结束语局

001 Extra characters on line

一语句行有多余字符,可能是语句中给出的参数太多

002 Internal error-Register already defined

这是一个内部错误.如出现该错误,请记下发生错误的条件,并使用Product Assistance Request 表与

Microsoft公司联系

003 Unkown type specifer

未知的类型说明符.例如类型字符拼错,把BYTE写成BIT,NEAR写成NAER等

004 Redefinition of symbol

符号重定义.同一标识符在两个位置上定义.在汇编第一遍扫描时,在这个标识符的第二个定义位置上给出这

个错误

005 Symbol is multidefined

符号多重定义.同一标识符在两个位置上定义.在汇编第二遍扫描时,每当遇到这个标识符都给出这个错误

006 Phase error between passes

两次扫描间的遍错.一个标号在二次扫描时得到不同的地址值,就会给出这种错误.若在启动MASM时使用/D

任选项,产生第一遍扫描的列表文件,它可帮助你查找这种错误

007 Already had ELSE clause

已有ELSE语句.在一个条件块里使用多于一个的ELSE语句

008 Must be in conditional block

没有在条件块里.通常是有ENDIF或ELSE语句,而无IF 语句

009 Symbol not defined

符号未定义,在程序中引用了未定义的标识符

010 Syntax error

1页

如有你有帮助,请购买下载,谢谢!

语法错误.不是汇编程序所能识别的一个语句

011 Type illegal in context

指定非法类型.例如对一个过程指定BYTE类型,而不是NEAR或FAR

012 Group name must be unique

组名应是唯一的.作为组名的符号作为其他符号使用

013 Must be declared during pass 1

必须在第一遍扫描期间定义.在第一遍扫描期间,如一个符号在未定义前就引用,就会出现这种错误.

014 Illegal public declaration

一个标识符被非法的指定为PUBLIC类型

015 Symbol already defferent kind

重新定义一个符号为不同种类符号.例如一个段名重新被当作变量名定义使用

016 Reserved word used as symbol

把汇编语言规定的保留字作标识符使用

017 Forward reference illegal

非法的向前引用.在第一遍扫描期间,引用一个未定义符号.

018 Operand must be register

操作数位置上应是寄存器,但出现了标识符

019 Wrong type of register

使用寄存器出错

020 Operand must be segment or group

应该给出一个段名或组名.例如ASSUME语句中应为某段寄存器和指定一个段名或组名,而不应是别的标号

或变量名等

021 Symbol has no segment

不知道标识符的段属性

022 Operand must be type specifier

操作数应给出类型说明,如NEAR,FAR,BYTE等

023 Symbol alread defined locally

以被指定为内部的标识符,企图在EXTRN语句中又定义外部标识

024 Segment paraneters are changed

段参数被改变.如同一标识符定义在不同段内

025 Improper align/combin type

段定义时的定位类型/组合类型使用出错

026 Reference to multidefined symbol

指令引用了多重定义的标识符

027 Operand expected

2页

如有你有帮助,请购买下载,谢谢!

需要一个操作数,只有操作符

028 Operator expected

需要一个操作符,但只有操作数

029 Divdsion by 0 or overflow

除以0或溢出

030 Negative shift count

运算符SHL或SHR的移位表达式值为负数

031 Operand type must match

操作数类型不匹配.双操作数指令的两个操作数长度不一致,一个是字节,一个是字

032 Illegal use of external

外部符号使用出错

033 Must be record field name

应为记录字段名.在记录字段名位置上出现另外的符号

034 Must be record name or field name

应为记录名或记录字段名.在记录名或记录字段名位置上出现另外的符号

035 Operand must have size

应指明操作数的长度(如BYTE,WORD等).通常使用PTR运算即可改正

036 Must be variable,label,or constant

应该是变量名,标号,或常数的位置上出现了其他信息

037 Must be stucture field name

应该为结构字段名.在结构字段名位置上出现了另外的符号

038 Lefe operand must segment

操作数的左边应该是段的信息.如设DA1,DA2均是变量名,下列语句就是错误的:"MOV AX,DA1:DA2".DA1

位置上应使用某段寄存器名

039 One operand must constant

操作数必须是常数.

040 Operand must be in same segment or one constant

—运算符用错.例如"MOV AL,—VAR",其中VAR是变量名,应有一常数参加运算.又如两个不同段的变量名

相减出错

041 Normal type operand expected

要求给出一个正常的操作数.

042 Constant expected

要求给出一个常数.

043 Operand must have segment

运算符SEG用错.

3页