




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、出錯信息在使用MASM5.0對源程序進行匯編時,對于有錯誤的或可置疑的語句,MASM將顯示出相關(guān)出錯或警告信息。出錯信息分為兩類:一類是帶編號的出錯代碼信息。這些錯誤或警告與源程序中的某一個語句(或指令行代碼有關(guān),并賦以相應(yīng)的編碼。在顯示出錯代碼的同時,還給出了簡要的注釋。另一類出錯信息沒有編號,他們是針對整個匯編程序的,而不是針對某一語句行的,因而,只給出了簡要的注釋。一、帶編號的錯誤帶有編號的錯誤信息的顯示格式如下:sourcefile (line:code messagesourcefile是出錯的源程序文件名。如果定義于INCLUDE文件中的宏有錯,則源程序文件名是指引用宏并對其進行展
2、開的那一個程序文件名。line是MASM無法進行匯編的那條語句源程序中的行號。Code是以Microsoft 語言程序格式指定的代碼。它以error或warning開始,后跟5個字符的代碼。第一個字符表示編程語言,匯編語言是字符A;第二個代碼是數(shù)字符,表示警告級別;2表示嚴重錯誤(Severe Errors;4表示嚴重警告(Severe Warnings;5表示建議警告(Advisory Warnings;最后三個數(shù)字是錯誤編號。message是對該錯誤或警告的簡要說明。比如:test.ASM(33:error A006:Phase error between passes上述信息表明,在源程
3、序test.ASM的33行中,有006號嚴重錯誤。下面,將按照編號列出錯誤信息,并給與簡要的解釋。錯誤代碼錯誤描述0Block nesting error塊嵌套錯誤。指嵌套的過程、段、結(jié)構(gòu)、宏或非正常結(jié)束。例如在某嵌套語句序列中,有外層的結(jié)束語句,而無內(nèi)層的結(jié)束語句,所造成的嵌套錯誤。1 Extra characters on line在一語句行中有多余的字幅。指在一行中除了已有該匯編語句的全部信息外,還有多余的字幅。這可能是語句中給出的參數(shù)太多。2Internal errorRegister already define內(nèi)部錯誤寄存器已被定義。這是匯編程序有內(nèi)部錯誤的信息。若發(fā)現(xiàn)該錯誤,請?zhí)?/p>
4、好Product Assistance Request表,并與Microsoft公司聯(lián)系。3 Unkown type specifier標識符類型錯。表明在語句中,使用不正確的類型說明符指定標號和外部量的類型。例如指定類型的關(guān)鍵字的拼寫錯誤:byte誤寫成了byt, near誤寫成了naer。4 Redefinition of symbol標志符重定義。表明有一個標志符在不同的位置,以不同的類型又被重新定義了一次。當在第一次匯編掃描期間,又發(fā)現(xiàn)該標志符第二次被重新定義,則出現(xiàn)該錯誤。5 Symbol is multidefined標志符多重定義。同一標志符兩次被定義。在匯編的第二次掃描中,每當
5、遇到這個標志符,便指示出錯誤。6 Phase error between passes匯編時,由于兩次掃描間的結(jié)果不一致,將產(chǎn)生該類錯誤。例如某一條含糊不清得指令或偽指令使得一個標號的相對地址,在第一次掃描和第二次掃描間發(fā)生了改變,導致兩次掃描間的結(jié)果不一致??梢栽趨R編時,用/D選擇項,如MASM/D命令,便在第一次掃描中生成相應(yīng)的列表文件,以幫助查找錯誤。7 Already has ELSE clause已有ELSE語句。在一個條件匯編塊里,有多余的ELSE語句。8Must be in conditional block必須是在條件塊中。該錯誤表明,在條件塊中有ENDIF或ELSE,但未找到
6、與其對應(yīng)的IF語句。9Symbol not define標志符未定義。在程序中引用了未定義的標志符。10Syntax error語法錯誤。在程序中出現(xiàn)了匯編程序(MASM不能識別的非法語句。11Type illegal in context制定的類型非法,例如將一過程的類型錯誤的指定為BYTE,而不是指定為NEAR或FAR。12Group name must be unique對于由多個段組成的段GROUP,其名字必須是唯一的,不得與其他符號同名。13Must declared during pass 1必須在第一遍掃描期間定義。在第一編掃描期間,如果一個符號再定義之前就被引用,就會出現(xiàn)這類錯
7、誤。例如符號sizex再定義前,就在語句if sizex語句中使用。14Illegal public declartion一個標志符被非法的說明為PUBLIC類型。15Symbol already different kind一個已定義的符號又重新被定義為不同類型的符號。例如某個段名被用作變量名。16Reserved word used as symbol把匯編語言的保留作為標志符使用。17Forward reference illegal非法的前向引用。在第一次掃描期間,發(fā)現(xiàn)了某符號在未定義前,就被其他語句引用。例如:DB count dup(0Count equ 2018Operand m
8、ust be register操作數(shù)必須是寄存器。表明在該操作數(shù)位置應(yīng)該使用寄存器作為操作數(shù),而不能使用其他操作數(shù)。20 Operand must be segment or group操作數(shù)必須是段名或group名,例如,再ASSUM語句中,應(yīng)該一個段名或段GROUP名指定給段寄存器,而不能將標號或變量名等指定給段寄存器。22 Operand must be type specifier操作數(shù)必須是類型說明。例如NEAR、FAT等。23 Symbol already defined locally某標識符已在模塊內(nèi)定義為局部型,但又企圖用EXTRN說明外部標識符。24 Segment par
9、ameters are change段參數(shù)被改變。例如在定義具有相同段名的兩個段中,它們的段參數(shù)不一致。25 Improper align/combine type段定義語句中,定義類型/組合類型不正確。26 Reference multidefined symbol指令中引用了多重定義的標志符27 Operand expected需要一個操作數(shù)。例如指令中有操作符,而無操作數(shù)。28 Operator expected需要一個操作數(shù)。例如指令中只有操作數(shù),而沒有操作符。30 Division by 0 or overflow除數(shù)為0,或者除法溢出31 Negative shift count在
10、運算符SHR或SHL表達式中,移位次數(shù)為負數(shù)。32 Operand type must match操作數(shù)類型不匹配。例如在雙操作數(shù)指令中,源和目的操作數(shù)的類型不一致。34 Illegal use of external外部符號的使用不正確。35 Must be record or field name必須是記錄名或記錄字段名。在操作數(shù)中,應(yīng)該是記錄名或記錄字段名,但這里卻是其他符號。38 Operand must have size應(yīng)指明操作數(shù)的長度大小,即在操作數(shù)前加上BYTE PTR,WORD PTY,DWORDPTY等知名長度大小操作符。33 Left operand must have
11、 segment在一個段超越表達式中,操作符“:”左邊必須是段寄存器名,段組名或段名。39 One operand must be constant其中一個操作數(shù)必須是常熟。例如在“+”運算符的表達式中,誤將兩個內(nèi)存操作數(shù)相加。在這種表達始終必須有一個是常數(shù)。40 Operand must be in same segment ,or one must be constant減操作符“-”使用不正確。例如兩個操作數(shù)不在同一個段中(一個在代碼段而另一個在數(shù)據(jù)段中,這是一個必須是常數(shù)。42 Constant expected要求給出一個常數(shù)。例如給出了一個不能計算出常數(shù)的操作數(shù)或表達式。43 Op
12、erand must have segmentSEG運算符使用錯,例如SEG運算符是一個常數(shù),而無法求出段屬性。44 Must be associated have with data在需要與數(shù)據(jù)段有關(guān)的項位置上,出現(xiàn)了與代碼段有關(guān)的項。45 Must be associated have with code在需要與代碼段有關(guān)的項位置上,出現(xiàn)了與數(shù)據(jù)段有關(guān)的項。46 Multiple base registers在操作數(shù)中使用了多個基地址寄存器。例如MOV AX,BX+BP語句。47 Multiple index registers在操作數(shù)中使用了多個變址寄存器。例如MOV AX,SI+DI語
13、句。48 Must be index or register指令重要就是用變址或基址寄存器。例如MOV AX,DX。49 Illegal use register非法使用寄存器。50 Value out of range數(shù)值太大超過范圍。例如MOV AL,300.51 Operand not in current CS ASSUME segment操作數(shù)不在當前代碼段內(nèi)。通常指轉(zhuǎn)移指令不在當前CS段內(nèi)。52 Improper operant type操作數(shù)類型不恰當,只在某語句中給出了不正確的操作數(shù)。例如在語句MOVMEM1,MEM2中,兩操作數(shù)同為內(nèi)存操作數(shù)。53 Jump out of r
14、ange by number of bytes條件轉(zhuǎn)移指令的跳轉(zhuǎn)超過了規(guī)定的范圍。對于8086,跳轉(zhuǎn)范圍是:-128127;對于80386及其后及處理器,跳轉(zhuǎn)范圍是:-3276832767。55 Illegal register value非法寄存器的值。目標代碼中表達寄存器的值超過了7。56 Immediate mode illegal指令中不能立即操作數(shù),例如MOV DS,DATA和MOV CS,2000H中,直接將段名指示的段基值、常數(shù)2000H傳送給DS和CS。57 Illegal size of operand對于某些指令來說,操作數(shù)的大小不適當。例如對于8086,指令I(lǐng)NC mem
15、32就使用了不適當?shù)?2位操作數(shù)mem3258 Byte register illegal在指令總需要對字或雙字的寄存器操作數(shù)。而使用了字節(jié)寄存器。例如PUSHDL指令。59 Illegal use CS register使用CS寄存器錯。例如在MOVCS,AX中,CS作為畝的操作數(shù)。60 Must be accumulator register在指令總必須使用AL,AX,EAX等累加寄存器。例如在IN和OUT指令中。61 Improper use of segment register在不允許使用段寄存器的指令中使用了段寄存器。例如指令I(lǐng)NC CS。62 Missing or unreach
16、able code segment缺少代碼段或不可到達的代碼段。通常指在ASSUME語句中,沒有指定CS與段間的關(guān)聯(lián)關(guān)系63 Operand combination illegal在雙操作數(shù)指令中,兩個操作數(shù)間的組合出錯。例如指令XCHG mem1,mem2。64 Near jump/CALL to difference code segment試圖用近段轉(zhuǎn)移或段內(nèi)CALL,轉(zhuǎn)移到非當前代碼段的鱉的段中。65 Label can not have segment override段超越前綴使用錯。66 Must have instruction after prefix在重復前綴指令REP,R
17、EPZ,REPNZ等指令后,必須有一條重復被執(zhí)行的指令。67 Cannot override ES for destination在串操作指令中,不允許用其他段或段寄存器來替代ES.例如指令STOS DS:dest。68 Cannot address with segment register由于在ASSUME語句中未說明段與段寄存器的關(guān)聯(lián)關(guān)系,因而在指令中不能對該段中的數(shù)據(jù)進行訪問69 Must be in segment block應(yīng)該在段中的偽指令(如EVEN,ALIGN,而沒有用在段中。70 Cannot use EVEN or ALIGN byte alignmentEVEN和ALI
18、GN偽指令用在了一個說明字節(jié)邊界的段內(nèi)。71 Forward reference needs override or FARCALL或JUMP指令試圖轉(zhuǎn)移到一個事先未被說明為遠段屬性的標號處??梢栽谥噶钪惺褂肍AR PTR進行指定。72 Illegal value foyr DUP count在DUP操作符前的重復次數(shù)值非法,即可能為負數(shù)或是無法求出值。73 Symbol is already external一個符號已經(jīng)被說明為外部量,但后來又在模塊中重新定義。74 DUP nesting too deep操作符DUP嵌套層次超過17層。75 Illegal use of undefined
19、 operand(?未定義操作數(shù)“?”使用不當。例如在語句MOV AL,?核數(shù)據(jù)定義偽指令STUF DBDUP(?+5中。76 Too many values for structure or record initialization在定義記錄及結(jié)構(gòu)變量時,給定的初始值太多。77 angle brackets required around initialized list定義結(jié)構(gòu)變量時,初始化值未用尖括號“<>”括起來。78 Directive illegal in structure結(jié)構(gòu)中的偽指令使用不當。在結(jié)構(gòu)中使用的偽指令有三種:一種是數(shù)據(jù)定義偽指令DB,DW等,一種是用
20、于注釋語句前的分號“;”,一種是條件匯編偽指令。79 Override with DUP illegal在結(jié)構(gòu)變量初始化表中,使用DUP操作符出錯。80 Field cannot be overridden在定義結(jié)構(gòu)變量時,試圖對結(jié)構(gòu)中不可初始化的字段設(shè)置初值。83 Circular chain of EQU aliases在用EQU定義符號常量時,不能采用循環(huán)定義方式。例如:XA EQU XBXB EQU XA84 Cannot emulate coprocessor opcode無法仿真協(xié)處理器操作碼85 End of file, no END directive在源程序文件中,未用END
21、偽指令結(jié)束源程序。86 Data emitted with no segment生成代碼或數(shù)據(jù)的語句部在定義的段中。* 錯誤代碼8797是在程序中使用條件錯誤偽指令(Assembly-time error時而產(chǎn)生。錯誤的產(chǎn)生與使用的條件錯誤偽指令相關(guān)。87 Forced errorpass 1用條件錯誤偽指令。ERR1在第一次掃描中無條件的產(chǎn)生的錯誤。88 Forced errorpass 2用條件錯誤偽指令。ERR1在第二次掃描中無條件的產(chǎn)生的錯誤。89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 Forced error 用條件錯誤偽
22、指令。ERR 無條件產(chǎn)生的錯誤。 Forced errorexpression true (0 用條件錯誤偽指令。ERRE 測試表達式,當結(jié)果為 0 時而產(chǎn)生的錯誤。 Forced errorexpression false (not 0 用條件錯誤偽指令。ERRNZ 測試表達式,當結(jié)果不為 0 時而產(chǎn)生的錯誤 Forced errorsymbol not defined 用條件錯誤偽指令。ERRENDEF 檢測一個標識符,若該表識符未定義而產(chǎn)生的錯 誤。 Forced errorsymbol defined 用條件錯誤偽指令。ERRENDEF 檢測一個標識符,若該表識符已定義而產(chǎn)生的錯 誤。
23、 Forced errorstring blank 用條件錯誤偽指令。 ERRB 檢測傳送給 MACRO 的實參, 若其為空, 則產(chǎn)生的錯誤。 Forced errorstring not blank 用條件錯誤偽指令。ERRB 檢測傳送給 MACRO 的實參,若其不為空,則產(chǎn)生的錯 誤。 Forced errorstring identical 用條件錯誤偽指令。ERRB 檢測傳送給 MACRO 的某兩個實參,若其相同,則產(chǎn)生 的錯誤。 Forced errorstring identical 用條件錯誤偽指令。ERRB 檢測傳送給 MACRO 的某兩個實參,若其不相同,則產(chǎn) 生的錯誤。 W
24、rong length for override symbol 在定義結(jié)構(gòu)變量并給某字段賦值時, 由于賦給的值太大而無法存放時。 產(chǎn)生的錯誤。 Line too long expanding symbol 使用 EQU 偽指令定符號常量時, 由于表達式太長而致使匯編程序內(nèi)部緩沖區(qū)溢出, 而產(chǎn)生錯誤。 Impure memory reference 使用特權(quán)指令(Privileged instruction)和選擇項/P 時,發(fā)現(xiàn)不適合的存儲器引用。 例如將一個數(shù)據(jù)存儲到代碼段德 cword 單元中: MOV CS : cword,data。 這種操作數(shù) 在實模式中允許的,但在保護模式重視不允許
25、的。 Missing data: zero assumed 指令中缺少操作數(shù),MASM 用 0 替代它。例如語句“MOV AX,” 被 MASM 假定為 MOV AX,0。 Segment near(or at 64k limit 這個錯誤是由 80286 處理器的缺陷引起的。 在保護模式下, 代碼段中只差幾個字節(jié) 就要到達 64k 邊界時,而產(chǎn)生的錯誤。 Align must be power of 2 使用 ALIGN 偽指令定位時,邊界定位參數(shù)必須是 2 的冪。例如 ALIGN 4。 Jump within short distance 當 JUMP 指令的跳轉(zhuǎn)范圍在128+127 范圍
26、內(nèi)時,應(yīng)該使用 SHORT 操作符,使 指令更精簡、 有效。 例如跳轉(zhuǎn)目的地 targer 在128+127 的范圍內(nèi), JUMP SHORT 用 target。 Expected element 在指令中缺少某些項(例如標點符號)或操作符而引發(fā)的錯誤。例如在定義一個結(jié) 構(gòu) xtr1 的語句中,誤寫為:xtr1xtruc(,則顯示信息:expected 106 Line too long 源程序語句行太長,超過 MASM 允許的最大長度 128 個字符。 107 Illegal digit in number 或 Non-digit in number 按當前進位制表示的常數(shù)中,有非法的數(shù)。例
27、如 xa db 23A 108 Empty string not allowed 不允許用語句 null db,定義一個空串。如果要定義一個空串,必須用 null db 0 指令。 109 Miss operand 在這條指令或偽指令中缺少操作數(shù)。 110 Open parenthesis or bracket 缺少括號,只是他們不配對。例如 MOV CX,(length var *2,或 MOV AX,SI。 111 Directive must be in macro 一條只能用于宏定義中的偽指令,卻用在宏塊之外。 112 Unexpected end of line 一條語句非正常結(jié)束,
28、但 MASM 不能確定究竟缺少什么信息。 113 Cannot change processor in segment 在某一個段內(nèi)使用了處理器微指令(如.80386) 。通常,處理器偽指令應(yīng)寫在段定 義前,或者段間,或者相反,而不能在段內(nèi)。 114 Operand size not match segment word size 操作數(shù)的尺寸大?。╯ize)與段的大小不匹配。也就是說,在 16 位段中使用了 32 位操作數(shù),或者相反。 115 Address size not match segment word size 地址尺寸大小(size)與段的大小不匹配。也就是說,在 16 位段中
29、使用了 32 位地 址,或者相反。 二:不帶編號的錯誤信息 對于有的錯誤是無法具體指名是哪一語句產(chǎn)生的,這些錯誤為給出編號。通常,這些錯誤可 能是由命令行的錯誤、存儲器分配錯誤及訪問文件錯誤。 1 訪問文件錯誤 MASM 再讀取文件、處理和存儲過程中,可能發(fā)生的錯誤。這些錯誤可 能使磁盤空間不足、文件被損壞和其他與文件操作的錯誤。 End of file encountered on input file 在未讀完文件時,遇到文件結(jié)束符 Include file filename not found 未找到 include 文件 filename Read error on standard input 讀標準輸入設(shè)備錯 Unable to access input file:filename 無法存取輸入文件:filename Unable to open cref file:filename 無法打開交叉引用文件:filename Unable to open input f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年城陽幼師考試試題及答案
- 2025年啟東工作面試題及答案
- 第25課+中華人民共和國成立和向社會主義的過渡+教學設(shè)計 高一上學期統(tǒng)編版(2019)必修中外歷史綱要上++
- 2025年白酒廠家面試題及答案
- 2025年gb7258-2017試題及答案
- 2025年農(nóng)村自媒體考試題及答案
- 2025年高考數(shù)學二輪復習:高級應(yīng)用函數(shù)的周期性、單調(diào)性、奇偶性及對稱性特性以解析函數(shù)性質(zhì)問題(講義)(原卷版)
- 八年級歷史下冊第四單元民族團結(jié)與祖國統(tǒng)一第13課香港和澳門的回歸備課資料新人教版
- 京津魯瓊專用2025版高考英語二輪復習專題一閱讀理解第二部分第二講做出推理和判斷-推理判斷題專題強化訓練含解析
- 通史版2025版高考歷史大二輪復習課時作業(yè)10工業(yè)文明的到來近代后期的世界
- 探究語言溝通聯(lián)合心理護理在精神疾病護理中的應(yīng)用效果
- 管理百年知到章節(jié)答案智慧樹2023年南昌大學
- 汽車維修工高級考試試題含參考答案
- 組織行為學(對外經(jīng)濟貿(mào)易大學)智慧樹知到答案章節(jié)測試2023年
- 日間手術(shù)管理制度考核試題及答案
- avolites tiger touch ii v7.0操作說明書添加面板按鍵介紹
- 部編人教版小學五年級道德與法治下冊全冊完整課件ppt
- 頂罩沖壓工藝與模具設(shè)計畢業(yè)設(shè)計論文
- 分離工程試習題庫-葉慶國
- 山財自考審計學37作業(yè)(已填好答案)
- 電纜線纜生產(chǎn)企業(yè)(線纜廠)安全生產(chǎn)三項制度責任制+制度+規(guī)程
評論
0/150
提交評論