汇编错误总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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) 、

相关文档
最新文档