汇编程序MASM5.0编译出错信息表中文说明
- 格式:doc
- 大小:248.50 KB
- 文档页数:12
matlab常见错误中英文对照表下面是编译错误代码中英对照错误代码及错误信息错误释义error1:Outofmemory内存溢出error2:Identifierexpected缺标识符error3:Unknownidentifier未定义的标识符error4:Duplicateidentifier重复定义的标识符error5:Syntaxerror语法错误error6:Errorinrealconstant实型常量错误error7:Errorinintegerconstant整型常量错误error8:Stringconstantexceedsline字符串常量超过一行error10:Unexpectedendoffile文件非正常结束error11:Linetoolong行太长error12:Typeidentifierexpected未定义的类型标识符error13:Toomanyopenfiles打开文件太多error14:Invalidfilename无效的文件名error15:Filenotfound文件未找到error16:Diskfull磁盘满error17:Invalidcompilerdirective无效的编译命令error18:Toomanyfiles文件太多error19:Undefinedtypeinpointerdef指针定义中未定义类型error20:Variableidentifierexpected缺变量标识符error21:Errorintype类型错误error22:Structuretoolarge结构类型太长error23:Setbasetypeoutofrange集合基类型越界error24:Filecomponentsmaynotbefilesorobjectsfile分量不能是文件或对象error25:Invalidstringlength无效的字符串长度error26:Typemismatch类型不匹配error27:error27:Invalidsubrangebasetype无效的子界基类型error28:Lowerboundgreaterthanupperbound下界超过上界error29:Ordinaltypeexpected缺有序类型error30:Integerconstantexpected缺整型常量error31:Constantexpected缺常量error32:Integerorrealconstantexpected缺整型或实型常量error33:PointerTypeidentifierexpected缺指针类型标识符error34:Invalidfunctionresulttype无效的函数结果类型error35:Labelidentifierexpected缺标号标识符error36:BEGINexpected缺BEGINerror37:ENDexpected缺ENDerror38:Integerexpressionexpected缺整型表达式error39:Ordinalexpressionexpected缺有序类型表达式error40:Booleanexpressionexpected缺布尔表达式error41:Operandtypesdonotmatch操作数类型不匹配error42:Errorinexpression表达式错误error43:Illegalassignment非法赋值error44:Fieldidentifierexpected缺域标识符error45:Objectfiletoolarge目标文件太大error46:Undefinedexternal未定义的外部过程与函数error47:Invalidobjectfilerecord无效的OBJ文件格式error48:Codesegmenttoolarge代码段太长error49:Datasegmenttoolarge数据段太长error50:DOexpected缺DOerror51:InvalidPUBLICdefinition无效的PUBLIC定义error52:InvalidEXTRNdefinition无效的EXTRN定义error53:ToomanyEXTRNdefinitions太多的EXTRN定义error54:OFexpected缺OFerror55:INTERFACEexpected缺INTERFACEerror56:Invalidrelocatablereference无效的可重定位引用error57:THENexpected缺THENerror58:TOorDOWNTOexpected缺TO或DOWNTOerror59:Undefinedforward提前引用未经定义的说明error61:Invalidtypecast无效的类型转换error62:Divisionbyzero被零除error63:Invalidfiletype无效的文件类型error64:Cannotreadorwritevariablesofthistype不能读写此类型变量error65:Pointervariableexpected缺指针类型变量error66:Stringvariableexpected缺字符串变量error67:Stringexpressionexpected缺字符串表达式error68:Circularunitreference单元UNIT部件循环引用error69:Unitnamemismatch单元名不匹配error70:Unitversionmismatch单元版本不匹配error71:Internalstackoverflow内部堆栈溢出error72:Unitfileformaterror单元文件格式错误error73:IMPLEMENTATIONexpected缺IMPLEMENTATION error74:Constantandcasetypesdonotmatch常量和CASE类型不匹配error75:Recordorobjectvariableexpected缺记录或对象变量error76:Constantoutofrange常量越界error77:Filevariableexpected缺文件变量error78:Pointerexpressionexpected缺指针表达式error79:Integerorrealexpressionexpected缺整型或实型表达式error80:Labelnotwithincurrentblock标号不在当前块内error81:Labelalreadydefined标号已定义error82:Undefinedlabelinprecedingstatementpart在前面未定义标号error83:Invalid@argument无效的@参数error84:UNIT expected缺UNITerror85:";"expected缺“;”error86:":"expected缺“:”error87:","expected缺“,”error88:"("expected缺“(”error89:")"expected缺“)”error90:"="expected缺“=”error91:":="expected缺“:=”error92:"["or"(."Expected缺“[”或“(.”error93:"]"or".)"expected缺“〕”或“.)”error94:"."expected缺“.”error95:".."expected缺“..”error96:Toomanyvariables变量太多error97:InvalidFORcontrolvariable无效的FOR循环控制变量error98:Integervariableexpected缺整型变量error99:Filesandproceduretypesarenotallowedhere该处不允许文件和过程类型error100:Stringlengthmismatch字符串长度不匹配error101:Invalidorderingoffields无效域顺序error102:Stringconstantexpected缺字符串常量error103:Integerorrealvariableexpected缺整型或实型变量error104:Ordinalvariableexpected缺有序类型变量error105:INLINEerrorINLINE错误error106:Characterexpressionexpected缺字符表达式error107:Toomanyrelocationitems重定位项太多error108:Overflowinarithmeticoperation算术运算溢出error112:CASEconstantoutofrangeCASE常量越界error113:Errorinstatement表达式错误error114:Cannotcallaninterruptprocedure不能调用中断过程error116:Mustbein8087modetocompilethis必须在8087模式编译error117:Targetaddressnotfound找不到目标地址error118:Includefilesarenotallowedhere该处不允许INCLUDE文件error119:Noinheritedmethodsareaccessiblehere该处继承方法不可访问error121:Invalidqualifier无效的限定符error122:Invalidvariablereference无效的变量引用error123:Toomanysymbols符号太多error124:Statementparttoolarge语句体太长error126:Filesmustbevarparameters文件必须是变量形参error127:Toomanyconditionalsymbols条件符号太多error128:Misplacedconditionaldirective条件指令错位error129:ENDIFdirectivemissing缺ENDIF指令error130:Errorininitialconditionaldefines初始条件定义错误error131:Headerdoesnotmatchpreviousdefinition和前面定义的过程或函数不匹配error133:Cannotevaluatethisexpression不能计算该表达式error134:Expressionincorrectlyterminated表达式错误结束error135:Invalidformatspecifier无效格式说明符error136:Invalidindirectreference无效的间接引用error137:Structuredvariablesarenotallowedhere该处不允许结构变量error138:CannotevaluatewithoutSystemunit没有System单元不能计算error139:Cannotaccessthissymbol不能存取符号error140:Invalidfloatingpointoperation无效的符号运算error141:Cannotcompileoverlaystomemory不能编译覆盖模块至内存error142:Pointerorproceduralvariableexpected缺指针或过程变量error143:Invalidprocedureorfunctionreference无效的过程或函数调用error144:Cannotoverlaythisunit不能覆盖该单元error146:Fileaccessdenied不允许文件访问error147:Objecttypeexpected缺对象类型error148:Localobjecttypesarenotallowed不允许局部对象类型error149:VIRTUALexpected缺VIRTUALerror150:Methodidentifierexpected缺方法标识符error151:Virtualconstructorsarenotallowed不允许虚构造函数error152:Constructoridentifierexpected缺构造函数标识符error153:Destructoridentifierexpected缺析构函数标识符error154:Failonlyallowedwithinconstructors只能在构造函数内使用Fail标准过程error155:Invalidcombinationofopcodeandoperands操作数与操作符无效组合error156:Memoryreferenceexpected缺内存引用指针error157:Cannotaddorsubtractrelocatablesymbols不能加减可重定位符号error158:Invalidregistercombination无效寄存器组合error159:286/287instructionsarenotenabled未激活286/287指令error160:Invalidsymbolreference无效符号指针error161:Codegenerationerror代码生成错误error162:ASMexpected缺ASMerror166:Procedureorfunctionidentifierexpected缺过程或函数标识符error167:Cannotexportthissymbol不能输出该符号error168:Duplicateexportname外部文件名重复error169:Executablefileheadertoolarge可执行文件头太长error170:Toomanysegments段太多。
下面我们以1个简单的例子来说明源程序的汇编、链接与调试编程计算Y=a*b+c-3其中a=1;b=-1;c=4;常数为3,显然Y为0步骤1:编写源文件我们打开已编好的源文件simple.txt(用记事本打开simple.txt)定义常数为3,(光标指向常数定义)第一段是256字的堆栈段,(光标指向堆栈段)第二段是数据段,(光标指向数据段)在数据段定义变量如下:DA T1对应a(光标指向DA T1); DA T2对应b(光标指向DAT2), 其中FFH为-1的补码; DAT3对应c(光标指向DAT3);DA TY单元存放结果Y(光标指向DATY)第三段是代码段,(光标指向代码段)步骤2:汇编源程序首先,用cmd命令进入DOS环境;(开始->cmd)然后,路径要切换到MASM所在的盘符D;(D:)接着,进入MASM50文件夹;(cd masm50)显示文件夹下的内容;(dir/w)汇编程序是MASM.EXE;(光标指向MASM.EXE)链接程序是LINK.EXE; (光标指向LINK.EXE)源程序是simple.asm; (光标指向simple.asm)下面对源程序simple.asm进行汇编(1)输入masm simple.asm,(输入masm simple.asm)注意一是源文件名不能以数字开头且字符长度不要超过8个;二是源文件如果不在当前路径下时,要指明其存放路径;输入好后,回车(回车)(2)指定目标文件名,直接回车默认是simple.obj,(光标指向simple.obj)这里我们直接回车(回车)(3)指定源程序列表文件名,直接回车默认是不产生,输入simple,回车(输入simple,回车),过会儿我们可以用记事本查看simple.lst(4)指定交叉索引文件名,交叉索引文件列出了程序中所定义的所有标识符和标号及其引用情况输入simple,回车(输入simple,回车)提示31行有错误,未定义标识符CO(光标指向错误处)下面我们要修改源程序,使源程序无语法错误用记事本打开simple.lst(相应操作)源程序列表列出行号,代码偏移地址,二进制指令码,源代码,(光标指向相应位置)下面是段名,标识符信息及其属性(光标指向相应位置)在第34行,第35行之间是错误提示信息,(用拖曳蓝色反标提示信息),发现前面定义了Con,而这里漏掉了n,(拖曳蓝色反标Co),我们找到了语法错误(关闭Simple.lst窗口)输入edit simple.asm(输入edit simple.asm),打开源文件simple.asm找到错误行(滚动条下拉),在Co后添加n(添加n)保存文件,(File->Save)退出edit(exit)重新汇编源程序,(重新汇编源程序,用up键调出以前指令)可见,无警告无错误,汇编成功(光标指向0 waring Errors和0 severe Errors)。
汇编的调试步骤MASM5.080x86汇编语言调试运行步骤很多人熟悉高级语言的调试运行。
这是因为高级语言如C C++语言,很多底层的东西都是由系统自己完成,而汇编语言大量的底层需要自己设计,所以汇编语言调试和运行过程和VC++6.0这样的软件相比相对来说复杂很多。
我玩过turbo c2.0尝试调试汇编语言,发现很难弄懂调试过程。
后来尝试在MASM5.0下调试运行,来对来说简单易操作。
汇编语言重要性不在多说,下面开始说具体调试过程。
这张图很多人知道,一般的windows系统自带了EDIT.EXE 和DUBUG.EXE这个两个程序,所以我们只需要下在另外两个程序,即MASM.EXE和LINK.EXE这个两个程序。
大家会问,这两个程序怎么来,简单说下载MASM5.0软件就行。
下载完成后,里面的内容如下;我的系统是win7 32位,所以win7系统可以支持汇编语言调试的。
至于WIN7 64位,我觉得应该也支持。
原因很简单,因为MASM.EXE 和link.EXE这两个程序只是生成最后可执行文件的步骤,本质还是在DOS状态下调试。
不过我本人没有尝试,大家可以试试。
下载完成后,把上面说到的MASM.EXE和LINK.EXE这两个应用程序拖到D E F盘任意一个盘根目录状态下,我自己以E盘作为示范。
有人可能会问,为什么不建个文件夹存放,这当然可以,不过之后输入文件所在位置时会复杂一点。
因为这就走E盘根目录状态下,所以文件位置就是E:\TEST1.ASM (文件名字是TEST1,,ASM为后缀汇编标志)接下来打开开始菜单输入 COMMAND 按回车键出现了这样的对话框然后我们输入EDIT TEST1.ASM 按回车建立名字为TEST1的汇编文件EDIT 意思是编辑器意思之前说到了因为系统自带这个程序所以没下出现了这样情景然后输入自己要输入的程序(我这个是完整的程序可以做参考)点击file 菜单下的save as 保存出现这样的对话框移动后边的横条找到E盘(之前我说过我以E盘作为示范)情况如下点击进去情况如下然后点ok 然后点file菜单最尾的exit实际情况下左边没有第一个DATAMOU.ASM 这是我自己编的额外的程序,实际上只有 LINK.EXE MASM TEST1.ASM .在这里我就可以说之前说的为什么不建文件夹了图片显示的E:\代表就在根目录下。
汇编伪指令和编译出错说明ASM-51 宏汇编使用手册A51与ASM51基本相同ASM-51 宏汇编主要用来开发Inter8051系列单片机,它具有宏处理,数据处理,列表处理和条件处理等多种功能。
源程序的编写完全采用 Inter标准助记符和行格式。
在编写程序过程中,可借助于文本编辑(Windows的记事本)或文字处理软件Word等编辑,经ASM-51汇编后生成列表输出文件(.LST)和目标代码文件(.HEX)。
此目标代码文件(.HEX)可直接用CZS-51或MedWin、Keil、Debug8051进行模拟/调试,或直接用于硬件仿真器上运行。
当然,这也是要烧写到单片机ROM中的代码。
1、宏汇编语言的基本语法1、1 宏汇编的特点ASM-51宏汇编完全支持Inter助记符的汇编语言,它含有宏语句,英文大小写字母,变量名,标号等不受限制,有二,十,十六进制和串参数类型,有汇编控制指令和多层条件语句,程序逻辑分段,还有模块化程序设计的连接功能,汇编速度快等特点。
1、2 汇编处理过程(1) 用行编辑EDLIN或文字处理软件WS或全屏幕编辑软件PE等,编辑宏汇编语言源程序,它的文件扩展名为。
ASM。
(2) 用ASM-51宏汇编程序对上述源程序文件进行汇编,产生扩展名为.LST的列表输出文件和扩展名为.HEX的目标代码文件(.HEX)。
列表输出文件包含源程序语句所汇编成的代码,以及有关的地址,语句和符号表等。
目标代码文件包含源程序语句所汇编成的代码,不包含任何符号信息或助记符。
进行模拟/调试,或直接用于硬件仿真器上运行。
1、3 语句汇编语言可分为两类语句:指令性语句和指示性语句。
(1)指令性语句这一类语句是指在汇编过程中能生成指令代码的语句(如MOV ,DEC等)。
其格式为:[标号:] [指令助记符] [操作数] [;注释]其中方括号[ ]中为选择项。
下同。
(2)指示性语句这一类语句即通常所说的伪指令,它指示汇编程序后面的指示性语句如何产生代码。
出错信息在使用MASM5.0对源程序进行汇编时,对于有错误的或可置疑的语句,MASM将显示出相关出错或警告信息。
出错信息分为两类:一类是带编号的出错代码信息。
这些错误或警告与源程序中的某一个语句(或指令)行代码有关,并赋以相应的编码。
在显示出错代码的同时,还给出了简要的注释。
另一类出错信息没有编号,他们是针对整个汇编程序的,而不是针对某一语句行的,因而,只给出了简要的注释。
一、带编号的错误带有编号的错误信息的显示格式如下:sourcefile (line):code messagesourcefile是出错的源程序文件名。
如果定义于INCLUDE文件中的宏有错,则源程序文件名是指引用宏并对其进行展开的那一个程序文件名。
line是MASM无法进行汇编的那条语句源程序中的行号。
Code是以Microsoft 语言程序格式指定的代码。
它以error或warning开始,后跟5个字符的代码。
第一个字符表示编程语言,汇编语言是字符A;第二个代码是数字符,表示警告级别;2表示严重错误(Severe Errors);4表示严重警告(Severe Warnings);5表示建议警告(Advisory Warnings);最后三个数字是错误编号。
message是对该错误或警告的简要说明。
比如:test.ASM(33):error A006:Phase error between passes上述信息表明,在源程序test.ASM的33行中,有006号严重错误。
下面,将按照编号列出错误信息,并给与简要的解释。
错误代码错误描述0Block nesting error块嵌套错误。
指嵌套的过程、段、结构、宏或非正常结束。
例如在某嵌套语句序列中,有外层的结束语句,而无内层的结束语句,所造成的嵌套错误。
1 Extra characters on line在一语句行中有多余的字幅。
指在一行中除了已有该汇编语句的全部信息外,还有多余的字幅。
******************************** 编译错误信息********************************';' not allowed before 'ELSE' ElSE前不允许有“;”'<clause>' clause not allowed in OLE automation section 在OLE自动区段不允许“<clause>”子句'<name>' is not a type identifier <name>不是类型标识符'<name>' not previously declared as a PROPERTY <name>前面没有说明PROPERTY'GOTO <label>' leads into or out of TRY statement GOTO <label>进入或超出TRY语句的范围<clause1> clause expected, but <clause2> found 要求子句<clause1>,但出现<clause2>16-Bit fixup encountered in object file '<text>' 在对象文件<text>遇到16位修复486/487 instructions not enabled 不能用486/487指令Abstract methods must be virtual or dynamic 抽象方法必须为虚拟的或动态的Array type required 需要数组类型Assignment to FOR-Loop variable '<Name>' 给FOR循环变量<Name>赋值Bad argument type in variable type array constructor 在变量类型数组结构中不正确的参数类型Bad file format '<name>' 错误的文件格式<name>Bad file format: <Filename> 错误的文件格式<Filename>Bad global symbol definition: '<Name>' in object file '<Filename>' 对象文件'<Filename>'中错误的全局符号定义'<Name>'Bad unit format: <Filename> 错误的单元格式<Filename>BREAK or CONTINUE outside of loop BREAK或CONTINUE超出循环Cannot add or subtract relocatable symbols 不能增加或减少可重置的符号Cannot assign to a read-only property 不能指定只读属性Cannot BREAK, CONTINUE or EXIT out of a FINALLY clause 超出FINALLY 子句的范围,不能使用BREAK,CONTINUE或EXIT语句Cannot initialize local variables 不能初始化局部变量Cannot initialize multiple variables 不能初始化多个变量Cannot initialize thread local variables 不能初始化线程局部变量Cannot override a static method 不能覆盖静态方法Cannot read a write-only property 不能读取只写属性Case label outside of range of case expression CASE标号超出了CASE表达式的范围Circular unit reference to <Unitname> 对单元<Unitname>循环引用Class already has a default property 类已具有默认的属性Class does not have a default property 类没有默认的属性Class or object types only allowed in type section 在类型区段只允许有类或对象类型Class type required 需要类类型Close error on <Filename> 文件<Filename>关闭错误Compile terminated by user 用户中止编译Constant expected 要求常量Constant expression expected 要求常量表达式Constant expression violates subrange bounds 常量表达式超出子界范围Constant object cannot be passed as var parameter 常量对象不能作为变量参数传递Constant or type identifier expected 要求常量或类型标识符Constants cannot be used as open array arguments 常量不能用作打开数组参数Constructing instance of '<name>' containing abstract methods 构造的<name>实体包含抽象的方法Could not compile used unit '<Unitname>' 不能用单元<Unitname>编译Could not create output file <Filename> 不能建立输出文件<Filename> Could not load RLINK32.DLL 不能加载RLINK32.DLLData type too large: exceeds 2 GB 数据类型太大:超过2GBDeclaration of <Name> differs from previous declaration <Name>的说明与先前的说明不同Default property must be an array property 默认的属性必须为数组属性Default values must be of ordinal, pointer or small set type 默认的值必须为序数、指针或小集类型Destination cannot be assigned to 目标不能指定Destination is inaccessible 目标不能存取Dispid '<number>' already used by '<name>' DISPID标识号已被<name>使用Dispid clause only allowed in OLE automation section DISPID子句只能在OLE 自动区段中使用Division by zero 除数为零Duplicate case label CASE标号重复Duplicate tag value 重复的标志值Dynamic method or message handler not allowed here 这里不允许有动态方法或信息处理程序Dynamic methods and message handlers not allowed in OLE automation section在OLE自动区段不允许有动态方法或消息处理程序Element 0 inaccessible - use 'Length' or 'SetLength' 元素0不能存取-使用LENGTH或SETLENGTHError in numeric constant 数值常量错误EXCEPT or FINALLY expected 要求EXCEPT或FINALLYEXPORTS allowed only at global scope EXPORTS只允许在全局范围使用Expression has no value 表达式没有值Expression too complicated 表达式太复杂Field definition not allowed in OLE automation section 在OLE自动区段中不允许域定义Field definition not allowed after methods or properties 在方法或属性后不允许域定义Field or method identifier expected 要求域或方法标识符File not found: <Filename> 文件<Filename>没有找到File type not allowed here 这儿不允许文件类型For loop control variable must be simple local variable FOR循环控制变量必须为简单局部变量For loop control variable must have ordinal type FOR循环控制变量必须为序数类型FOR or WHILE loop executes zero times - deleted FOR或WHILE循环执行零次-删除FOR-Loop variable '<name>' cannot be passed as var parameter FOR循环变量<name>不能作为参数传递FOR-Loop variable '<Name>' may be undefined after loop 在循环后的FOR循环变量<NAME>是不确定的Function needs result type 函数需要结果类型Identifier redeclared: '<name>' 标识符<name>重复说明Illegal character in input file: '<char>' ($<hex>) 在输入文件中的非法字符'<char>'Illegal message method index 非法的消息方法指针Illegal reference to symbol '<Name>' in object file '<Filename>' 在对象文件<filename>中对符号<name>的非法引用Illegal type in OLE automation section: '<typename>' 在OLE自动区段中的非法类型<typename>Illegal type in Read/Readln statement 在Read/Readln语句中的非法类型Illegal type in Write/Writeln statement 在Write/Writeln语句中的非法类型Inaccessible value 不可存取的值Incompatible types: '<name>' and '<name>' 不兼容的类型<name>和<name> Incompatible types: <text> 不兼容的类型<text>Inline assembler stack overflow 内联汇编溢出Inline assembler syntax error 内联汇编语法错误Instance variable '<name>' inaccessible here 实体变量<name>在这里不能存取Integer constant or variable name expected 要求整形常量或变量名Integer constant too large 整型常量太大Internal error: <ErrorCode> 内部错误<errorcode>Invalid combination of opcode and operands 操作码与操作对象的无效组合Invalid compiler directive: '<Directive>' 无效的编译指令<DIRECTIVE> Invalid function result type 无效的函数值类型Invalid message parameter list 无效的消息参数列表Invalid register combination 无效的寄存器组合Invalid typecast 无效的TYPECASELabel '<Name>' is not declared in current procedure 在当前的过程中没有说明标号<NAME>Label already defined: '<Labelname>' 标号<LABELNAME>已经定义Label declaration not allowed in interface part 在界面部分不允许标号说明Label declared and referenced, but not set: '<label>' 标号被<label>说明及引用,但不能设置Label expected 要求标号Left side cannot be assigned to 左边不能赋值Line too long (more than 255 characters) 行太长(超出255个字符)Local class or object types not allowed 不允许局部的类或对象类型Local procedure/function '<Name>' assigned to procedure variable 局部过程/函数<NAME>赋给过程变量LOOP/JCXZ distance out of range LOOP/JCXZ距离超出范围Low bound exceeds high bound 下界超过上界Memory reference expected 要求内存引用Method '<name>' hides virtual method of base type '<name>' 方法<NAME>隐藏了基类型为<NAME>的虚拟方法Method '<name>' not found in base class 在基类中没有找到方法<NAME> Method identifier expected 要求方法标识符Missing ENDIF directive 缺少ENDIF指令Missing operator or semicolon 缺少操作符或分号Missing or invalid conditional symbol in '$<symbol>' directive 在$<symbol>指令中缺少或无效的条件符号Missing parameter type 缺少参数类型Necessary library helper function was eliminated by linker 必要的库帮助函数被连接程序删除No definition for abstract method '<name>' allowed 抽象方法<NAME>没有定义Not enough actual parameters 没有足够的实际参数Number of elements differs from declaration 元素数与说明不同Numeric overflow 数值溢出Object or class type required 需要对象或类类型Object type required 需要对象类型Only register calling convention allowed in OLE automation section 在OLE自动区段中只允许寄存器调用约定Operand size mismatch 运算对象大小匹配Operator not applicable to this operand type 运算符不使用于这一运算对象类型Order of fields in record constant differs from declaration 在记录常量中的域次序与说明不同Ordinal type required 需要序数类型Out of memory 内存溢出Overflow in conversion or arithmetic operation 转换或算术操作溢出Overriding automated virtual method '<name>' cannot specify a dispid 覆盖的自动虚拟方法<NAME>不能指定DISPIDPACKED not allowed here 这里不允许PACKEDPointer type required 需要指针类型Procedure cannot have a result type 过程不能有结果类型Procedure DISPOSE needs destructor 过程DISPOSE需要destructor Procedure FAIL only allowed in constructor 过程FAIL只允许在constructor方法中Procedure NEW needs constructor 过程NEW需要constructor方法PROCEDURE or FUNCTION expected 要求PROCEDURE或FUNCTION Procedure or function name expected 要求过程或函数名Program or unit '<name>' recursively uses itself 程序或单元递归Property '<name>' does not exist in base class 在基类中<NAME>属性不存在Published property '<name>' cannot be of type <type> Published属性<NAME>不能具有类型<type>Published Real48 property '<name>' must be Single, Double or Extended Published REAL属性<NAME>必须为Single, Double或ExtendedRe-raising an exception only allowed in exception handler 在意外处理中只允许重新引起意外处理Read error on <Filename> 文件<FILENAME>读出错Record, object or class type required 需要记录,对象或类类型Redeclaration of '<name>' hides a member in the base class <NAME>的重新说明隐藏了基类中一个元素Redeclaration of property not allowed in OLE automation section 在OLE自动区段中不允许属性重复说明Return value of function '<Functionname>' might be undefined 函数<Functionname>的返回值可能没有定义Seek error on <Filename> 在<FILENAME>中搜索错误Segment/Offset pairs not supported in Borland 32-bit Pascal 在Borland 32位的PASCAL中不支持Segment/Offset对Sets may have at most 256 elements 集至少有256个元素Size of published set '<name>' is >32 bits published集<NAME>的大小大于32字节Slice standard function only allowed as open array argument Slice标准函数只允许作为打开数组参数Statement expected, but expression of type '<type>' found 要求语句,但出现类型<TYPE>的表达式Statements not allowed in interface part 在界面中不允许的语句String constant too long 字符串常量太长String constant truncated to fit STRING[<number>] 字符串常量截取到适合STRING[<number>]Strings may have at most 255 elements 字符串至少255个元素Structure field identifier expected 要求结构域标识符Syntax error in real number 实数语法错误System unit out of date or corrupted: missing '<name>' 系统单元超出日期或损坏:缺少<NAME>Text after final 'END. 编译器忽略END.后的文本This form of method call only allowed for class methods 该方法的窗体只允许类方法This form of method call only allowed in methods of derived types 该方法的窗体只允许在导出类型的方法中This type cannot be initialized 这一类型不能初始化Thread local variables cannot be ABSOLUTE 线程局部变量不能是ABSOLUTEThread local variables cannot be local to a function or procedure 线程局部变量对函数不能是局部的Too many actual parameters 太多的实际参数Too many conditional symbols 太多的条件符号Type '<name>' has no type info 类型<NAME>没有类型信息Type '<Name>' is not yet completely defined 类型<NAME>至今没有定义Type '<name>' must be a class to have a PUBLISHED section 类型<NAME>必须是在PUBLISHED区段中的类Type '<name>' must be a class to have OLE automation 类型<NAME>必须是具有OLE自动的类Type '<name>' needs finalization - not allowed in file type 类型<NAME>需要初始化-不允许在文件类型中Type '<name>' needs finalization - not allowed in variant record 类型<NAME>需要初始化-不允许在变体记录Type expected 要求TYPEType not allowed in OLE Automation call 在OLE自动调用中不允许的类型Type of expression must be BOOLEAN 表达式的类型必须为BOOLEAN型Type of expression must be INTEGER 表达式的类型必须为INTEGER型TYPEINFO standard function expects a type identifier TYPEINFO标准函数要求类型标识符TYPEOF can only be applied to object types with a VMT TYPEOF只能用于具有VMT的对象类型Types of actual and formal var parameters must be identical 形参与实参必须一致Undeclared identifier: '<name>' 未说明的标识符<NAME>Unexpected end of file in comment started on line <Number> 以行<Number>开始的注释中出现不应有的文件结束Unit <Unit1> was compiled with a different version of <Unit2> 单元<UNIT1>与不同版本的<UNIT2>编译Unit name mismatch: '<Unitname>' 单元名不匹配<UNITNAME>Unknown directive: '<Directive>' 未知的指令<DIRECTIVE>Unnamed arguments must precede named arguments in OLE Automation call 在OLE自动调用中未命名的参数必须在命名的参数前Unsatisfied forward or external declaration: '<Procedurename>' 不满足的向前或外部说明<Procedurename>Unterminated string 未结束的字符串Value assigned to '<Name>' never used 赋给<NAME>的值从未使用过Variable '<name>' inaccessible here due to optimization 由于优化,变量名<NAME>在这里不能存取Variable '<name>' is declared but never used in '<name>' 变量名<NAME>已说明,但不曾使用Variable '<Name>' might not have been initialized 变量名<NAME>可能没有初始化Variable required 需要变量Virtual constructors are not allowed 不允许虚拟的constructors方法Write error on <Filename> 文件<Filename>写错误Wrong or corrupted version of RLINK32.DLL RLINK32.DLL版本错误或不能用。
根据上表所反映的情况,笔者作了如下数据统计及分析:1、能正常登录的网站注249个,占调查总体样本容量的68.06%,不能登录的占31.94%,说明甘肃旅游网站的硬件建设依然存在较多问题,或者网站的所有方申请了域名后由于某种原因而放弃了其使用权。
2、在能统计出网站设计建设方的29个网站中,企业/组织自主开发的网站4个,占13.79%;委托其他企业/组织开发的网站25个,占86.21%。
说明甘肃旅游企业或组织缺乏技术,自主开发能力低。
3、能正常登录且能统计主页栏目数网站(45个)的主页栏目数平均值为9.71,这在一定程度上反映出甘肃旅游网站内容较为单一,这可能也是影响浏览量的一个因素。
4、有外文(含中文繁体)版注3网页的网站14个,占能正常登录的网站总数的28.57%,没有建设外文网业的比重较大(71.43%)。
说明甘肃旅游企业/组织的对外意识淡薄。
由于语言障碍,致使甘肃数量众多的优质旅游资源不能直接通过网络来吸引更多的国外游客,这也在一定程度上影响了国际客源地市场的来甘旅游量。
5、有在线预定(包括酒店、机/车票、线路预定等)功能的网站29个,占能正常登录网站总数的59.18%。
说明甘肃旅游企业/组织已经具备了在线交易的意识。
有在线支付功能的网站4个,占有在线预定功能网站总数的13.79%。
说明甘肃旅游网站实际能进行在线交易的很少,绝大部分只是简单的介绍旅游知识和旅游线路等,以信息公布为主要内容,对实现供需双方网上信息即时交换和网上交易等功能不全,不能真正发挥出电子商务网站的作用。
甘肃旅游电子商务仍处于较低发展层次。
6、值得一提的是,兰州雁滩宾馆的网站(yantanhotel.com),只有英文版,而没有中文版,链接的全是外国酒店,且与本酒店经营业务毫无联系。
白银区旅游网(byqtour.com)、崇信旅游网(chongxintour.com)的页面全是英文而无中文,且与旅游毫无联系。
打开甘肃旅游(xoxo113.8u8.com)网站,看到的却是推荐网民注册免费邮箱的信息。
MASM汇编错误信息说明1、test.asm(54): error A2000: Block nesting error说明:此错误信息通常见于一个段定义起始段名和末尾段名不一致。
修改:检查段定义,使段名前后保持一致。
2、test.asm(5): error A2005: Symbol is multidefined: DATA说明:此错误信息提示DATA符号重复定义了。
修改:将其中一个符号DATA重新设置。
3、test.asm(7): error A2009: Symbol not defined: B9H说明:此错误信息为test.asm中第7行指令出错,查看该指令,源操作数为十六进制数B9H。
按规定以字母开始的十六进制数,应在其前面加上数字0以便汇编程序区分常数和符号。
另一种出错的可能原因是程序中使用的符号变量没有定义。
修改:以0B9H取代B9H;使用伪指令定义变量。
4、test.asm(11): error A2009: Symbol not defined: NO说明:test.asm中第11行指令JLE no-count,符号中使用了中折线,中折线在汇编中是作为减号,因此,汇编提示标号NO没有定义。
注意,汇编语言规定符号中可以使用下划线。
修改:将no-count改为no_count。
5、test.asm(28): error A2010: Syntax error说明:此错误信息提示源程序中第28行的指令语句的语法与任何可识别的语法不匹配,出错。
修改:按照汇编指令的规定格式重新编写。
6、test.asm(2): error A2018: Operand must be register: DX说明:指定的寄存器不是指令或伪指令所要求的。
如:ASSUME DX:DATA修改:查看汇编指令的规定格式。
7、test.asm(16): error A2028: Operator expected说明:汇编程序需要的是操作符,得到的却是其它内容。
编写汇编语言常见错误分析:一、MAS51汇编软件汇编失败原因分析:单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误汇会造成汇编失败,常见的汇编错误如下:1.标号重复常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。
2.标点符号以全角方式输入MAS51程序要求标点符号为半角方式,否则汇编失败。
可以在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。
3.注释太长有时为了以后读懂程序,写了很长的注释,站长发现超过20个汉子时也会造成汇编失败,解决办法可以将太长的注释分成多个注释。
4.数值#FFH 前遗漏0,根据要求应该在a~f前加0,写成#0FFH 5.字母O和数字0搞混有时候这两个字看上去完全相同,要注意哦~~6.标号后边遗漏":"7.标号使用了特殊字符,比如:T1、T2、A、B这些字符有特定的含义,不允许用于标号。
8.AJMP跳转超过2K地址,AJMP属于短跳转命令,有2K地址范围的限制。
9.JB P3.2,EXIT跳转超过-128~127个地址范围。
这个是最容易出现的错误!你有可能程序刚才还能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把JB P3.2,EXIT转换成JNB P3.2,UUUAJMP EXIT UUU: 10.字母I和数字1混淆,冒失鬼的常见问题。
11.创造发明不存在的汇编语言指令,在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不认可。
12.符号“:”“;”最好用半角书写。
二、程序出错:1.寄存器重复调用比如主程序中设定了R4=5,表示主程序循环执行5次,而其中的一个延时子程序又用到R4,使R4的值发生紊乱,造成程序无法正常执行。
2.硬件不熟悉单片机一般采用下拉输出,往往端口输出0驱动外设工作,和常见的正逻辑相反,容易搞错。
想想我自己,还不只一次犯这样的错误.要养成良好的程序书写习惯,比如标号对齐、参数对齐、注释对齐,这样看起来赏心悦目,也不容易出错。
汇编程序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
语法错误.不是汇编程序所能识别的一个语句
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
需要一个操作数,只有操作符
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用错.。