資源描述:
《debug程序調(diào)用及匯編語言程序調(diào)試方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、附錄DEBUG程序調(diào)用及匯編語言程序調(diào)試方法調(diào)試程序DEBUG是DOS支持的又一種系統(tǒng)軟件,主要用于匯編語言程序的調(diào)試。匯編和連接過程只能查出源程序的語法錯誤,不能查出功能上的錯誤和程序不完善的地方。DEBUG程序為用戶提供多種命令,大致有:顯示和修改寄存器和存貯單元的內(nèi)容;執(zhí)行程序中任意一段或一條指令;匯編單條源語句和反匯編機器碼指令;查找字符代碼;端口的輸入和輸出;文件裝入內(nèi)存和寫入磁盤等。用戶利用這些命令可以查出任何程序功能上的錯誤。下面說明DEBUG程序的啟動方法和主要命令意義。一、DEBUG程序的啟動DEBUG程序有兩種啟動方法
2、。DEBUG程序是在DOS盤上的一個獨立的可執(zhí)行程序(擴展名為.COM),所以,DEBUG程序的第一種啟動方法就是把它看作和一般的可執(zhí)行程序一樣,只要打入DEBUG和回車鍵,就可以把它裝入內(nèi)存。但是這樣啟動只把DEBUG程序本身裝入內(nèi)存并進(jìn)入等待DEBUG命令狀態(tài),還沒有把要調(diào)試的程序裝入內(nèi)存。第二種啟動DEBUG的程序的方法是一次相繼裝入DEBUG程序和要調(diào)試的程序。打入的命令格式如下:DEBUG[d:][path]filename[.ext][parml]Lparm2]其中的Filename是要調(diào)試程序的文件名,可選項[d:][pat
3、h]和[.ext]分別是要調(diào)試程序的所在盤符、路徑和擴展名??蛇x項[parml]和[parm2]是DEBUG程序為要調(diào)試程序準(zhǔn)備的參數(shù)(一般不用)。例進(jìn)入DEBUG程序并裝入要調(diào)試程序,要調(diào)試程序在A驅(qū)動器中。其操作如下:C>DEBUGA:ABC.EXE(進(jìn)入DEBUG,并裝配ABC.EXE)此時屏幕上出現(xiàn)一個短線,這表示可以使用DEBUG命令了。二、調(diào)試命令在說明每個命令之前,先說明一些共同信息:■DEBUG命令都是以一個英文字母開頭,后面跟一個或多個參數(shù)?!雒钭帜负蛥?shù)可用大寫或小寫或混合形式?!雒钭帜负蛥?shù)中,相鄰兩個十六進(jìn)制之
4、間必須用逗號或空格分開.其它各部分之間有無空格或逗號都可以?!鰣?zhí)行任何命令期間都可用Ctrl+Break鍵方法結(jié)束命令的執(zhí)行?!龃蛉朊钭帜负蛥?shù)后必須打入回車鍵才能使命令有效?!鋈绻麍?zhí)行某種命令期間在顯示器或打印機上的很長的輸出,可以按Ctrl+Numlock鍵暫停繼續(xù)顯示,使顯示屏幕停下來供觀察。再按任何其它鍵,則繼續(xù)顯示輸出?!鲈贒EBUG程序狀態(tài)下,控制鍵和DOS支持的編輯鍵繼續(xù)有效。■如果輸入的命令有錯誤,將顯示出來。例如:dcs:100cs:110error這說明d命令的第二個address參數(shù)格式不對,它只能包括偏移地址部分
5、,不能再有段地址部分。它發(fā)現(xiàn)S不是十六進(jìn)制數(shù)字符?!鯠EBUG程序狀態(tài)光標(biāo)提示符為“-”。下面按命令功能相近關(guān)系分組說明幾個主要命令功能和使用的方法:(一)顯示和修改寄存器或存貯單元的有關(guān)命令1.R(Register)命令R命令有三種功能:l顯示單個寄存器內(nèi)容并等待修改這個寄存器內(nèi)容;l顯示CPU內(nèi)部的所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài);l顯示和修改所有標(biāo)志位的狀態(tài)。⑴顯示和修改單個寄存器內(nèi)容命令命令格式:R[寄存器名]說明:顯示單個寄存器內(nèi)容。R之后輸入寄存器名符。例如命令-RAX↙將顯示出AX的內(nèi)容和在下一行顯示出冒號。AXF1E4:
6、-上面的F1E4是AX的當(dāng)前內(nèi)容。如果在冒號后打入要修改的內(nèi)容,然后打回車鍵,這時AX即修改為新值;如果不輸入新值只打回車鍵,則不改變原值。⑵顯示CPU內(nèi)部的所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài)命令命令格式:R說明:顯示所有寄存器和標(biāo)志位值。例如:-R↙系統(tǒng)響應(yīng)給出格式如(值是假設(shè)的):AX=0E00BX=00FFCX=0007DX=01FFSP=0390BP=0000SI=0050DI=0000DS=04BAES=04BASS=04BACS=04BAIP=01lANVUPDINGNZACPENC04BA:0HACD211NT21前幾行顯示
7、的是寄存器內(nèi)容和8個狀態(tài)標(biāo)志位的狀態(tài),最后一行顯示是下面將要執(zhí)行的指令地址,它對應(yīng)的機器碼和匯編語句形式。8位狀態(tài)標(biāo)志位的狀態(tài)不是以0或1的形式顯示的,而是用兩個字母顯示的。字母和狀態(tài)對應(yīng)關(guān)系如表所示:標(biāo)志位名為1對應(yīng)符為0對應(yīng)符OF(溢出標(biāo)志)OVNVDF(方向標(biāo)志)DNUPIF(中斷標(biāo)志)EIDISF(符號標(biāo)志)NGPLZF(零標(biāo)志)ZRNZAF(輔助進(jìn)位)ACNAPF(奇偶標(biāo)志)PEPOCF(進(jìn)位標(biāo)志)CYNC⑶顯示和修改標(biāo)志位狀態(tài)的命令命令格式:RF系統(tǒng)響應(yīng)是顯示8個狀態(tài)位。例如:OVDNEINGZRACPECY_(最后為光標(biāo)位置
8、)如果打入回車鍵,將不改變標(biāo)志位的狀態(tài);也可以打入一個或多個新的狀態(tài)符,重新設(shè)置其狀態(tài)。輸入時各標(biāo)志的次序無關(guān),輸入的各個標(biāo)志之間可以沒有空格。如從光標(biāo)位置開始打入:PONZDINV將改變第一