汇编错误说明
汇编ml.exe错误信息大全(带中文翻译)

invalid INVOKE argument 无效的INVOKE符号
must be in segment block 必须在区、段、块中
cannot find cvpack.exe 找不到cvpack.exe
SEVERE 严重的错误
memory operand not allowed in context 内存操作数无法载入上下文环境
.MODEL must precede this directive .MODEL必须在指令之前
cannot define as public or external 不能定义为公有或外部的
segment attributes cannot change 区、段属性不能更换
expression expected 预期表达式
operator expected 预期操作数
invalid use of external symbol 使用了无效的外部符号
operand must be RECORD type or field 操作数必须是RECORD类型或域
statement too complex 声明太复杂
identifier too long 标识符太长
invalid character in file 文件里有无效字符
missing angle bracket or brace in literal 语句里找不到同样的括弧或框架
invalid type expression 无效的类型表达式
distance invalid for word size of current segment 当前区、段的大小命令无效
汇编语言一些常见错误

常见的汇编语言错误:
推荐书籍和软件:
1.《IBM PC汇编语言程序设计》作者:沈美明温冬婵/编著出版社:清华大学出版社
以前学习汇编必备的一本书,相当不错。
2.《Intel汇编语言程序设计(第四版)》作者:[美]Kip R.Irvine 译者:温玉杰张家生罗云彬针对Intel系列写的比较全面,翻译的人也不错,作为参考资料应该不错
3.Win32下的汇编书籍罗云彬写的《Windows环境下32位汇编语言程序设计》,32位环境下的汇编开发必备书
3.Emu8086开发环境(提供一些简单例子,并有单步执行和虚拟视窗模拟输入输出,比较直观)4.简单的编译环境(Microsoft公司的MASM.exe,Link.exe和Windows自带的Debug.Exe调试)。
汇编语言常见错误指令解决办法

(1) MOV DS, 2010H ;立即数不能传送到DS(2) PUSH AL ;栈操作,操作数类型必须为WORD类型(3) MOV DX,[SP] ;SP寄存器不能做间址寄存器(4) IN AL,0A00H ;I/O指令的直接寻址,地址只能为8位(5) XCHG CL,CH ;正确(6) SHR AX,3 ;移位超过一位时,应采用CL寄存器间址(7) AAA CX ;非组合的BCD码加法调整AAA指令应为隐含操作数(8) ADD [BP+DI] ;加法指令ADD,缺少源操作数(9) OUT DX,CL ;I/O指令操作数只能用AX、AL提供,端口地址可以是8位的直接地址或用DX间址(10)CBW BH ;符号扩展指令为隐含操作数(11)ADD 03ECH ;加法指令应为双操作数指令,立即数不能做目的操作数(12)MOV BX, [SI+DI] ;源操作数形式错误,SI和DI不能同时做为间址寄存器(13)MOV DI, [AX] ;AX不能做为间址寄存器(14)OUT 258H, BX ;I/O指令格式错误,见(9)题的解释(15)SHL AX, 3 ;移位指令,位移位数大于1时,应用CL来指明(16)MOV 64H,AL ;立即数不能做为目的操作数(17)ADD AL,6600H ;源、目的操作数的类型不一致(18)MOV[BX],[SI];传送指令中,两个操作数不能同时为存储器操作数(19)XCHG AX,8800H ;交换指令的操作数不能使用立即数(20)MOV AX,[BX+DX];传送指令的源操作数,不能使用立即数(21)LEA BX,1000H;有效地址传送指令的源操作数不能为立即数,必须是存储器操作数(22)DIV 0010H ;正确(23)LEA DX,DI ;同(21)题,源操作数不能为寄存器操作数(24)MUL AX,200H ;乘法指令的目的操作数是隐含的,不能出现在指令中(25)MOV AX, [BX+BP];传送指令中源操作数格式错,BX和BP不能同时为间址寄存器(26)CMP [BX], [SI] ;比较指令的两个操作数不能同时为存储器操作数(27)OUT DX, BX ;I/O指令中,源操作数只能使用AL或AX寄存器(28)AND OFH,AL ;“与”指令中,目的操作数不能使用立即数(29)SAL [BX],CX ;移位指令,移位位移不能用CX寄存器指明(30)JMP FAR [BX+SI] ;转移指令中转移的目标地址表达方式错误;如果是段内间接转移,应为:JMP WORD PTR[BX+SI];如果是段间间接转移,应为:JMP DWORD PTR[BX+SI](31)JNZ AAA;不相等转移指令中,符号地址(标识符)不能使用系统中的保留字(32)JMP NEXT ;正确(33)SBC AX, [DX] ;指令助记符错,源操作数表示方式错(34)MOV CS,DS;段寄存器之间不能传送数据,CS寄存器也不能做为目的操作数(35)ADD DS, AX ;加法指令中段寄存器不能做为操作数(36)MOV AL,CX ;源、目的操作数的类型不一致,见(17)题(37)INC [BX];没有指定存储器操作数类型(38)MOV CL,A8H;源操作数为16进制的立即数,16进制数以字母开头时应在前面加“0”(39)MOV ES,DS ;错同(34)题(40)IN AL,BX ;I/O指令端口地址表示错误,只能用8位立即数或DX 间址。
附4《IDE环境出错信息说明》

附录4- 399附录4 µ’nSP™编译相关错误信息汇编器Xasm16在对µ’nSP™的指令进行汇编过程中可能会出现的错误信息如下:A0000: Syntax error语法错误。
当某一指令或表达式不符合Xasm16规定的格式时会出现此信息。
A0001: ‘…’ already defined某符号已被定义过,不能对其重复定义。
A0002: Bad use of local symbol‘…’局部符号不能被用作宏名、程序名、段名、结构名、结构变量名以及常量名。
A0003: Bad use of keyword‘…’指令或伪指令中的关键字不能被任意用作符号。
A0004:‘…’already defined某局部符号与前面已定义过的符号同名,符号不允许被重复定义。
A0005: Local symbol‘…’can not be declared as external局部符号只能用在局部区域,故其不能被声明为外部符号。
A0006:‘…’Illegal forward reference or symbol变量在引用前须经定义,不可超前引用。
A0007: '...' undefined引用的符号未经定义。
A0008: Local symbol '...' can't be declared as public局部符号只能用在局部区域,故其不能被声明为全局符号。
A0009: '...' can't be declared as public---wrong type某符号已被定义成常量,故其不能再被声明为全局变量符号。
A0010: '...' can't be declared as public because it's defined with VAR某符号已用伪指令VAR被定义为常量,故其不能再被声明为全局符号。
结算审核常见错误汇编(1)

塔吊基础的费用
放坡及工作面产生的 在分部分项中计费 土石方 人工材料价差的调整 把大部分人工材料按价格较高的取定
二 套价错误 1 机械凿水泥搅拌桩护 套人工凿桩头 壁 没有完全匹配的子目,套更接近的凿高压旋喷桩
2
信息价中有φ 50的泥浆泵台班费,且该台班费比φ 100的污水泵台 φ 45,φ 50的污水泵台 信息价没有φ 45,φ 50的污水泵台班费用,于是按φ 班费还更少,故用了φ 100的泥浆泵与φ 50泥浆泵的比例折出Φ 50 100的污水泵台班计价 班费用 的污水泵台班费用,这样计算每台班省84.33元/台班 03年广东定额建筑超 按广东03定额的相应子目前直接套价。 高加压水泵的计取 与结构一同施工的装 修工程超高增加费的 按单独装修工程超高增加费系数计取 计取系数 采用广东03定额的主体工程,应注意建筑物超高加压水泵台班费已 取消,应调整在机械降效费上。 与主体工程一同施工的装修工程,其超高增加费计取系数应与主体 结构一致
8
安装工程设计变更
9
案例一:一个园建工程,将由其他施工单位负责的 不同的施工单位施工 雕塑计给结算施工单位,多计28万元。案例二:将 范围弄错 装修单位做的大堂抹灰计给主体施工单位
四 竣工图与现场不符 1 电梯井内壁抹灰 电梯井内壁计算抹灰, 图纸上有表示的项目但实际没施工的,按图纸计算 了工程量。案例御景半岛运动中心排球馆赛事改造 工程的观从栏杆没做,但预算部按图计算了该费用 电梯井内壁堂规做法是不用做抹灰的,如有施工单位计算了此项要 到现场核实
二 综合单位包干项目结算审查重点 1 2 3 4 5 熟悉单价包干的施工内容,是否存在综合单价已含的工作内容另列项计算 实际使用材料与综合单价合同材料是否一致 分清施工单位的施工界面 工程量的计算是否准确 工期延误扣款、转扣签证等扣款项目是否已扣
临床常见诊疗错误汇编(316):查体问诊须精细小小焦痂明病因——一例恙虫病延误治疗的教训

遂追问病史 ,患者 2 周前有被虫咬伤史 ,伤后右侧
腹股 沟 处 曾肿 大 ,初 步 考 虑 恙 虫病 ,安排 做 外一 斐 实验 以确 认并 给予 氯 霉 素 诊 断性 治疗 及 对 症 治疗 。 虽然 外 . 验 (一) 斐实 ,但 经 氯 霉 素 治 疗 2d后 热 退 ,继续 氯霉 素治 疗 3d后 ,患者 症状 好 转 于 8月
豆 至鸽 蛋 大 ,可 移 动 ,有 疼 痛 及 压 痛 ,无 化 脓 倾 向 ,消散 较 慢 ,在 恢 复 期 仍 可 扪 及 。 约 1 % 一 0
人 院后 继续 给予病 毒 唑抗病 毒 及补 液 治疗 ,患
者基 本呈 持续 高 热 ,用 退 热 药 后 体 温 可 短 暂下 降 。 此 时考 虑患者 持续 高热 原 因如下 :正在 服用 抗 甲亢 药物 ,可致 白细胞 偏低 , 甲状腺 功 能 亢 进 ( 甲亢 )
2 日出院 ,出 院后 继续 予强 力 霉素 口服 5 d 8 。最终
热 查 因收入 院。既 往有 格雷 夫斯 病病 史 ,正服 用他
巴唑治疗 ( 用量不详 ) 。体格检查 :体温 3. ℃ , 95
脉搏 9 :分 ,呼 吸 2 00/ 0次/ ,血 压 15 6 m 分 0 /0 m H ( m g 1m Hg=0 13k a 。神 志 清 ,精 神 欠 佳 , .3 P ) 浅 表 淋 巴结 未 触 及 肿 大 ,气 管 居 中 ,甲状 腺 I。 肿
围绕 以红晕 ,稍 隆起 成 围堤状 。痂皮 脱落 后形 成小 溃 疡 ,溃疡 也呈 圆形 或 椭 圆 ,周 边 整 齐 而 稍 隆 起 , 基 底 洁净 。焦 痂 好 发 于腋 窝 、腹 股 沟 、外 生 殖 器 、 腰 、背等处 ,一 般 只 有 1个 ,有 时 可 有 2~3个 。 该病 毒 血症症 状起 病 急骤 ,先有 畏寒 或寒 颤 ,继 而 发 热 ,体温迅 速 上升 ,1— , 2d浅 表淋 巴结 常 肿 大 , 近 焦痂 的局部 淋 巴结肿 大尤 为显 著 ,一般 大小 如蚕
abaqus常见错误汇编

abaqus的隐式求解的就是求算出一个很大的刚度矩阵的解,这个方程能否通过一次一次的迭代到最后达到一个系统默认的收敛准则标准的范围之内,就决定了这一次计算能否收敛。
因此要收敛的话,系统与上一个分析步的边界条件区别越小的话,系统就越容易找到收敛解。
针对这一点,我们可以得到下面的几种方法来尽可能的使系统的方程的解尽可能的接近上一步,以达到收敛。
下面的方法的指导思想是:尽可能小的模型,前后两个分析步的改变尽可能的少。
1. 接触分析真正加载之前,设置一个接触步让两个面接触上来,在这个步骤里面,接触面的过盈小一点好,比如0.001.接下去再把作用与两个接触体的力及接触方向的自由度放开。
2. 如果系统的载荷很多的话,将系统的载荷分做多步进行加载,一次性全上可能使系统无法在规定的迭代次数内收敛。
所以根据需要分开,让abaqus的内核慢慢消化去。
少吃多餐在这边好像也是成立的。
3. 系统有多个接触的话,也最好如载荷一样,分成几个step让他们接触上。
这样的做法会让你以后在模型的修改中更有方向性。
4. 模型还是不收敛的话,你可以看一下是在哪一步或者那个inc不收敛。
对于第一步直接不收敛的话,如果模型是像我上面把载荷和接触分成很多步建立的话,可以把载荷加载的顺序换一下。
如果你把第二个加载的载荷换到第一步以后,计算收敛了,那影响收敛的主要问题应该就是原来第一个加载或着接触影响的。
这种情况下面一般算到这个加载的时候还是不会收敛。
这个时候可以考虑是否有什么其他办法能够使步骤的变化与上一步变动小一点,比如第一点里面提到,或者继续把这个载荷细分呢?5. 对于接触分析不收敛的情况,可以自己看一下模型的接触面。
有时候是overclosure,这个时候在assemble里面将模型相对位置稍微移动下或者用接触里面的那个adjust only to remove overclose,不过或一种方法会使你的网格扭曲变形。
问题不大也是可以用的。
汇编程序(MASM)常见错误信息

汇编程序(MASM)常见错误信息汇编程序在对源程序的汇编过程中,若检查出某语句有语法错误,随时在屏幕上给出出错信息.如操作人员指定的列表文件名(即.LST),汇编程序亦将在列表文件中出错的下面给出出错信息,以便操作人员即时查找错误,给予更正.MASM5.0出错信息格式如下:源程序文件行:WARNING/ERROR错误信息码:错误描述信息其中,错误描述信息码由五个字符组成,第一个是字母A,表示汇编语言程序出错;接着有一个数字指明出错类别:'2'为严重错误,'4'为严肃警告,'5'为建议性警告,最后三位为错误编号.错误编号:错误描述0 Block nesting error嵌套出错.嵌套的过程,段,结构,宏指令或重复块等非正常结束.例如在嵌套语句中有外层的结束语句,而无内层的结束语局1 Extra characters on line 一语句行有多余字符,可能是语句中给出的参数太多2 Internal error-Register already defined这是一个内部错误.如出现该错误,请记下发生错误的条件,并使用Product Assistance Request 表与Microsoft公司联系3 Unkown type specifer未知的类型说明符.例如类型字符拼错,把BYTE写成BIT,NEAR写成NAER等4 Redefinition of symbol符号重定义.同一标识符在两个位置上定义.在汇编第一遍扫描时,在这个标识符的第二个定义位置上给出这个错误5 Symbol is multidefined符号多重定义.同一标识符在两个位置上定义.在汇编第二遍扫描时,每当遇到这个标识符都给出这个错误6 Phase error between passes两次扫描间的遍错.一个标号在二次扫描时得到不同的地址值,就会给出这种错误.若在启动MASM 时使用/D任选项,产生第一遍扫描的列表文件,它可帮助你查找这种错误7 Already had ELSE clause 已有ELSE语句.在一个条件块里使用多于一个的ELSE语句8 Must be in conditional block 没有在条件块里.通常是有ENDIF或ELSE语句,而无IF 语句9 Symbol not defined 符号未定义,在程序中引用了未定义的标识符10 Syntax error 语法错误.不是汇编程序所能识别的一个语句11 Type illegal in context 指定非法类型.例如对一个过程指定BYTE类型,而不是NEAR或FAR12 Group name must be unique 组名应是唯一的.作为组名的符号作为其他符号使用13 Must be declared during pass 1必须在第一遍扫描期间定义.在第一遍扫描期间,如一个符号在未定义前就引用,就会出现这种错误.14 Illegal public declaration 一个标识符被非法的指定为PUBLIC类型15 Symbol already defferent kind重新定义一个符号为不同种类符号.例如一个段名重新被当作变量名定义使用16 Reserved word used as symbol 把汇编语言规定的保留字作标识符使用17 Forward reference illegal 非法的向前引用.在第一遍扫描期间,引用一个未定义符号.18 Operand must be register 操作数位置上应是寄存器,但出现了标识符19 Wrong type of register 使用寄存器出错20 Operand must be segment or group 应该给出一个段名或组名.例如ASSUME语句中应为某段寄存器和指定一个段名或组名,而不应是别的标号或变量名等21 Symbol has no segment 不知道标识符的段属性22 Operand must be type specifier 操作数应给出类型说明,如NEAR,FAR,BYTE等23 Symbol alread defined locally以被指定为内部的标识符,企图在EXTRN语句中又定义外部标识24 Segment paraneters are changed 段参数被改变.如同一标识符定义在不同段内25 Improper align/combin type 段定义时的定位类型/组合类型使用出错26 Reference to multidefined symbol 指令引用了多重定义的标识符27 Operand expected 需要一个操作数,只有操作符28 Operator expected 需要一个操作符,但只有操作数29 Divdsion by 0 or overflow 除以0或溢出30 Negative shift count 运算符SHL或SHR的移位表达式值为负数31 Operand type must match操作数类型不匹配.双操作数指令的两个操作数长度不一致,一个是字节,一个是字32 Illegal use of external 外部符号使用出错33 Must be record field name 应为记录字段名.在记录字段名位置上出现另外的符号34 Must be record name or field name应为记录名或记录字段名.在记录名或记录字段名位置上出现另外的符号35 Operand must be size应指明操作数的长度(如BYTE,WORD等).通常使用PTR运算即可改正36 Must be variable,label,or constant 应该是变量名,标号,或常数的位置上出现了其他信息37 Must be stucture field name 应该为结构字段名.在结构字段名位置上出现了另外的符号38 Lefe operand must segment操作数的左边应该是段的信息.如设DA1,DA2均是变量名,下列语句就是错误的:"MOV AX,DA1:DA2".DA1位置上应使用某段寄存器名39 One operand must constant 操作数必须是常数.40 Operand must be in same segment or one constant"—"运算符用错.例如"MOV AL,—VAR",其中VAR是变量名,应有一常数参加运算.又如两个不同段的变量名相减出错41 Normal type operand expected 要求给出一个正常的操作数.42 Constant expected 要求给出一个常数.43 Operand must have segment 运算符SEG用错.44 Must be associated with data 在必须与数据段有关的位置上出现了代码段有关的项45 Must be associated with code 在必须与代码段有关的位置上出现了数据段有关的项46 Multiple base registers 同时使用了多个基址寄存器.如"MOV AX ,[SI][BP]"47 Multiple index registers 同时使用了多个变址寄存器.如"MOV AX ,[SI][DI]"48 Must be index or base regiser 指令仅要求使用基址寄存器或变址寄存器,而不能使用其他寄存器.49 Illegal use of register 非法使用寄存器出错50 Value is out of range 数值太大,超过允许值.例如:"MOV AL ,100H"51 Operand not in current CS ASSUME segment操作数不在当前代码段内.通常指转移指令的目标地址不在当前CS段内52 Improper operand type 操作数类型使用不当.例如:"MOV VAR1,VAR2".两个操作数均为存储器操作数,不能汇编出目标代码53 Jump out of range by %ld byte条件转移指令跳转范围超过-128~ 127个字节.出错厂,信息同时给出超过的字节数54 Index displacement must be constant 变址寻址的位移量必须是常数55 Illegal register value 非法的寄存器值.目标代码中表达寄存器的值超过756 Immediate mode illegal 不允许使用立即数寻址.例如"MOV DS,CODE"其中CODE是段名,不能把段名作为立即数传送给段寄存器DS57 Illegal size for operand 使用操作数大小(字节数)出错.例如:使用双字的存储器操作数58 Byte register illegal要求用字寄存器的指令使用了字节寄存器.如PUSH,POP指令的操作数寄存器必须是字寄存器59 Illegal uer of CS register指令中错误使用了段寄存器CS.如:"MOV CS,AX" CS不能做目的操作数60 Must be accumulator register要求用AX或AL的位置上使用可其他寄存器.如IN,OUT指令必须使用累加器AX或AL61 Improper uer of segment register不允许使用段寄存器的位置上使用了段寄存器.如"SHL DS,1"62 Missing or unreachable CS试图跳转去执行一个CS达不到的标号.通常是指缺少ASSUME语句中CS与代码段相关联63 Operand combination illegal 双操作数指令中两个操作数组合出错64 Near JMP/CALL to different CS试图用NEAR属性的转移指令跳转到不在当前段的一个地址65 Label cannot have segment override 段前缀使用出错66 Must have instuction agter prefix 在重复前缀REP,REPE,REPNE后面必须有指令67 Cannot override ES for destination 串操作指令中目的操作数不能用其他段寄存器替代ES68 Cannot address with srgment register指令中寻找一个操作数,但ASSUME语句中未指明哪个段寄存器与该操作数所在段有关联69 Must be in segment block 指令语句没有在段内70 Cannot use EVEN or ALIGN with byte alignment在段定义伪指令的定位类型中选用BYTE,这时不能使用EVEN或ALIGN伪指令71 Forward needs override or FAR转移指令的目标没有在源程序中说明为FAR属性,可用PTR指定72 Illegal value for DUP count 操作符DUP前的重复次数是非法的或未定义73 Symbol id already external 在模块内试图定义的符号,它已在外部符号伪指令中说明74 DUP nesting too deep 操作数DUP的嵌套太深75 Illegak use of undefinde operand( ) 不定操作符" "使用不当.例如"DB 10H DUP( 2)"76 Too many valer for struc or record initialization 在定义结构变量或记录变量时,初始值太多77 Angle brackets requored around initialized list定义结构体变量时,初始值未用尖括号()括起来78 Directive illegal structure 在结构体定义中的伪指令使用不当.结构定义中的伪指令语句仅二种:分号(;)开始的注释语句和用DB,DW等数据定义伪指令语句79 Override with DUP illegal 在结构变量初始值表中使用DUP操作符出错80 Field cannot be overridden 在定义结构变量语句中试图对一个不允许修改的字段设置初值81 Override id of wrong type 在定义结构变量语句中设置初值时类型出错82 Circular chain of EQU aliases 用等值语句定义的符号名,最后又返回指向它自己.如:A EQU BB EQU A83 Cannot emulate cooprocessor opcode 仿真器不能支持的8087协处理器操作码84 End of file,not END directive 源程序文件无END文件85 Data emitted with no segment 语句数据没有在段内。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
说明:汇编程序需要的是操作符,得到的却是其它内容。
test.asm中第16行MOV DX OFFSET BUF2,显然是两操作数中间缺少“,”符号导致出错。
修改:两操作数之间用“,”号分隔。
8、test.asm(47): error A2029: Division by 0 or overflow
说明:给出一个用零作除数的表达式或溢出。
test.asm中第47行指令AND AL, 0010 0000数据溢出,这是因为,汇编程序默认数制为十进制,因而该指令中的源操作数超出范
围。
修改:若欲输入的是二进制数,在该数后加b,说明为二进制数。
9、test.asm(8): error A2048: Must be index or base register
说明:指令需要基址或变址寄存器,源程序中给出的是其它寄存器。
test.asm中第8行指令MOV AL, [SI+DX],显然,DX寄存器应为BX寄存器。
修改:按寻址方式规定修改。
10、test.asm(6): error A2049: Illegal use of register
说明:此错误信息为test.asm中第6行出错,查看该指令,是由于将两操作数之间的“,”号错为“.”号而出错。
另外一种情况,如MOV AL, DL+20H,则是源操作数为非法格
式。
修改:按照汇编指令的规定格式重新编写。
11、test.asm(48): error A2050: Value out of range
说明:test.asm中第48行指令AND AL, 0001 0000出错。
因为汇编程序默认数制为十进制,因此,该指令源操作数为16位立即数,不能送入8位寄存器。
修改:将8位寄存器AL改为16位寄存器,如AX。
12、test.asm(10): error A2052: Improper operand type
说明:非法的操作数类型。
如test.asm中第10行指令MOV RESULT, [SI]。
汇编语言规定两个操作数不能同时为存储器操作数。
修改:先将源操作数传送到寄存器,再由寄存器传送到另一个存储单元。
13、test.asm(3):error A2053:Jump out of range by 82 byte(s)
说明:此错误信息为源程序test.asm中第3行的转移指令指定的转移超出允许范围。
修改:可在该转移指令与目标指令中增加一条无条件转移指令。
14、test.asm(21): error A2056: Immediate mode illegal
说明:test.asm中第21行指令IDIV 8错误,操作数不能是立即数。
修改:在该指令前增加一条传送指令,将该操作数8送入一个8位寄存器存放,如BL,则该指令可修改为IDIV BL。
15、test.asm(41): error A2062: Missing or unreachable CS
说明:这是由于缺乏段寄存器说明ASSUME伪指令导致。
修改:在代码段中增加段寄存器说明ASSUME伪指令。
16、test.asm(26): error A2105: Expected: comma
说明:双操作数指令中缺少逗号。
修改:在该指令的两个操作数中加上逗号。
17、test.asm(46): error A2105: Expected: instruction or directive
说明:通常是指令助记符输入错误。
修改:检查指令助记符。
18、test.asm(9): warning A4001: Extra characters on line
说明:当一行上已接受了定义指令说明的足够信息,而又出现多余的字符,汇编程序提示出错。
一般多由于指令中出现多余或非法的符号。
修改:仔细检查该指令。
19、test.asm(13): warning A4016: Reserved word used as symbol: AAA
说明:企图非法使用一个汇编程序的保留字,AAA是汇编的保留字(指令助记符),不能作为符号使用。
修改:重新设置符号名。
20、test.asm(33): warning A4031: Operand types must match
说明:test.asm中第33行指令MOV AX, RESULT,其中变量RESULT是用DB定义的,其属性为字节,因而与16位寄存器AX不匹配。
另一种情况是两个操作数分别为8
位寄存器和18位寄存器,同样也不匹配。
修改:选用相应位数的寄存器保证两个操作数为相同位数。
21、test.asm(19): warning A4057: Illegal size for operand
说明:操作数的长度非法,如PUSH AL。
修改:改用指令规定位数的寄存器,如PUSH AX。
22、test.asm(55): warning A4085: End of file, no END directive
说明:源程序中缺乏模块结束伪指令END。
修改:整个源程序最后增加模块结束伪指令END。
23、test.asm(32): warning A4101: Missing data; zero assumed
说明:此错误信息提示源程序中第32行的指令少了操作数,即单操作数指令缺少操作数或双操作数指令缺少一个操作数。
修改:给指令加上适当的操作数。