MASM汇编错误信息说明 ASM问题汇总
test.asm(16):errorA2028:Operatorexpected7.7.test.asm(16):
说明:汇编程序需要的是操作符,得到的却是其它内容。test.asm中第16行MOVDXOFFSETBUF2,显然是两操作数中间缺少“,”符号导致出错。
修改:两操作数之间用“,”号分隔。
test.asm(47):errorA2029:Divisionby0oroverflow8.8.test.asm(47):
说明:给出一个用零作除数的表达式或溢出。test.asm中第47行指令ANDAL,00100000数据溢出,这是因为,汇编程序默认数制为十进制,因而该指令中的源操作数超出范围。修改:若欲输入的是二进制数,在该数后加b,说明为二进制数。
test.asm(8):errorA2048:Mustbeindexorbaseregister9.9.test.asm(8):
说明:指令需要基址或变址寄存器,源程序中给出的是其它寄存器。test.asm中第8行指令MOVAL,[SI+DX],显然,DX寄存器应为BX寄存器。
修改:按寻址方式规定修改。
test.asm(6):errorA2049:Illegaluseofregister10.10.test.asm(6):
说明:此错误信息为test.asm中第6行出错,查看该指令,是由于将两操作数之间的“,”号错为“.”号而出错。另外一种情况,如MOVAL,DL+20H,则是源操作数为非法格式。修改:按照汇编指令的规定格式重新编写。
test.asm(48):errorA2050:Valueoutofrange11.11.test.asm(48):
test.asm中第48行指令ANDAL,00010000出错。说明:因为汇编程序默认数制为十进制,因此,该指令源操作数为16位立即数,不能送入8位寄存器。
修改:将8位寄存器AL改为16位寄存器,如AX。
12、test.asm(10):errorA2052:Improperoperandtype
说明:非法的操作数类型。如test.asm中第10行指令MOVRESULT,[SI]。汇编语言规定两个操作数不能同时为存储器操作数。
修改:先将源操作数传送到寄存器,再由寄存器传送到另一个存储单元。


