匯編_DEBUG的使用_第1頁
匯編_DEBUG的使用_第2頁
匯編_DEBUG的使用_第3頁
匯編_DEBUG的使用_第4頁
匯編_DEBUG的使用_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 調試程序的使用調試程序的使用熟練使用調試程序是學習和掌握匯編語熟練使用調試程序是學習和掌握匯編語言的關鍵!言的關鍵!教學重點教學重點了解了解DEBUGDEBUG中幾個主要命令的熟練使用中幾個主要命令的熟練使用用用DEBUG寫一個匯編程序寫一個匯編程序DEBUG的定義的定義DEBUGDEBUG是專門為匯編語言設計的調試工具是專門為匯編語言設計的調試工具可以可以檢查檢查、修改修改、存儲單元存儲單元和和寄存器寄存器的內容的內容可以裝入、存儲及運行目標程序可以裝入、存儲及運行目標程序也可用也可用DEBUGDEBUG匯編簡單的匯編語言程序匯編簡單的匯編語言程序但一般人們更多的是用它作為調試工具但一般人

2、們更多的是用它作為調試工具DEBUGDEBUG是匯編語言程序員分析、跟蹤、修改指是匯編語言程序員分析、跟蹤、修改指令程序的有效工具。令程序的有效工具。DEBUG啟動時的初始化動作啟動時的初始化動作段寄存器段寄存器CSCS、DSDS、ESES和和SSSS置為置為DEBUGDEBUG程序后程序后的第一個段。的第一個段。 指令指針寄存器指令指針寄存器IPIP置為置為100H100H(程序段前綴(程序段前綴PSPPSP后的第一個語句)后的第一個語句) 堆棧指針堆棧指針SPSP置為堆棧段的段末置為堆棧段的段末 其余通用寄存器均置為其余通用寄存器均置為0 0 ,標志寄存器置為標志寄存器置為下述狀態(tài):下述狀

3、態(tài):NV UP EI PL NE NA PO NCNV UP EI PL NE NA PO NC 如果如果DEBUGDEBUG命令行含有文件名,段寄存器命令行含有文件名,段寄存器DSDS和和ESES指向指向程序段前綴程序段前綴PSPPSP(Program Segment Program Segment PrefixPrefix) ,寄存器,寄存器BXBX和和CXCX含有程序長度含有程序長度DEBUG常用命令常用命令-D命令命令顯示存儲單元的命令顯示存儲單元的命令格式為:格式為:D address D address 或或 DrangeDrange 例例1: 1: D 100D 100功能:功能

4、:查看偏移地址為查看偏移地址為100H100H處存儲單元的內容處存儲單元的內容 例例2:2: D 100 200D 100 200功能:功能:查看偏移地址為查看偏移地址為100H200H100H200H處存儲單元的內容處存儲單元的內容我們知道:物理地址是由我們知道:物理地址是由段地址段地址: :偏移地址偏移地址來決定的。來決定的。這里沒寫段地址默認為這里沒寫段地址默認為DSDS。若要查看別的段需用段超越。若要查看別的段需用段超越前綴前綴, ,如:如:D ES:100D ES:100DEBUG常用命令常用命令-E命令命令輸入或修改存儲單元命令輸入或修改存儲單元命令(edit)q用給定的內容列表來

5、替代指定范圍的存儲單元用給定的內容列表來替代指定范圍的存儲單元內容,格式:內容,格式:E 地址地址 內容列表內容列表例例1:-E DS:100 F3XYZ8D-E DS:100 F3XYZ8D;用五個字節(jié)替代存儲單元;用五個字節(jié)替代存儲單元DSDS:01000100到到01040104的原內容的原內容 q逐個單元相繼修改的方法,格式:逐個單元相繼修改的方法,格式:E 地址地址例例2:-E CS:100;回車后可鍵入新的內容;回車后可鍵入新的內容DEBUG常用命令常用命令-F命令命令直接填寫存儲單元內容的命令直接填寫存儲單元內容的命令Fillq格式:格式:Fill range listq例如:例

6、如:F CS:0100 L5 F3XYZ8D; ;使使CS:0100-0104CS:0100-0104單元包含指定的五個字節(jié)的內容單元包含指定的五個字節(jié)的內容q如果如果listlist中的字節(jié)數(shù)超過指定的范圍,則忽略超中的字節(jié)數(shù)超過指定的范圍,則忽略超過的項過的項q如果如果listlist的字節(jié)數(shù)小于指定范圍,則重復使用的字節(jié)數(shù)小于指定范圍,則重復使用listlist填入,直到填滿指定的所有單元為止填入,直到填滿指定的所有單元為止 DEBUG常用命令常用命令-R命令命令檢查修改寄存器的命令檢查修改寄存器的命令-R(register)q顯示顯示CPU內所有寄存器內容及標志位狀態(tài)內所有寄存器內容及

7、標志位狀態(tài) 格式格式: Rq顯示和修改某個寄存器內容顯示和修改某個寄存器內容 格式格式:R 寄存器名寄存器名 例:例:R CX q顯示和修改標志位狀態(tài)顯示和修改標志位狀態(tài) 格式格式:R FDEBUG常用命令常用命令-A命令命令匯編命令匯編命令A(assemble)q格式:格式:A addressq在指定地址處開始編寫匯編程序在指定地址處開始編寫匯編程序q該命令允許鍵入?yún)R編語言語句,并能把它該命令允許鍵入?yún)R編語言語句,并能把它們匯編成機器代碼,相繼地存放在從指定們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區(qū)中。地址開始的存儲區(qū)中。q必須注意:必須注意:DEBUGDEBUG把鍵入的數(shù)字均看成

8、十把鍵入的數(shù)字均看成十六進制數(shù),所以如要鍵入十進制數(shù),則其六進制數(shù),所以如要鍵入十進制數(shù),則其后應加以說明,如后應加以說明,如100D100D。 A A命令舉例命令舉例: :- -A A 127C:0100 127C:0100 mov dx,010Bmov dx,010B 127C:0103 127C:0103 mov ah,09mov ah,09 127C:0105 127C:0105 int 21int 21 127C:0107 127C:0107 mov ah,4cmov ah,4c 127C:0109 127C:0109 int 21int 21 127C:010B 127C:010B

9、 db THIS IS AN db THIS IS AN EXAMPLE,$EXAMPLE,$ 127C:011E 127C:011E - -r cxr cx CX 0000 CX 0000 : :011E011E - -n n - -w w Writing 0011E bytes Writing 0011E bytes - -q q C:C:2 2DEBUG常用命令常用命令-G命令命令運行命令運行命令G(go)q格式:格式:G=G=地址地址11地址地址22地址地址33 q其中,地址其中,地址1 1指定了運行的起始地址指定了運行的起始地址q如不指定則從當前的如不指定則從當前的CS:IPCS:I

10、P開始運行。開始運行。q后面的地址均為斷點地址后面的地址均為斷點地址q當指令執(zhí)行到斷點時,就停止執(zhí)行并顯示當指令執(zhí)行到斷點時,就停止執(zhí)行并顯示當前所有寄存器及標志位的內容,和下一當前所有寄存器及標志位的內容,和下一條將要執(zhí)行的指令。條將要執(zhí)行的指令。 DEBUG常用命令常用命令-T命令命令跟蹤命令跟蹤命令T(Trace)q逐條指令跟蹤逐條指令跟蹤 q格式:格式:T=T=地址地址 q從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內容及標志位的值。器內容及標志位的值。q如未指定則從當前的如未指定則從當前的CS:IPCS:IP開始執(zhí)行。開始執(zhí)行。 q多

11、條指令跟蹤多條指令跟蹤q格式:格式:T=T=地址地址條數(shù)條數(shù) q從指定地址起執(zhí)行從指定地址起執(zhí)行n n條指令后停下來,條指令后停下來,n n由條數(shù)指定。由條數(shù)指定。 DEBUG常用命令常用命令-U命令命令反匯編命令反匯編命令U(Unassemble)q從指定地址開始,反匯編從指定地址開始,反匯編3232個字節(jié)個字節(jié)q格式為:格式為: U U 地址地址 q例如:例如: U 100U 100q如果地址被省略則從上一個如果地址被省略則從上一個U U命令的最后一條指令的命令的最后一條指令的下一個單元開始顯示下一個單元開始顯示3232個字節(jié)。個字節(jié)。 q對指定范圍內的存儲單元進行反匯編對指定范圍內的存儲

12、單元進行反匯編q格式為:格式為: U rangeU rangeq例如:例如: U 100 10CU 100 10Cq從偏移地址為從偏移地址為100H100H處開始反匯編處開始反匯編10CH10CH個字節(jié)個字節(jié)DEBUG常用命令常用命令-N命令命令給編寫的匯編程序命名給編寫的匯編程序命名N(name)q格式:格式:N filespecs filespecsN filespecs filespecs q命令把兩個文件標識符(文件名)格式化命令把兩個文件標識符(文件名)格式化寫寫在在CSCS:5CH5CH和和CSCS:6CH6CH的兩個文件控制塊中,以便在其后的兩個文件控制塊中,以便在其后用用L L

13、或或W W命令把文件裝入或存盤。命令把文件裝入或存盤。 qfilespecsfilespecs的格式可以是:的格式可以是:d:pathfilename.exed:pathfilename.exe q例如:例如: -N test.exe -N test.exe -L -L q結果把文件結果把文件test.exetest.exe從外存裝入內存儲器。從外存裝入內存儲器。 DEBUG常用命令常用命令-L命令命令程序裝入命令程序裝入命令L(load)q將程序裝入已在將程序裝入已在CS:5CHCS:5CH中格式化了的文件控制塊中格式化了的文件控制塊所指定的文件所指定的文件q格式格式: :L L 或或 L

14、addressL addressq若命令沒規(guī)定地址,則文件裝入到若命令沒規(guī)定地址,則文件裝入到CS:100開始開始的內存區(qū)中的內存區(qū)中q若命令規(guī)定了地址,則裝入到從指定地址開始內若命令規(guī)定了地址,則裝入到從指定地址開始內存區(qū)域中存區(qū)域中q但對具有擴展名但對具有擴展名.com或或.exe 的文件,則始終是的文件,則始終是裝入到裝入到CS:100的內存區(qū)中,即使指定了地址,的內存區(qū)中,即使指定了地址,此地址也被忽略。此地址也被忽略。DEBUG常用命令常用命令-W命令命令把數(shù)據(jù)寫入指定的文件中把數(shù)據(jù)寫入指定的文件中W(write)q把內存區(qū)域中的數(shù)據(jù)寫入到把內存區(qū)域中的數(shù)據(jù)寫入到CS:5CH處的文件

15、控處的文件控制塊所規(guī)定的文件中。制塊所規(guī)定的文件中。q格式:格式:W write addressq若沒指定地址則從內存若沒指定地址則從內存CS:100CS:100處開始,若給出了處開始,若給出了地址,則從指定的地址開始地址,則從指定的地址開始使用使用W W命令之前需要注意的地方:命令之前需要注意的地方:qCS:5CHCS:5CH中必須有寫入文件的文件控制塊中必須有寫入文件的文件控制塊( (用用N N命令命令) )qBXCX(CXBXCX(CX為低字為低字,BX,BX為高字為高字) )中存入程序段的長度中存入程序段的長度q可以利用可以利用R BXR BX和和R CXR CX寫入文件的長度寫入文件

16、的長度( (字節(jié)數(shù)字節(jié)數(shù)) )DEBUG常用命令常用命令-Q命令命令退出退出DEBUG程序的命令程序的命令Q(quit)q退出退出DEBUGDEBUG,返回到,返回到DOSDOSq該命令無存盤功能,如需存盤應先使用該命令無存盤功能,如需存盤應先使用W W命令命令 常用的常用的DOS功能調用功能調用書本的第書本的第8 8章專門講述中斷程序設計章專門講述中斷程序設計而在講第而在講第8 8章以前,我們需要用到幾個常用章以前,我們需要用到幾個常用的的DOSDOS功能調用,所以這里先簡單介紹幾個功能調用,所以這里先簡單介紹幾個使用方法:使用方法: 1.1.設置入口參數(shù)設置入口參數(shù)( (有些不需要設置的就

17、不設置有些不需要設置的就不設置) ) 2. 2.功能調用號送功能調用號送AHAH寄存器寄存器 3.3.發(fā)軟中斷指令發(fā)軟中斷指令“INT 21H”INT 21H” 4C號功能調用號功能調用功能:退回到功能:退回到DOSDOS(操作系統(tǒng))狀態(tài)(操作系統(tǒng))狀態(tài)q入口參數(shù):無入口參數(shù):無 q出口參數(shù):無出口參數(shù):無該號功能調用等價于該號功能調用等價于INT 20HINT 20H中斷中斷 4C4C號功能調用舉例號功能調用舉例 - -A A mov ah,4cmov ah,4c;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21int 21 - -G G;執(zhí)行程序命令;執(zhí)行程序命令該程序

18、什么也不做,直接退回到該程序什么也不做,直接退回到DOSDOS狀態(tài)。狀態(tài)。1號功能調用號功能調用功能:從鍵盤上讀入一個字符,并將該功能:從鍵盤上讀入一個字符,并將該字符回顯在屏幕上字符回顯在屏幕上q入口參數(shù):無入口參數(shù):無q出口參數(shù):出口參數(shù):AL=AL=讀到字符的讀到字符的ASCIIASCII碼碼q說 明 : 如 果 讀 到 的 字 符 是說 明 : 如 果 讀 到 的 字 符 是 c t r l + cc t r l + c 或或ctrl+breakctrl+break,則結束程序,則結束程序 1 1號功能調用舉例號功能調用舉例 -A -A mov ah,01 mov ah,01;調用;調

19、用1 1號功能,接受并回顯字符號功能,接受并回顯字符 int 21 int 21 mov ah,4c mov ah,4c;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21 int 21 -G -G;連續(xù)執(zhí)行程序命令;連續(xù)執(zhí)行程序命令或者使用單步調試命令,來查看,用戶輸入的字符或者使用單步調試命令,來查看,用戶輸入的字符是否存入是否存入ALAL寄存器中?寄存器中? -T-T;單步調試程序;單步調試程序 -G=100 104-G=100 104;只執(zhí)行一部分指令;只執(zhí)行一部分指令 2號功能調用號功能調用功能:向屏幕寫一字符。功能:向屏幕寫一字符。q入口參數(shù):入口參數(shù):DL=DL

20、=輸出字符的輸出字符的ASCIIASCII碼碼q出口參數(shù):無出口參數(shù):無q說明:在顯示輸出時檢查是否按說明:在顯示輸出時檢查是否按ctrl+cctrl+c或或ctrl+breakctrl+break鍵,如果是則結束程序鍵,如果是則結束程序 2 2號功能調用舉例號功能調用舉例 -A -A mov DL,31 mov DL,31;31=31=字符字符11的的ASCIIASCII碼值碼值 mov ah,02mov ah,02;調用;調用2 2號功能,顯示號功能,顯示DLDL中的字符中的字符 int 21int 21 mov ah,4c mov ah,4c;退出;退出DEBUGDEBUG,回到,回到D

21、OSDOS int 21 int 21 -G -G;執(zhí)行程序命令;執(zhí)行程序命令9號功能調用號功能調用功能:在屏幕上顯示一個字符串。功能:在屏幕上顯示一個字符串。q入口參數(shù):入口參數(shù):DS:DX=DS:DX=需要輸出字符串的首地需要輸出字符串的首地址,字符串以字符址,字符串以字符$為結束標志。為結束標志。q出口參數(shù):無出口參數(shù):無q說明:在顯示輸出時檢查是否按說明:在顯示輸出時檢查是否按ctrl+cctrl+c或或ctrl+breakctrl+break鍵,如果是則結束程序鍵,如果是則結束程序 9 9號功能調用舉例號功能調用舉例 -A-A mov dx,10B mov dx,10B;dx=dx=

22、字符串的首地址字符串的首地址 mov ah,09 mov ah,09 ;調用;調用9 9號顯示字符串的功能號號顯示字符串的功能號 int 21h int 21h mov ah,4c mov ah,4c ;退出;退出DEBUGDEBUG,回到,回到DOSDOS int 21 int 2110B:10B:db hello,$ db hello,$ ;注意需要以;注意需要以$為結為結束符束符 -G -G ;連續(xù)執(zhí)行程序命令;連續(xù)執(zhí)行程序命令例題例題要求:要求:q用用debug編寫程序編寫程序,輸出指定的兩行字符串輸出指定的兩行字符串q串串1: THIS IS AN EXAMPLE,$q串串2: 12

23、3456789ABCDEF,$q注意換行的操作。注意換行的操作。例題原代碼例題原代碼 -A -A MOV DX,011C MOV DX,011C ;dx=dx=串串1 1的首地址的首地址 MOV AH,09 MOV AH,09 ;調用;調用9 9號功能顯示串號功能顯示串1 1 INT 21H INT 21H MOV DL,0D MOV DL,0D ;調用;調用2 2號功能,顯示號功能,顯示回車回車 MOV AH,02 MOV AH,02 INT 21H INT 21H MOV DL,0A MOV DL,0A ;調用;調用2 2號功能,顯示號功能,顯示換行換行 MOV AH,02MOV AH,0

24、2 INT 21H INT 21H MOV DX,012F MOV DX,012F ;dx=dx=串串2 2的首地址的首地址 MOV AHMOV AH,09 09 ;調用;調用9 9號功能顯示串號功能顯示串2 2 INT 21H INT 21H INT 20H INT 20H ;退回到;退回到DOSDOS狀態(tài)狀態(tài)011C:DB THIS IS AN EXAMPLE,$ 011C:DB THIS IS AN EXAMPLE,$ ;定義數(shù)據(jù);定義數(shù)據(jù)012F:DB 123456789ABCDEF,$012F:DB 123456789ABCDEF,$實驗一、實驗一、DEBUG的使用的使用實驗內容:實驗內容:q練習練習debugdebug的常用指令的常用指令q用用debugdebug編寫一個程序編寫一個程序, ,要求要求: :在屏幕上輸在屏幕上輸出出2 2行:行: 第第1 1行為您的班級英文名行為您的班級英文名q 第第2 2行為您的漢語拼音的姓名行為您的漢語拼音的姓名q作業(yè)取名:作業(yè)取名:, ,并寫入硬盤。并寫入硬盤。1010月月2020日前交。日前交??偨Y總結Debug的幾個主要命令需要掌握的

溫馨提示

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

評論

0/150

提交評論