匯編語言的編程步驟與調(diào)試方法_第1頁
匯編語言的編程步驟與調(diào)試方法_第2頁
匯編語言的編程步驟與調(diào)試方法_第3頁
匯編語言的編程步驟與調(diào)試方法_第4頁
匯編語言的編程步驟與調(diào)試方法_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、使用文本編 輯軟件匯編程序連接程序匯編語言得編程步驟與調(diào)試方法一、匯編源程序得建立1、使用工具(1) EDIT,記事本等文本編輯軟件,編輯源程序,保存為、a sm文件;(2) ASM.MASM匯編程序,對(duì)源程序進(jìn)行匯編,生成、obj文 件-目標(biāo)文件,以及調(diào)試用、L ST-列表文件與、CRF-交叉引用表;(3) L ink連接程序,對(duì)使用得目標(biāo)文件與庫文件進(jìn)行連接,生 成、ex e文件,同時(shí)調(diào)試用、map 地址映像文件;如果源程序無語法錯(cuò)誤,上述三步將生成可運(yùn)行得、exe文件, 如果運(yùn)行結(jié)果無誤,則完成對(duì)匯編程序得編程,如果運(yùn)行后結(jié)果存在 錯(cuò)誤,需要進(jìn)行調(diào)試。(4) De b ug調(diào)試程序,對(duì)、

2、exe文件進(jìn)行調(diào)試,修改,直到程序正 確。圖3目標(biāo)程序生成步驟圖2、編程過程(1) 用文本編輯軟件,編寫擴(kuò)展名為、asm得源文程序文件。(2) 用匯編程序?qū)幒玫迷次募M(jìn)行匯編。命令行:ma s m *、asm /如果源文件中存在語法錯(cuò)誤,則匯編程序?qū)⒅赋鲥e(cuò)誤類型及位置,可根據(jù)這些 信息重新編輯源文件,直至無語法錯(cuò)誤,匯編后,將生成指定名稱得標(biāo)文件、obj。使用MASM50匯編程序進(jìn)行匯編,輸入命令行 mas m或者masm *、asm 后,根據(jù)提示,輸入文件名,在匯編沒有錯(cuò)誤得情況下,如屏幕所示:匯編程序可生成三個(gè)文件盧、obj,*、Is 1:與*、c rfo水、obj-U標(biāo)文件,用于連接生

3、成可執(zhí)行文件;*、I s卜列表文件(可選),匯編語言匯編得機(jī)器語言與匯編語言對(duì)照表,可用于調(diào)試;次、cr仁交叉引用文件(可選),給出了用戶定義得所有符號(hào)與對(duì)每個(gè)符號(hào)Jnlxl定義、引用得行號(hào)。阿命令提示符.Microsoft Macro Assembler Version 5.00jCopyvight Microsoft Covp 19811985 1987. All Fights vesevued.Object Filename Ugs.0R.T 1 : howSource listing NUL.LST: iCvoss-reference FNIIL CRP1:50722 - 36G7GG

4、 Bytes e(3) U標(biāo)文件得連接命令行:link 嚴(yán)、obj S obj *、lib /連接程序,將多個(gè)口標(biāo)程序及庫文件,連接生成可執(zhí)行得*、exe文件,同 時(shí)可選擇生成*、map文件。map-地址映像文件,給出內(nèi)存地址分配得有關(guān)信息。下圖所示屏幕,為L ink連接兩個(gè)口標(biāo)文件,沒有錯(cuò)誤得情況下,生成*、ee文件。C:Xnasm50link show.obj pageF.objMicrosoft Oueplay Linker* Uers ion 3.60Copriight Miciosof 七 Covp 19831987- fi 11s: vese rued .Rim File SHOW

5、.EXE:List File NUL.MAP1:Libraries .LIB:(4) 執(zhí)行程序執(zhí)行*、exe文件,觀察程序運(yùn)行結(jié)果,如果存在錯(cuò)誤,需要進(jìn)行調(diào)試。調(diào)試工 具DEBUG就是針對(duì)匯編語言程序設(shè)計(jì)得一種調(diào)試工具,熟練使用DEBUG有 助于匯編語言程序員對(duì)于邏輯錯(cuò)誤得調(diào)試。二、匯編程序得調(diào)試1、調(diào)試方法DEB U G工具得調(diào)試文件為可執(zhí)行文件*、ex e,在命令行窗口或者DOS環(huán) 境下,執(zhí)行DEBUG命令:命令行 D e bu g * e x e /DEBUG程序如果正常啟動(dòng),提示符顯示為出現(xiàn)提示符后,根 據(jù)調(diào)試得需要,輸入正確得Deb u g命令,根據(jù)顯示內(nèi)容,修改源文件。2、常用DE

6、BUG命令(1) D命令-內(nèi)存顯示命令命令格式 格式1:D起始地址/格式2: D 起始地址結(jié)束地址IL字節(jié)數(shù)/調(diào)試程序得過程中,可利用該命令可以察瞧指定范圍得內(nèi)存單元得內(nèi)容,以確 定對(duì)內(nèi)存單元得修改就是否正確??梢酝ㄟ^命令指定顯示得范圍(格式2),在不指定顯示長度得情況下(格式1), 將顯示從起始地址開始12 8個(gè)字節(jié)得內(nèi)容,如果只寫D,則將從上一個(gè)D命令顯示 結(jié)束得位置開始顯示I 2 8個(gè)字節(jié)。在內(nèi)存顯示過程中,可以通過“Ctrl+S”鍵 暫停,按任意鍵可繼續(xù)顯示,以防顯示過快,來不及察瞧,另外可以通過“Ctrl+S” 中止該命令得執(zhí)行。(2) E命令一數(shù)據(jù)編輯命令命令格式格式1: E 起始

7、地址列表/格式2:E 起始地址/調(diào)試過程中,為了進(jìn)行程序測(cè)試,需要改變內(nèi)存或者寄存器得數(shù)據(jù),此時(shí)利用 DEBUG得E命令可以非常方便得進(jìn)行修改。E命令可以使用一連串得數(shù)據(jù)對(duì)內(nèi)存連續(xù)地址單元進(jìn)行修改,此時(shí)使用格式 1,也可以修改某個(gè)地址單元得內(nèi)容后,按“空格”鍵,繼續(xù)修改高地址單元內(nèi)容。 使用E命令時(shí),可以同時(shí)配合使用D命令,以確定就是否正確得完成了對(duì)內(nèi)存單 元得修改。(3) U命令-反匯編命令命令格式:U起始地址結(jié)束地址調(diào)試過程中,可以利用U命令將口標(biāo)程序反匯編為匯編程序,以觀察匯編指令 得存放位置,匯編指令得正確與否,對(duì)于無源碼得U標(biāo)程序,還可以利用反匯編獲取LI標(biāo)程序得源碼。4)G命令-運(yùn)

8、行程序命令命令格式;:G=起始地址第一斷點(diǎn)地址第二斷點(diǎn)地址、調(diào)試過程中,可以利用G命令運(yùn)行程序,觀察結(jié)果得正確性,或者設(shè)置斷點(diǎn),利 用G命令觀察程序運(yùn)行到某一位置就是否正確,G命令最多可以設(shè)置1 0個(gè)斷點(diǎn), 當(dāng)程序運(yùn)行置斷點(diǎn)時(shí),停止執(zhí)行,并顯示當(dāng)前所有寄存器與標(biāo)志位得內(nèi)容,以及下 一條將要執(zhí)行得指令。如果G命令無起始地址,則從當(dāng)前CS:IP內(nèi)容為開始運(yùn)行。(5)T命令-單步執(zhí)行命令命令格式 格式1: T=地址格式2:T=地址執(zhí)行指令得條數(shù)調(diào)試過程中,可以利用該指令單步執(zhí)行,從指定地址開始(如果不指定,則從C S:IP開始),執(zhí)行一條指令(格式1)或者執(zhí)行指定條數(shù)得指令(格式2)后,停止執(zhí) 行,

9、并顯示當(dāng)前所有寄存器與標(biāo)志位得內(nèi)容。(6)R命令-寄存器訪問命令命令格式格式1: R格式2:R寄存器名稱一般匯編程序中,會(huì)頻繁得使用寄存器,使用R命令,可以在調(diào)試程序得過程 中方便得進(jìn)行寄存器內(nèi)容得察瞧。如果不指定寄存器名稱(格式1 ),則顯示所有寄 存器與標(biāo)志位內(nèi)容;可以指定需要察瞧得寄存器得名 稱(格式2 ),只顯示察瞧寄存器得內(nèi)容。(7)Q命令-D e bug退出命令命令格式QDebug程序使用結(jié)束后,使用該命令退出Debugo3、Debug使用舉例右邊所示得匯編源程序EX、asm,在命令行窗口中輸入下面命令行:皿” SEGMENTX DB 56 Y DB 67 Z DB 78 RESU

10、LT DB ?DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA BEGAIN:mow ax,data mow ds,ax mow al,x mul al mow dxax mow mul al add div z mov result,al non ah,4ch int 21hCODE ENDSEND BEGAINMASM EX asm /對(duì)EX、asm文件進(jìn)行匯編,如果沒有語法錯(cuò)誤,則生成EX、o bj目標(biāo)文件。輸 入下面命令行:LINK EX、obj /對(duì)U標(biāo)文件進(jìn)行連接,連接后得到可執(zhí)行文件EX、ex e,使用D e bug對(duì)該程序進(jìn) 行調(diào)試。(1

11、)U-反匯編對(duì)EX、exe反匯編后,得到代碼段地址與指令得對(duì)應(yīng)圖如下圖所示。從反匯編得結(jié)果,可以得到指令在代碼段得偏移地址,常與T命令與G命令聯(lián) 合使用,使程序運(yùn)行到固定得位置,查瞧結(jié)果。同時(shí),可以從反匯編代碼中瞧出, 變量會(huì)被匯編為直接尋址方式,使用變量在數(shù)據(jù)段內(nèi)得有效地址表示。U13C1Z0000 13C1:0003 13C1=0005 13C1:0008 13G1=000A 13C1:000C 13G1=000F 13C120011 13G1:0013 13C1=0017 13C1:001A 13C1:001C 13C1:001EB8C0138ED8A00000F6E08BD0A0010

12、0F6E003C2F6360200A2030AB44fTCD2:a* 000(DS=13B0T T,執(zhí)行一步,屏幕上顯示執(zhí)行指令后,通用寄存器、段寄存器與標(biāo)志位得HOU MOU MOU MUL MOU MOU MUL ADDDIUMOUDS.AXAU 00001ALDX.AXAL,0001 ALA 乂,D*BYTE PTB 0002i .al(2)T-單步BX=0000ES=13B0J13C1:0003 8ED8AX=13C0BX=0000DS=13C0ES=13B013C1:0005 A00000 TAX=138 BX=0000DS=13C0ES=13B0F6E0CX=002EDX=0000

13、SP=0000I=0003 DS期MOUCX=002EDX=0000SP=0000SS=13C0CS=13C1IP=0005MOU AL,0000CX=002EDX=0000SP=0000SS=13C0CS=13C1IP=0008MUL ALBP=0000 SI=0000 DI=0000NU UP El PL NZ NA PO NCBP=0000 SI=0000 DI=0000NU UP El PL NZ NA PODS:0000=38BP=0000 SI=0000 DI=0000NU UP El PL NZ NA PO NC狀態(tài),下一條指令,以及指令中操作得存儲(chǔ)器尋址方式對(duì)應(yīng)得內(nèi)存單元得內(nèi)容。 (3 ) G 執(zhí)行根據(jù)反匯編得情況,G斷點(diǎn)常設(shè)置在正常返回DOS調(diào)用之前,即MOV AH, 4 CH,執(zhí)行后,可以通過查瞧寄存器內(nèi)容,或者D命令查瞧內(nèi)存地址單元得內(nèi) 容,檢查程序得運(yùn)行就是否正常。-G 001AAX =3 晅 BX=0000CX=002E DX=0C40SP=0000BP=0000 SI=0000 DI=0000DS=13C0 ES=13B0CST3C1 IP鬥01ANU UP El PL NZ NA PE NC13C1:001A B44C帀OU麗:(4 )

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論