![匯編語言上機(jī)調(diào)試概要_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e91bd5a6-791d-4c94-8439-0052de59c204/e91bd5a6-791d-4c94-8439-0052de59c2041.gif)
![匯編語言上機(jī)調(diào)試概要_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e91bd5a6-791d-4c94-8439-0052de59c204/e91bd5a6-791d-4c94-8439-0052de59c2042.gif)
![匯編語言上機(jī)調(diào)試概要_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/14/e91bd5a6-791d-4c94-8439-0052de59c204/e91bd5a6-791d-4c94-8439-0052de59c2043.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、匯編語言上機(jī)調(diào)試一、為何需要調(diào)試?一般匯編語言都要經(jīng)過編輯、編譯、連接等步驟生成可執(zhí)行文件,如果在編譯、連接之后沒有發(fā)現(xiàn)錯誤,這只能說明你的程序沒有語法錯誤,在運(yùn)行的時候,并不一定就得到正確的結(jié)果,如果得到的結(jié)果與你所期望的不同,怎么辦?這時候就需要對這個可執(zhí)行的文件進(jìn)行調(diào)試。;下面的源代碼完成的功能:把數(shù)據(jù)段中的申stringl傳送到附加段的string2中。datasegment定義數(shù)據(jù)段stringldb'assemblylanguage'dataendsextrasegment定義附加段string2db17dup(?extrasegmentcodesegment定義代
2、碼段mainprocfarassumecs:code,ds:data,es:extrastart:pushdsxorax,ax;ax寄存器活零,作用同subax,ax一樣pushaxmovax,data把數(shù)據(jù)段地址裝入ds寄存器movds,axmovax,extra把附加段地址裝入es寄存器moves,axleasi,string1把源申首址裝入si寄存器leadi,string2;把目的申首址裝入di寄存器movcx,17;把字符申長度裝入cx寄存器cld;活方向標(biāo)志,在申處理時,地址自動增加repmovsb垣復(fù)申傳送操作,重復(fù)次數(shù)放在cx中retmainendpcodeendsendsta
3、rt二、如何進(jìn)行調(diào)試?假設(shè)上述代碼經(jīng)編譯、連接后生成的可執(zhí)行文件是example.exe1、在DOS提示符下鍵入debug命令。d:masm>debugexample.exe這時候就顯示提示符-,就可在這個短線后輸入debug命令2、u反匯編命令【格式】-u起始地址終止地址【說明】這里方括號里的內(nèi)容是可選的【功能】將機(jī)器代碼反匯編成匯編指令【結(jié)果】鍵入u后顯示信息如下:11141DIEIS141D09612BCQ&UB網(wǎng)SK111Detmsbm&iiakL41DHOUAX14L?141DG007BE址WJU夠MX141DBS87HOUAKL4ia141&SECdH
4、OUESrAK141Deaerleasi.caaaoi0912LEADI.C0»91L41D腳航6日911派HOU141DFCCLD1416aaiAF5rep五1410A4HOUSSaaicCBRELF最左邊給出的程序的段地址:偏移地址,即CS:IP值,右邊是匯編語言指令,中間是匯編語言指令對應(yīng)的機(jī)器語言指令。注意:調(diào)試程序默認(rèn)的數(shù)制是十六進(jìn)制。3、g設(shè)置斷點(diǎn)命令【格式】-g斷點(diǎn)地址【說明】啟動程序,設(shè)置斷點(diǎn)【結(jié)果】假如我們把斷點(diǎn)設(shè)在CS:IP=141D:0004。在debug提示符-下鍵入g4(g和4之間可以有空格,也可以沒有空格結(jié)果如下:-u141d:000aIEPUSHDS14
5、10:0012BC0£UB141D:CM3O3睫push此141D:9W4麗1914novAX.141?141D;WQ7«i-imronran皿9na-413-4dmHOUtcmiDSrAXMvt事知n程序停在斷點(diǎn)處,并顯示出所有寄存器以及各標(biāo)志位的當(dāng)前值,最后一行給出下一條將要執(zhí)行指令的地址、機(jī)器語言指令及匯編語言MOVAX,1419。我們可以從顯示的寄存器的內(nèi)容來了解程序運(yùn)行是否正確。從圖中可以看出各個段的16位段基地址值,如(DS=1419H,(ES=141BH,(SS=1419H,(CS=141DH。4、t單步執(zhí)行命令g命令設(shè)置了斷點(diǎn)之后,從這個斷點(diǎn)開始,每鍵入一次
6、t命令,就按順序執(zhí)行一條指令,這樣我們就可以跟蹤程序的運(yùn)行。通過查看寄存器和存儲單元的內(nèi)容,有利丁查找程序中的算法錯誤或邏輯錯誤?!靖袷健縯鍵入單步調(diào)試命令,運(yùn)行結(jié)果如下:湖。麗IEPUSHDS2BC0SUBAX.AX141。涸呃3bePUSHAX141D湖904B81914HOUfiXa4L?141D=6007BEDSHOU胸際DS1C14HOUAM-141B可以看出,AX寄存器中原來的數(shù)0000已經(jīng)被新的數(shù)1419替換了。下一條即將執(zhí)行的指令是MOVDS,AX,我們繼續(xù)執(zhí)行單步調(diào)試命令。繼續(xù)執(zhí)行單步調(diào)試命令:fiX=1419BX=0000CX=085DDX=0000SP=FFFCBP=00
7、00SI=000DI=0000DS=1419ES=140988=1419CS=141DIP=0009NUUPElPLZRNAPENGB81B14HOUAXr141B可以看出,DS寄存器中原來的數(shù)1409已經(jīng)被新的數(shù)1419替換了。我們繼續(xù)執(zhí)行單步調(diào)試命令,程序就可以一步一步地往下執(zhí)行。5、d顯示存儲單元的內(nèi)容命令對丁我們這個程序,由丁它是要求把存儲器數(shù)據(jù)段中的一申字符傳送到附加段中,所以單從寄存器或在DOS提示符下鍵入可執(zhí)行文件名是看不到運(yùn)行結(jié)果的,因而需要用d命令分別查看數(shù)據(jù)段和附加段的有關(guān)區(qū)域的內(nèi)容?!靖袷健?d段基址:偏移地址【結(jié)果】如果我們要查看數(shù)據(jù)段內(nèi)0偏移地址開始的存儲單元的內(nèi)容,
8、可以鍵入如下的命令(假設(shè)程序已運(yùn)行到RET指令處,即CS:IP=141D:001C:-tnx-1419BK=0000CX=005DDK=0000SP=FFFCBP=000081=0000PI=0000DS=141?EE=1409SS=141?C£=141DIF=0009HUUPElPLZRNAPENO141D:0009B81B14MOU-<1141?;a6173?365恥626C79-206C616E67?56167mwenhly】虱叫岫91419=BE)1865BO000008080080-OBBO00B000000000e最左邊是數(shù)據(jù)段基地址:偏移量,中間是存儲單元的內(nèi)容,
9、每行為16個字節(jié),為一個小段(Paragraph最右邊為對應(yīng)的ASCII碼,不能顯示的ASCII字符以點(diǎn)號顯示??梢钥闯?,我們定義的字符申已顯示在數(shù)據(jù)段開始的存儲單元中,字符申的首地址就是位丁數(shù)據(jù)段0偏移處。該圖顯示的是申操作結(jié)束之后的結(jié)果。從圖的右邊我們還可以看出,在數(shù)據(jù)段偏移地址0020H處乂存放著同樣的字符申,我們在數(shù)據(jù)段中只定義了一次,為什么在這里卻顯示了兩次呢?原來1419:0020的地址恰恰就是附加段的首地址,1419:0020轉(zhuǎn)換成物理地址是1419X0+0020=141B0H,而附加段的首地址是141B:0000轉(zhuǎn)換成物理地址是141BX10+0000=141B0H,二者相等,
10、從這里也可以看出,經(jīng)過申移動操作后,數(shù)據(jù)段中的申已成功的移到了附加段中,這還可以從下面看出。如果我們要查看附加段內(nèi)0偏移地址開始的存儲單元的內(nèi)容,可以鍵入如下的命令:-tn«=1419BK=0000CX=005DDK=0000SP=FFFCBP=0000SI=0000DI=0000DS=1419ES=14M9SS=1419C£=141DIP=0009NUUPElPLZBMPEHC141D:0009B81B14MOU-d!4iy-R1419:n»(tkl4-flfl.f3ii9-4fl617373656D/leniaQian626C?9-2fieC616E67756
11、16?na£3.oaon心丑ann»aanoonassenblylangucig同樣,最左邊是附加段基地址:偏移量,中間是存儲單元的內(nèi)容,每行為16個字節(jié),為一個小段(Paragraph最右邊為對應(yīng)的ASCII碼,不能顯示的ASCII字符以點(diǎn)號顯示。從圖的最右邊可以看出,經(jīng)過是申移動操作結(jié)束之后,數(shù)據(jù)段中的字符申已成功的移到了附加段中。6、r顯示寄存器內(nèi)容命令【格式】r寄存器名方括號中寄存器名是可選的,如果沒有鍵入寄存器名,則顯示所有寄存器的內(nèi)容?!窘Y(jié)果】(1顯示全部寄存器的內(nèi)容,可鍵入如下命令:ftX=141BBX=00OCX=0000DX=0000SP=FFFCBP=0000SI=0011DI=0011DS=1419ES=141BSS=1419CS=141DIP=001CNUUPElPLZRNAPENC141B:001CCBREIF(2顯示ax寄存器的內(nèi)容,可鍵入如下命令:fiX=141BDS-1419ax中原有的值。如果輸入1234后ax的內(nèi)最后一行的冒號提示以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆河北省高職單招數(shù)學(xué)等差專項練習(xí)
- 2024-2025學(xué)年廣東省平遠(yuǎn)縣實(shí)驗(yàn)中學(xué)高三上學(xué)期第二段考?xì)v史試卷
- 2025年預(yù)付商業(yè)裝修工程合同范文樣式
- 2025年光伏組件市場策劃購銷合同
- 2025年熱量表項目提案報告模板
- 2025年專業(yè)紅娘服務(wù)合同文本
- 2025年策劃版集體土地征收補(bǔ)償協(xié)議范本
- 2025年住宅翻新管理協(xié)議書
- 2025年健身導(dǎo)師聘請合同模板
- 2025年自動酸雨采樣器及測定儀項目規(guī)劃申請報告模范
- 鋼樓梯計算(自動版)
- 耳鼻咽喉科臨床診療指南
- 第二部分-3 植物纖維化學(xué)部分-纖維素
- 民法原理與實(shí)務(wù)課程教學(xué)大綱
- 2019北師大版高中英語選擇性必修四單詞表
- 園藝產(chǎn)品的品質(zhì)講義
- 鋼筋混凝土框架結(jié)構(gòu)工程監(jiān)理的質(zhì)量控制
- 桃花節(jié)活動方案
- 社區(qū)醫(yī)院建設(shè)標(biāo)準(zhǔn)
- 變更戶主情況登記表
- 個人所得稅稅率表【自動提取稅率計算】
評論
0/150
提交評論