汇编语言常见错误信息解释Word文档格式.docx
- 文档编号:22446782
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:24.02KB
汇编语言常见错误信息解释Word文档格式.docx
《汇编语言常见错误信息解释Word文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言常见错误信息解释Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
8
Mustbeinconditionalblock
没有在条件块里.通常是有ENDIF或ELSE语句,而无IF语句
9
Symbolnotdefined
符号未定义,在程序中引用了未定义的标识符
10
Syntaxerror
语法错误.不是汇编程序所能识别的一个语句
11
Typeillegalincontext
指定非法类型.例如对一个过程指定BYTE类型,而不是NEAR或FAR
12
Groupnamemustbeunique
组名应是唯一的.作为组名的符号作为其他符号使用
13
Mustbedeclaredduringpass1
必须在第一遍扫描期间定义.在第一遍扫描期间,如一个符号在未定义前就引用,就会出现这种错误.
14
Illegalpublicdeclaration
一个标识符被非法的指定为PUBLIC类型
15
Symbolalreadydefferentkind
重新定义一个符号为不同种类符号.例如一个段名重新被当作变量名定义使用
16
Reservedwordusedassymbol
把汇编语言规定的保留字作标识符使用
17
Forwardreferenceillegal
非法的向前引用.在第一遍扫描期间,引用一个未定义符号.
18
Operandmustberegister
操作数位置上应是寄存器,但出现了标识符
19
Wrongtypeofregister
使用寄存器出错
20
Operandmustbesegmentorgroup
应该给出一个段名或组名.例如ASSUME语句中应为某段寄存器和指定一个段名或组名,而不应是别的标号或变量名等
21
Symbolhasnosegment
不知道标识符的段属性
22
Operandmustbetypespecifier
操作数应给出类型说明,如NEAR,FAR,BYTE等
23
Symbolalreaddefinedlocally
以被指定为内部的标识符,企图在EXTRN语句中又定义外部标识
24
Segmentparanetersarechanged
段参数被改变.如同一标识符定义在不同段内
25
Improperalign/combintype
段定义时的定位类型/组合类型使用出错
26
Referencetomultidefinedsymbol
指令引用了多重定义的标识符
27
Operandexpected
需要一个操作数,只有操作符
28
Operatorexpected
需要一个操作符,但只有操作数
29
Divdsionby0oroverflow
除以0或溢出
30
Negativeshiftcount
运算符SHL或SHR的移位表达式值为负数
31
Operandtypemustmatch
操作数类型不匹配.双操作数指令的两个操作数长度不一致,一个是字节,一个是字
32
Illegaluseofexternal
外部符号使用出错
33
Mustberecordfieldname
应为记录字段名.在记录字段名位置上出现另外的符号
34
Mustberecordnameorfieldname
应为记录名或记录字段名.在记录名或记录字段名位置上出现另外的符号
35
Operandmustbesize
应指明操作数的长度(如BYTE,WORD等).通常使用PTR运算即可改正
36
Mustbevariable,label,orconstant
应该是变量名,标号,或常数的位置上出现了其他信息
37
Mustbestucturefieldname
应该为结构字段名.在结构字段名位置上出现了另外的符号
38
Lefeoperandmustsegment
操作数的左边应该是段的信息.如设DA1,DA2均是变量名,下列语句就是错误的:
\"
MOVAX,DA1:
DA2\"
.DA1位置上应使用某段寄存器名
39
Oneoperandmustconstant
操作数必须是常数.
40
Operandmustbeinsamesegmentoroneconstant
—\"
运算符用错.例如\"
MOVAL,—VAR\"
其中VAR是变量名,应有一常数参加运算.又如两个不同段的变量名相减出错
41
Normaltypeoperandexpected
要求给出一个正常的操作数.
42
Constantexpected
要求给出一个常数.
43
Operandmusthavesegment
运算符SEG用错.
44
Mustbeassociatedwithdata
在必须与数据段有关的位置上出现了代码段有关的项
45
Mustbeassociatedwithcode
在必须与代码段有关的位置上出现了数据段有关的项
46
Multiplebaseregisters
同时使用了多个基址寄存器.如\"
MOVAX,[SI][BP]\"
47
Multipleindexregisters
同时使用了多个变址寄存器.如\"
MOVAX,[SI][DI]\"
48
Mustbeindexorbaseregister
指令仅要求使用基址寄存器或变址寄存器,而不能使用其他寄存器.
49
Illegaluseofregister
非法使用寄存器出错
50
Valueisoutofrange
数值太大,超过允许值.例如:
MOVAL,100H\"
51
OperandnotincurrentCSASSUMEsegment
操作数不在当前代码段内.通常指转移指令的目标地址不在当前CS段内
52
Improperoperandtype
操作数类型使用不当.例如:
MOVVAR1,VAR2\"
.两个操作数均为存储器操作数,不能汇编出目标代码
Jumpoutofrangeby%ldbyte
条件转移指令跳转范围超过-128~127个字节.出错厂,信息同时给出超过的字节数
54
Indexdisplacementmustbeconstant
变址寻址的位移量必须是常数
55
Illegalregistervalue
非法的寄存器值.目标代码中表达寄存器的值超过7
56
Immediatemodeillegal
不允许使用立即数寻址.例如\"
MOVDS,CODE\"
其中CODE是段名,不能把段名作为立即数传送给段寄存器DS
57
Illegalsizeforoperand
使用操作数大小(字节数)出错.例如:
使用双字的存储器操作数
58
Byteregisterillegal
要求用字寄存器的指令使用了字节寄存器.如PUSH,POP指令的操作数寄存器必须是字寄存器
59
IllegaluerofCSregister
指令中错误使用了段寄存器CS.如:
MOVCS,AX\"
CS不能做目的操作数
60
Mustbeaccumulatorregister
要求用AX或AL的位置上使用可其他寄存器.如IN,OUT指令必须使用累加器AX或AL
61
Improperuerofsegmentregister
不允许使用段寄存器的位置上使用了段寄存器.如\"
SHLDS,1\"
62
MissingorunreachableCS
试图跳转去执行一个CS达不到的标号.通常是指缺少ASSUME语句中CS与代码段相关联
63
Operandcombinationillegal
双操作数指令中两个操作数组合出错
64
NearJMP/CALLtodifferentCS
试图用NEAR属性的转移指令跳转到不在当前段的一个地址
65
Labelcannothavesegmentoverride
段前缀使用出错
66
Musthaveinstuctionagterprefix
在重复前缀REP,REPE,REPNE后面必须有指令
67
CannotoverrideESfordestination
串操作指令中目的操作数不能用其他段寄存器替代ES
68
Cannotaddresswithsrgmentregister
指令中寻找一个操作数,但ASSUME语句中未指明哪个段寄存器与该操作数所在段有关联
69
Mustbeinsegmentblock
指令语句没有在段内
70
CannotuseEVENorALIGNwithbytealignment
在段定义伪指令的定位类型中选用BYTE,这时不能使用EVEN或ALIGN伪指令
71
ForwardneedsoverrideorFAR
转移指令的目标没有在源程序中说明为FAR属性,可用PTR指定
72
IllegalvalueforDUPcount
操作符DUP前的重复次数是非法的或未定义
73
Symbolidalreadyexternal
在模块内试图定义的符号,它已在外部符号伪指令中说明
74
DUPnestingtoodeep
操作数DUP的嵌套太深
75
Illegakuseofundefindeoperand()
不定操作符\"
\"
使用不当.例如\"
DB10HDUP
(2)\"
76
Toomanyvalerforstrucorrecordinitialization
在定义结构变量或记录变量时,初始值太多
77
Anglebracketsrequoredaroundinitializedlist
定义结构体变量时,初始值未用尖括号()括起来
78
Directiveillegalstructure
在结构体定义中的伪指令使用不当.结构定义中的伪指令语句仅二种:
分号(;
)开始的注释语句和用DB,DW等数据定义伪指令语句
79
OverridewithDUPillegal
在结构变量初始值表中使用DUP操作符出错
80
Fieldcannotbeoverridden
在定义结构变量语句中试图对一个不允许修改的字段设置初值
81
Overrideidofwrongtype
在定义结构变量语句中设置初值时类型出错
82
CircularchainofEQUaliases
用等值语句定义的符号名,最后又返回指向它自己.如:
AEQUB
BEQUA
83
Cannotemulatecooprocessoropcode仿真器不能支持的8087协处理器操作码
84
Endoffile,notENDdirective源程序文件无END文件
85
Dataemittedwithnosegment语句数据没有在段内
汇编语言程序设计
1.在MASM编译时产生警告错误“Operandtypesmustmatch”能够忽略吗?
答:
不能,如语句:
MOVAL,BX就会产生上述错误信息,原因是AL和BX两个操作数的字长不匹配。
2.在MASM编译时为什么产生警告错误“Operandmusthavesize”?
如果有类似:
MOV[SI+1],10H的语句会产生此类错误,应改为:
MOVBYTEPTR[SI+1],10H。
因为目标操作数为存储器,源操作数———立即数应指明字长是8位还是16位,若目标操作数为寄存器则不需要。
3.
在编译时为什么产生警告错误“Reservedwordassymbol:
XXXXXX”?
指的定义数据或定义符号的名字时使用了保留字。
如在数据段中出现了:
LENGTHDW256这样的定义时就会产生警告,因LENGTH是取值运算符,作为保留字不应标识名字。
4.
在程序中定义了数据段,并且以VAR命名的表中设有0…..9十个数据,为什么开始的语句:
MOVAL,VAR执行结果不正确?
如果代码段起始没有将数据段基址赋给DS寄存器,将会产生此类运行错误,因段基址不是所设定的数据段的基址。
5.
有数据段定义:
DATASEGMENT/………./DATAENDS/,语句MOVAX,DATA和MOVAX,SEGDATA含义相同吗?
不,前者是取得DATA段的基地址,后者是指取DATA变量所在段的基地址。
如果DATA已定义为数据段的名字,再定义为变量或表的名字会产生编译错误
6.
在数据段中设定名为BUF1的表中存有字符串’Helloctec!
’,后设名为BUF2的表长度为11个字符,初始值设0,在代码段中使用串传送指令实现BUF1——BUF2的传送,没有发现语法和控制结构的错误,为什么结果不对?
如果控制结构和指令形式都没有错,就要检查是否定义ES段,MOVS指令要求源指针为DS:
[SI],目的指针为ES:
[DI],因此应定义ES段;
当然,DS段和ES段可为同一个段。
7.
在编译中指出某行产生“Immediatemodeillegal”错误是什么原因?
指立即数出现在非法的指令形式中,举例来说,如果在数据段定义有:
LENGEQU1000H;
在代码段中有:
LEABX,LENG这样的语句即会出现这类错误,因为EQU伪指令使得编译时将代码中所有的LENG符号用立即数1000H替代,而指令:
LEABX,1000H是非法的。
8.
实验程序中设有宏定义:
DOSFMACROFUNNO/MOVAH,FUNNOINT21H/ENDM/,其中的参数FUN_NO代表什么含义?
FUN_NO是宏定义中的形式参数,宏应用时用实际参数替代,此例中实际参数可以是立即数。
9.
在程序中有这样的语句:
MOVAX,8000H/MOVBL,4/DIVBL/运行时报告算术溢出,为什么?
怎样解决?
除法指令DIV规定,如果除数字长为8位,商的字长超过了8位二进制数的表示范围则为溢出。
上文中被除数为8000H,除数为4,结果:
2000H超过了8位二进制数,即产生溢出错误。
为避免这种情况,可采用移位或减法指令替代除法指令。
10.在程序中有语句:
JCNEXT,引起编译错误“Jumpoutofrangeby18byte(s)”,如何解决?
指条件转移语句超出范围,8088汇编规定条件转移语句的转移范围在:
-128~+127个字节以内,若转移距离超过这一范围,应配合使用无条件转移语句。
原代码可改为:
JNCL1/JMPNEXT/L1:
……………./。
11.为什么语句:
LEAAX,ADDR是正确的,而MOVBL,[AX]是错误的?
前者是取值语句,功能是将ADDR的偏移地址值送到寄存器AX;
后者将AX寄存器作为间接寻址寄存器使用,这在8086/8088指令中是不允许的。
12.利用9号DOS功能调用显示一个字符串,为什么会显示乱码?
常见的情况是定义字符串缺少结尾标志“$”,功能子程序执行时找不到结尾,更正办法是在定义的字符串后面加“$”或ASCII码形式的24H。
13.
在Windows2000中,TD窗口过小,如何把窗口设置的大一些?
按Alt-O键,在下拉菜单中选择Displayoptions项,在弹出的对话框中,用Tab键选Screenlines选项,用←、→键选中“43/50”,按回车。
然后按F5键,使CPU窗口充满TD窗口。
14.
在Windows2000和WIN_XP的运行程序窗口中不出现数字结果怎么办?
1.
首先保证显示数字为标准ASCII码;
2.
设置运行程序的属性为:
全屏幕显示,退出时不关闭窗口。
15.实现两个BCD码表示的十进制数如34和56相加,要求输出BCD码结果;
为什么输入数据应为34H和56H?
BCD码是由四位二进制数码表示一个十进制数字,十进制数34用BCD码表示为00110100B,写为十六进制数即34H;
而加法计算的实际结果为十六进制数34H与56H相加的结果,故需要调整指令DAA将其调整为预期结果的BCD码:
90H。
16.
使用DOS功能调用2号功能显示数字,有语句:
/MOVDL,CL/MOVAH,2/INT21H/为什么显示不出结果?
参数DL应放置数字的ASCII码,而不是数字本身,以上程序中,若CL内是0~9的数值,应添加语句:
ADDDL,30H。
17.
使用算术右移指令SAR移位一次,会影响OF吗?
在MASM宏汇编环境中不会,因为算术右移不改变符号位,符号位被复制到下一位,故最高位和次高位相等,而判断是否溢出的条件是双高位不相等,OF不会被置1。
18.如何编程实现一块内存储区的奇偶校验?
先使用如下程序段:
MOVAL,[SI]/ANDAL,AL/JPNEXT/ORAL,80H/NEXT:
MOV[SI],AL/.将存储区写为偶校验码,再使用:
MOVAL,[SI]/ANDAL,AL/JPOERROR/做校验。
汇编语言源程序的编辑与调试过程
1.怎样在TD环境下载入被调试程序?
方法1:
转到TD.EXE所在目录,在DOS提示符下键入以下命令:
C:
\\ASM>TD↙
进入TD后,按Alt-F键打开File菜单,选择Open,在文件对话框中输入要调试的程序名,按回车。
方法2:
转到TD.EXE所在目录,在DOS提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):
\\ASM>TDHELLO.EXE↙
方法3:
在Windows操作系统中,打开TD.EXE所在目录,把要调试的程序图标拖放到TD的图标上。
2.在TD环境下如何输入编辑汇编指令?
答
(1)用Tab键选择代码区为当前区域;
(2)用方向键把光标移到期望的地址处,如果是输入一个新的程序段,建议把光标移到CS:
0100H处;
(3)打开指令编辑窗口,有两种方法:
一是在光标处直接键入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口。
二是用Alt-F10键激活代码区局部菜单,选择其中的汇编命令,屏幕上也会自动弹出指令的临时编辑窗口。
(4)在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在光标处(替换掉原来的指令),同时光标自动下移一行,以便输入下一条指令。
3.在TD环境下如何查看/修改数据段的数据?
(1)用Tab键选择数据区为当前区域;
(2)使用局部菜单中的“Goto”命令并结合使用方向键把光标移到期望的地址单元(注意数据区的光标是一个下划线),数据区就从该地址处显示内存单元的内容。
(3)若要修改该地址处的内容,则需打开数据编辑窗口。
有两种方法:
一是在光标处直接键输入数据,在输入数据的同时屏幕上就会自动弹出数据编辑窗口。
二是用Alt-F10键激活数据区局部菜单,选择其中的“Change”命令,屏幕上也会弹出数据编辑窗口。
(4)在数据编辑窗口中输入所需的数据,输入完后,按回车,输入的数据就会替代光标处的原始数据。
4.在TD环境下如何修改寄存器内容?
(1)用Tab键选择寄存器区为当前区域;
(2)用方向键把光标移到要修改的寄存器上;
(3)打开编辑输入窗口。
一是在光标处直接键入所需的值,在键入的同时屏幕上就会自动弹出编辑输入窗口。
二是用Alt-F10键激活寄存器区局部菜单,选择其中的“Change”命令,屏幕上也会弹出编辑输入窗口。
(4)在编辑输入框中键入所需的值,然后回车,这个新的值就会取代原来该寄存器的内容。
5.在TD环境下修改某个标志位内容,怎样操作?
(1)用Tab键选择标志区为当前区域;
(2)用方向键把光标移到要修改的标志位上;
(3)按回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 常见 错误信息 解释