40 汇编语言程序设计 164 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 Operand must be in same segment or one constant “—”运算符用错。例如“MOV AL,—VAR”,其中VAR是变量名,应有一常数参加运算。又如两个不同段的变量名相减出错 Normal type operand expected 要求给出一个正常的操作数。 Constant expected 要求给出一个常数。 Operand must have segment 运算符SEG用错。 Must be associated with data 在必须与数据段有关的位置上出现了代码段有关的项 Must be associated with code 在必须与代码段有关的位置上出现了数据段有关的项 Multiple base registers 同时使用了多个基址寄存器。如“MOV AX ,[SI][BP]” Multiple index registers 同时使用了多个变址寄存器。如“MOV AX ,[SI][DI]” Must be index or base register 指令仅要求使用基址寄存器或变址寄存器,而不能使用其他寄存器。 Illegal use of register 非法使用寄存器出错 Value is out of range 数值太大,超过允许值。例如:“MOV AL ,100H” Operand not in current CS ASSUME segment 操作数不在当前代码段内。通常指转移指令的目标地址不在当前CS段内 Improper operand type 操作数类型使用不当。例如:“MOV VAR1,VAR2”。两个操作数均为存储器操作数,不能汇编出目标代码 Jump out of range by %ld byte 条件转移指令跳转范围超过-128~+127个字节。出错厂、信息同时给出超过的字节数 Index displacement must be constant 变址寻址的位移量必须是常数 Illegal register value 非法的寄存器值。目标代码中表达寄存器的值超过7 Immediate mode illegal 不允许使用立即数寻址。例如“MOV DS,CODE”其中CODE是段名,不能把段名作为立即数传送给段寄存器DS Illegal size for operand 使用操作数大小(字节数)出错。例如:使用双字的存储器操作数 Byte register illegal 要求用字寄存器的指令使用了字节寄存器。如PUSH,POP指令的操作数寄存器必须是字寄存器 Illegal uer of CS register 指令中错误使用了段寄存器CS。如:“MOV CS,AX”CS不能做目的操作数 Must be accumulator register 要求用AX或AL的位置上使用可其他寄存器。如IN,OUT指令必须使用累加器AX或AL Improper uer of segment register 不允许使用段寄存器的位置上使用了段寄存器。如“SHL DS,1” Missing or unreachable CS 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 汇编语言程序设计实验指导 165 79 80 81 82 83 84 85 试图跳转去执行一个CS达不到的标号。通常是指缺少ASSUME语句中CS与代码段相关联 Operand combination illegal 双操作数指令中两个操作数组合出错 Near JMP/CALL to different CS 试图用NEAR属性的转移指令跳转到不在当前段的一个地址 Label cannot have segment override 段前缀使用出错 Must have instuction agter prefix 在重复前缀REP,REPE,REPNE后面必须有指令 Cannot override ES for destination 串操作指令中目的操作数不能用其他段寄存器替代ES Cannot address with srgment register 指令中寻找一个操作数,但ASSUME语句中未指明哪个段寄存器与该操作数所在段有关联 Must be in segment block 指令语句没有在段内 Cannot use EVEN or ALIGN with byte alignment 在段定义伪指令的定位类型中选用BYTE,这时不能使用EVEN或ALIGN伪指令 Forward needs override or FAR 转移指令的目标没有在源程序中说明为FAR属性,可用PTR指定 Illegal value for DUP count 操作符DUP前的重复次数是非法的或未定义 Symbol id already external 在模块内试图定义的符号,它已在外部符号伪指令中说明 DUP nesting too deep 操作数DUP的嵌套太深 Illegak use of undefinde operand(?) 不定操作符“?”使用不当。例如“DB 10H DUP(?+2)” Too many valer for struc or record initialization 在定义结构变量或记录变量时,初始值太多 Angle brackets requored around initialized list 定义结构体变量时,初始值未用尖括号(<>)括起来 Directive illegal structure 在结构体定义中的伪指令使用不当。结构定义中的伪指令语句仅二种:分号(;)开始的注释语句和用DB、DW等数据定义伪指令语句 Override with DUP illegal 在结构变量初始值表中使用DUP操作符出错 Field cannot be overridden 在定义结构变量语句中试图对一个不允许修改的字段设置初值 Override id of wrong type 在定义结构变量语句中设置初值时类型出错 Circular chain of EQU aliases 用等值语句定义的符号名,最后又返回指向它自己。如: A EQU B B EQU A Cannot emulate cooprocessor opcode 仿真器不能支持的8087协处理器操作码 End of file,not END directive 源程序文件无END文件 Data emitted with no segment 语句数据没有在段内
汇编语言程序设计实验指导
2026/4/23 22:20:17
汇编语言程序设计实验指导.doc
将本文的Word文档下载到电脑

