版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
匯編語(yǔ)言程序設(shè)計(jì)
第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境學(xué)習(xí)匯編語(yǔ)言的目的就是要用匯編語(yǔ)言編程來(lái)解決實(shí)際問題.下面介紹三種常用的匯編語(yǔ)言編程環(huán)境:MASM6.1x、TurboAssember5.0和MASMMASM6.1x編程環(huán)境MASM6.1x是學(xué)習(xí)匯編語(yǔ)言程序設(shè)計(jì)的一個(gè)非常好的編程環(huán)境,它不僅支持編寫面向DOS的應(yīng)用程序,而且也支持32位匯編指令和早期Windows應(yīng)用程序的開發(fā).該環(huán)境提供了二種方法來(lái)處理源程序:命令行和集成環(huán)境.1)命令行命令(1)編寫源程序可用計(jì)算機(jī)系統(tǒng)中各種編輯器來(lái)編輯匯編語(yǔ)言源程序,源文件的后綴定為“.asm”.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x(2)匯編程序當(dāng)源程序編寫好后,可用masm命令來(lái)匯編該源程序.如果源程序沒有語(yǔ)法錯(cuò)誤,那么將生成目標(biāo)文件(.obj),為最終生成可執(zhí)行文件作準(zhǔn)備.如果源程序有語(yǔ)法錯(cuò)誤,那么匯編程序?qū)@示出錯(cuò)誤位置和原因,也可用列表文件(.lst)來(lái)記錄出錯(cuò)位置和原因.下面給出一些使用該命令的實(shí)例.例14.1查看masm命令的功能…>masm/?(1)……/Zi GeneratesymbolicinformationforCodeView/Zd Generateline-numberinformation其中:選項(xiàng)/Zi和/Zd是二個(gè)常用選項(xiàng),它們與符號(hào)調(diào)試有關(guān).(1)用戶輸入的內(nèi)容用“下劃線”來(lái)表示,系統(tǒng)顯示的內(nèi)容沒有“下劃線”.以下與此相同.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x例14.2用masm命令匯編源程…>masmtest……Assembling:test.asm若masm命令顯示出類似如上的處理結(jié)果,則表示源文件test.asm已成功匯編,并已生成其目標(biāo)文件test.obj.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x例14.3用masm命令匯編源程序…>masmtest……Assembling:test.asmtest.asm(10):errorA2070:invalidinstructionoperands如果masm命令顯示出類似如上的處理結(jié)果,那么表示源文件有錯(cuò),沒有生成其目標(biāo)文件.在本例中,顯示第10行有語(yǔ)法錯(cuò):非法的指令操作數(shù).這時(shí),可利用編輯器來(lái)閱讀源程序的第10行,查看輸入指令時(shí)是否有誤.假如源程序有很多錯(cuò)誤,很難記住全部出錯(cuò)位置,那么,可用列表文件來(lái)輔助查錯(cuò).第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x例14.4在匯編源程序的同時(shí),生成其列表文件.…>masmtest,,test……Assembling:test.asmtest.asm(10):errorA2070:invalidinstructionoperands列表文件test.lst是一個(gè)文本文件,可用編輯器直接閱讀,并可看出其錯(cuò)誤的位置和原因.下面是一個(gè)列表文件的實(shí)例.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具例14.4…>edittest.lstMicrosoft(R)MacroAssemblerVersion6.11 08/26/0018:42:57test.asm Page1–1.modelsmall.4860000 .data.radix700002A080F
dw10T,1w2db60,11,180003000A0009
w1001B0000
.code.startupmovdl,7777htest.asm(10):errorA2070:invalidinstructionoperands00108BC2 movax,dx00120FA4C201 shlddx,ax,1
0016D1D0 rclax,1.exit0end第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x1)命令行命令(3)連接程序當(dāng)源文件匯編成功后,可用連接程序(link.exe)來(lái)生成可執(zhí)行文件.例14.5查看連接程序(link.exe)的具體選項(xiàng).…>link/?LINK<objs>,<exefile>,<mapfile>,<libs>,<deffile>Validoptionsare:/? /ALIGNMENT/BATCH /CODEVIEW……/STACK /TINY/WARNFIXUP第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x1)命令行命令例14.6用連接程序生成執(zhí)行文件.方法1:…>linktest……RunFile[test.exe]:ListFile[nul.map]:Libraries[.lib]:DefinitionsFile[nul.def]:LINK:warningL4021:nostacksegment第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x1)命令行命令這種方法需要確認(rèn)連接過程中的各種文件名.如果使用文件名的默認(rèn)值,那么可直接按“回車”鍵.在上面四個(gè)文件名中,最重要二個(gè)文件名是執(zhí)行文件名和庫(kù)文件名.一般情況下,無(wú)需更換最終生成的執(zhí)行文件名.如果在連接過程中需要其它庫(kù)文件,那么在顯示第三行提示時(shí),輸入所需要的庫(kù)文件名.最后一行顯示一個(gè)警告信息,提示本程序沒有定義堆棧段,該警告信息可不必理會(huì),因?yàn)樵搱?zhí)行文件是可運(yùn)行的,在操作系統(tǒng)裝入時(shí)會(huì)自動(dòng)為其添加一個(gè)默認(rèn)的堆棧段.方法2:在文件名后面加上分號(hào)‘;’,默認(rèn)使用各類文件的缺省值.…>linktest;……LINK:warningL4021:nostacksegment第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x1)命令行命令(4)運(yùn)行程序當(dāng)要運(yùn)行所生成文件時(shí),可直接輸入其文件名.…>test(5)符號(hào)調(diào)試程序當(dāng)程序的運(yùn)行結(jié)果不是預(yù)期結(jié)果時(shí),就需要調(diào)試程序,找出錯(cuò)誤的語(yǔ)句或邏輯關(guān)系.宏匯編MASM6.1x編程環(huán)境提供了可用于源程序一級(jí)的調(diào)試工具CV(CodeView).有關(guān)CV的使用參見“14.2.2CodeView”中的介紹.例14.7用符號(hào)調(diào)試工具CV來(lái)調(diào)試程序test.asm所生成可執(zhí)行文件.…>masm/Zi/Zdtest ;假設(shè)其沒有語(yǔ)法錯(cuò)…>link/Cotest…>cvtest.exe第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWBPWB(Programmer'sWorkBench)是MASM6.1x提供的編程集成環(huán)境.在此環(huán)境下,程序員可直接進(jìn)行源程序的編寫、匯編、連接、調(diào)試和運(yùn)行等工作.
在匯編源程序時(shí),若程序有錯(cuò),則系統(tǒng)將列舉出所有出錯(cuò)位置和原因;
在連接時(shí),可指定堆棧的大小、附加的庫(kù)文件、符號(hào)跟蹤等選項(xiàng);
在運(yùn)行時(shí),可設(shè)置命令行參數(shù)、直接運(yùn)行、調(diào)試運(yùn)行、用DOS命令來(lái)運(yùn)行等.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x2)編程集成環(huán)境PWB例14.8查看PWB的啟動(dòng)方式…>pwb/?……[<files>][[/T]<file>]... (Temporary)filetoopen通常情況下,在PWB后面跟一個(gè)將要編輯的源文件名.假如要編輯源文件test.asm,那么,可直接輸入下面命令:…>pwbtest.asm第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具2)編程集成環(huán)境PWB(1)編輯源文件PWB的編輯功能與許多編輯器的功能類似,有建立新文件、保存文件、另存為、光標(biāo)移動(dòng)功能、塊操作、插入/刪除操作、恢復(fù)操作、查找/替換操作、設(shè)置編輯器的功能鍵和各類顏色等.要想了解更全面的編輯功能,可查看菜單:File、Edit、Search和Options的前四個(gè)菜單項(xiàng).在下圖(“Options→
Colors…”)中,可選擇各類
窗口、菜單和文本等對(duì)象
的背景色和前景色.如當(dāng)
要改變?cè)闯绦虻娘@示顏色
時(shí),可先在左邊的列表框
中選擇“Text”列表項(xiàng),然
后再選擇其背景色和前景
色.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x2)編程集成環(huán)境PWB(2)匯編和連接文件在集成環(huán)境下,源程序的匯編和連接是一次性完成的.當(dāng)匯編任務(wù)結(jié)束,并且沒有產(chǎn)生錯(cuò)誤信息時(shí),連接程序立即開始連接工作.但如果源文件有錯(cuò),則顯示所有錯(cuò)誤位置和原因,連接程序不會(huì)被執(zhí)行.在瀏覽錯(cuò)誤信息時(shí),可用Shife+F3和Shife+F4來(lái)定位前一個(gè)錯(cuò)誤和后一個(gè)錯(cuò)誤.在連接時(shí),如果需要某個(gè)庫(kù)文件,那么,可選用Options菜單中的“LinkOptions”菜單項(xiàng)來(lái)設(shè)置,該菜單項(xiàng)的顯示畫面如下圖所示.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x2)編程集成環(huán)境PWB(2)匯編和連接文件在該畫面上還可為程序設(shè)置一個(gè)缺省的堆棧段,其大小也可由用戶自行決定.當(dāng)生成執(zhí)行文件需要多個(gè)模塊連接時(shí),就需要建立一個(gè)工程文件(.MAK).建立工程文件的步驟和畫面如下:
輸入工程文件名,其默認(rèn)的后綴為.mak.輸入畫面如下圖所示.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具2)編程集成環(huán)境PWB(2)匯編和連接文件還可選擇工程目標(biāo)文件的類型,該類型有EXE、COM、LIB、Windows的EXE或DLL等二十幾種.當(dāng)然,對(duì)每種類型又有一些不同的要求,在此不在進(jìn)一步展開敘述了.通常情況下,不必選擇目標(biāo)文件類型,其缺省類型就是DOSEXE.
工程文件的編輯在輸入工程文件名,并且按“OK”按鈕時(shí),系統(tǒng)將顯示圖14.4所示的畫面.此時(shí)可向當(dāng)前工程中添加源程序,也可把某源程序從當(dāng)前工程中刪除.若輸入的文件名不在工程文件中,則把該源文件添加到工程文件中.若已存在,也可將其從工程文件中刪除.當(dāng)所需要的源文件都添加到當(dāng)前工程文件中時(shí),可按“SaveList”來(lái)保存該工程文件.此后就可用打開工程文件的方式來(lái)連接該工程中的文件.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWB(2)匯編和連接文件如果需要修改工程文件的話,則可先用“Project→OpenProject”菜單項(xiàng)打開工程文件,再用“EditProject”菜單項(xiàng)來(lái)激活下圖進(jìn)行編輯.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWB(3)運(yùn)行程序在運(yùn)行程序時(shí),可設(shè)置命令行參數(shù)、直接運(yùn)行、按調(diào)試方式運(yùn)行、用DOS命令來(lái)運(yùn)行等.通常情況下,在編寫程序的初期,一般都用“調(diào)試方式”來(lái)運(yùn)行程序.當(dāng)選用這種方式時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)入CV的調(diào)試環(huán)境.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWB(4)符號(hào)調(diào)試的設(shè)置步驟編寫程序很難做到“編輯、匯編、連接和運(yùn)行”一次完成,除非程序的功能非常簡(jiǎn)單.當(dāng)運(yùn)行結(jié)果不符合要求時(shí),就需要跟蹤程序的運(yùn)行.一般來(lái)說,跟蹤程序執(zhí)行的工作又稱為調(diào)試程序,即找出程序中不正常的語(yǔ)句和邏輯關(guān)系.常用的調(diào)試手段有二種:執(zhí)行代碼的調(diào)試和源程序的符號(hào)調(diào)試.前者是在沒有源程序信息的情況下進(jìn)行的調(diào)試,其工作難度大、效率低.后者是源程序一級(jí)上進(jìn)行的調(diào)試,其目標(biāo)代碼的執(zhí)行過程就像是源程序的執(zhí)行,這種調(diào)試手段效率高、調(diào)試難度低,也是目前最流行的調(diào)試手段(在各種編程環(huán)境下都有類似的調(diào)試工具).第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWB(4)符號(hào)調(diào)試的設(shè)置步驟在進(jìn)行符號(hào)調(diào)試之前,需要告訴匯編程序和連接程序保留源程序中的各種符號(hào)信息.為此,需通過下面三步來(lái)設(shè)置一些命令選項(xiàng).
設(shè)置生成選項(xiàng)選擇“Options→BuildOptions”菜單項(xiàng),再選擇“UseDebugOptions”選項(xiàng),如下圖所示.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWB(4)符號(hào)調(diào)試的設(shè)置步驟
設(shè)置匯編命令的選項(xiàng)選擇“Options→ProjectTemplates→CustomizeProjectTemplate”菜單項(xiàng),顯示出圖14.6.圖14.6修改匯編命令選項(xiàng)的畫面在該畫面的“BuildRuleList”列表框中選擇“macroAFLAGS_D‘’”,并把它修改為“macroAFLAGS_D‘/Zi/Zd’”.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x2)編程集成環(huán)境PWB(4)符號(hào)調(diào)試的設(shè)置步驟
設(shè)置連接命令的選項(xiàng)選擇Options菜單中的“LinkOptions”菜單項(xiàng),與圖14.2所對(duì)應(yīng)的是同一個(gè)畫面,在此所要的部分如圖14.7所示,并選擇“CodeView”選項(xiàng).經(jīng)過上面三步設(shè)置后,在PWB環(huán)境下就可用“Run→Debug”菜單項(xiàng)進(jìn)行符號(hào)調(diào)試.圖14.7連接過程選項(xiàng)的部分設(shè)置畫面第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x3)MASM6.1x的安裝宏匯編系統(tǒng)MASM6.11共有5張軟盤:Disk1~Disk5.在Disk1中運(yùn)行Setup.exe文件即啟動(dòng)系統(tǒng)的安裝過程.其安裝過程與許多系統(tǒng)的安裝大同小異,只要用戶根據(jù)屏幕提示作適當(dāng)?shù)倪x擇即可,所以,在此省略系統(tǒng)安裝具體步驟的描述.當(dāng)MASM6.11安裝完畢后,多數(shù)使用者就開始了編程工作,但這時(shí)會(huì)遇到源程序必須存入MASM6.11環(huán)境中的“bin”目錄下才能正常工作的問題.如果不這樣的話,將會(huì)出現(xiàn)運(yùn)行環(huán)境方面的錯(cuò)誤.產(chǎn)生這種錯(cuò)誤的原因就是在安裝的最后階段忽略了所顯示的三個(gè)提示畫面,這三個(gè)畫面是告訴使用者如何修改計(jì)算機(jī)系統(tǒng)的環(huán)境設(shè)置和編程環(huán)境的配置.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1.1MASM6.1x3)MASM6.1x的安裝(1)修改計(jì)算機(jī)系統(tǒng)的環(huán)境設(shè)置在MASM6.11安裝時(shí),安裝程序會(huì)根據(jù)使用者的安裝目錄和安裝選擇生成一個(gè)與之相適應(yīng)環(huán)境設(shè)置文件:NEW-VARS.BAT和NEW-CONF.SYS,所以,安裝程序在最后階段提示使用者用生成的環(huán)境設(shè)置文件來(lái)修改計(jì)算機(jī)的系統(tǒng)設(shè)置,提示畫面如下圖所示.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x3)MASM6.1x的安裝(2)修改Windows系統(tǒng)的配置文件在Windows操作系統(tǒng)下安裝MASM6.11時(shí),安裝程序還會(huì)生成NEW-SYS.INI文件,并在圖14.8之后顯示一個(gè)畫面,該畫面提示使用者修改Windows系統(tǒng)中的SYSTEM.INI文件,但在現(xiàn)在的環(huán)境下無(wú)需修改SYSTEM.INI文件也可正常運(yùn)行.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.1MASM6.1x3)MASM6.1x的安裝(3)修改PWB環(huán)境的設(shè)置文件安裝程序在MASM6.11系統(tǒng)目錄下的“init”目錄中創(chuàng)建了文件TOOLS.PRE,該文件內(nèi)容是PWB所用各種屬性或參數(shù)的缺省值,是PWB運(yùn)行時(shí)的配置信息,只要在該目錄下把文件名“TOOLS.PRE”改為“TOOLS.INI”即可.按照上述三步進(jìn)行修改后,重新啟動(dòng)計(jì)算機(jī).此后,程序員可建立一個(gè)獨(dú)立的子目錄來(lái)存儲(chǔ)匯編語(yǔ)言源程序,并在該目錄下進(jìn)行所有的編程工作.在MASM6.11編程環(huán)境中存在一些小錯(cuò)誤,在MASM6.15中有所修正.用MASM6.15中的文件覆蓋掉MASM6.11中“bin”目錄下的文件就可以了.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.2TurboAssemberTurboAssenmer系統(tǒng)是BorlandC++程序設(shè)計(jì)系統(tǒng)的一部分,它是可選的安裝項(xiàng).該匯編系統(tǒng)有三個(gè)主要文件:tasm.exe、tlink.exe、td.exe和td32.exe,其中td.exe是16位程序的調(diào)試器,td32.exe是32位程序的調(diào)試器.TurboAssenmer系統(tǒng)在匯編語(yǔ)言程序設(shè)計(jì)方面主要采用命令行的形式,當(dāng)用其它文本編輯器編寫好源程序(后綴為.asm)后,即可用tasm和tlink文件來(lái)處理它.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.2TurboAssember1)匯編源程序tasm.exe 16-bitreal-modeassemblertasmx.exe 16-bitprotected-modeassemblertasm32.exe 32-bitprotected-modeassembler例14.9查看tasm的功能選項(xiàng)…>tasm/?……/Zi,/Zd,/Zn Debuginfo:Zi=Full,Zd=LineNumbersOnly,Zn=None第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.2TurboAssember1)匯編源程序例14.10匯編已有源程序test.asm…>tasmtest假如源文件test.asm有語(yǔ)法錯(cuò)的話,可用下面命令來(lái)生成其列表文件test.lst.…>tasmtest,,test…>typetest.lst|more若源文件沒有語(yǔ)法錯(cuò),則可用tlink.exe連接生成可執(zhí)行文件.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.2TurboAssember2)連接程序例14.11查看tlink的功能選項(xiàng)…>tlink/?……例14.12連接匯編得到的目標(biāo)文件test.obj…>tlinktest第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.2TurboAssember3)符號(hào)調(diào)試程序當(dāng)程序的運(yùn)行結(jié)果不是預(yù)期結(jié)果時(shí),就需要調(diào)試程序,找出錯(cuò)誤的語(yǔ)句或邏輯關(guān)系.TurboAssember系統(tǒng)提供了可用于源程序一級(jí)的調(diào)試工具TD/TD32(TurboDebuger).有關(guān)TD的使用參見“14.2.3TurboDebuger”中的介紹.例14.13用符號(hào)調(diào)試工具TD來(lái)調(diào)試程序TEST.ASM所生成可執(zhí)行文件.…>tasm/Zi/Zdtest ;假設(shè)沒有語(yǔ)法錯(cuò)…>tlink/vtest…>tdtest.exe第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.1匯編語(yǔ)言編程環(huán)境14.1.3MASM32MASM32是在宏匯編
MASM系統(tǒng)的升級(jí)版,目前
最新的版本為MASM32v10.
該編程環(huán)境支持用32位匯
編指令來(lái)進(jìn)行Windows應(yīng)
用程序的開發(fā).MASM32提供一個(gè)集
成化的開發(fā)環(huán)境MASM32
Editor,在該環(huán)境下可完成
源程序的編輯、匯編和連
接等工作.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug啟動(dòng)Debug的一般命令如下: Debug文件名[參數(shù)表]其中文件名指定被調(diào)試的文件(名和后綴),參數(shù)表是被調(diào)試文件運(yùn)行時(shí)所需要的參數(shù).被調(diào)試的文件可以是系統(tǒng)中的任何文件,但通常它們的后綴為.EXE或.COM.當(dāng)Debug啟動(dòng)成功后,將顯示連接符‘-’,這時(shí),可輸入各種Debug命令.Debug中標(biāo)志位的符號(hào)表示如表14.1所示,其所有命令及其含義如表14.2所示.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug表14.1Debug中標(biāo)志位的符號(hào)表示標(biāo)志名稱溢出OF方向DF中斷IF負(fù)號(hào)SF零ZF輔助進(jìn)位AF奇偶PF進(jìn)位CF置位狀態(tài)OVDNEINGZRACPECY復(fù)位狀態(tài)NVUPDIPLNZNAPONC第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2.1Debug表14.2Debug命令及其含義命令格式功能說明A[地址]輸入?yún)R編指令C[范圍]起始地址對(duì)由“范圍”指定的區(qū)域與“起始地址”指定的同大小區(qū)域進(jìn)行比較,顯示不相同的單元D[范圍]顯示指定范圍內(nèi)的內(nèi)存單元內(nèi)容E地址
字節(jié)值表用值表中的值替換從“地址”開始的內(nèi)存單元內(nèi)容F范圍
字節(jié)值表用指定的字節(jié)值表來(lái)填充內(nèi)存區(qū)域G[=起始地址][斷點(diǎn)地址]從起點(diǎn)(或當(dāng)前地點(diǎn))開始執(zhí)行到終點(diǎn)結(jié)束H數(shù)值1數(shù)值2顯示二個(gè)十六進(jìn)制數(shù)值之和、差I(lǐng)端口地址從端口輸入L[地址[驅(qū)動(dòng)器號(hào)扇區(qū)扇區(qū)數(shù)]]從磁盤讀M范圍
地址把“范圍”內(nèi)的字節(jié)值傳送到從“地址”開始的單元N文件標(biāo)識(shí)符[文件標(biāo)識(shí)符…]指定文件名,為讀/寫文件做準(zhǔn)備O端口地址
字節(jié)值向端口輸出P[=地址][指令數(shù)]按步執(zhí)行過程,但不進(jìn)入子程序調(diào)用或軟中斷Q退出Debug,不保存正在調(diào)試的文件R[寄存器名]顯示和修改寄存器內(nèi)容S范圍
字節(jié)值表在內(nèi)存區(qū)域內(nèi)搜索指定的字節(jié)值表.如果找到,顯示起始地址,否則,什么也不顯示T[=地址][指令數(shù)]跟蹤執(zhí)行,從起點(diǎn)(或當(dāng)前地點(diǎn))執(zhí)行若干條指令U[范圍]反匯編,顯示機(jī)器碼所對(duì)應(yīng)的匯編指令W[地址[驅(qū)動(dòng)器號(hào)
扇區(qū)扇區(qū)數(shù)]]向磁盤寫內(nèi)容,(BX,CX)為寫入字節(jié)數(shù)第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug關(guān)于參數(shù)的幾點(diǎn)說明:(1)進(jìn)制:在Debug中輸入或顯示的數(shù)據(jù)都是十六進(jìn)制形式;(2)分隔:命令和參數(shù)、參數(shù)和參數(shù)之間要用空格、逗號(hào)或制表符等分隔;(3)地址:用“段值:偏移量”的形式來(lái)表示地址,也可用段寄存器來(lái)代表“段值”.例如:1000:0,ds:10,es:200,cs:30等第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug關(guān)于參數(shù)的幾點(diǎn)說明:(4)范圍:表示地址范圍,它有二種表示方式:“地址1地址2”和“地址1長(zhǎng)度”.其中:“地址1”表示起始地址,要用“段值:偏移量”來(lái)表達(dá);“地址2”表示終止地址,只用“偏移量”來(lái)表示;“長(zhǎng)度”用字母‘L’開頭的數(shù)值來(lái)表示.例如:100:50100
段值為100,偏移量從50到100的內(nèi)存區(qū)域;100:50L100
段值為100,偏移量從50開始的100個(gè)字節(jié)區(qū)域.(5)端口地址:二位十六進(jìn)制數(shù)值(6)字節(jié)值:二位十六進(jìn)制數(shù)值(7)字節(jié)值表:由若干個(gè)字節(jié)值組成,也可以是用引號(hào)括起來(lái)的字符串(8)驅(qū)動(dòng)器號(hào):0~3
驅(qū)動(dòng)器A~D等
第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug關(guān)于使用命令的幾點(diǎn)說明:
在提示符‘-’下才能輸入命令,在按“回車”鍵后,該命令才開始執(zhí)行
命令是單個(gè)字母,命令和參數(shù)的大小寫可混合輸入
可用F1、F2、F3、Ins、Del、左移鍵、右移鍵等編輯鍵來(lái)編輯本行命令
當(dāng)命令出現(xiàn)語(yǔ)法錯(cuò)誤時(shí),將在出錯(cuò)位置顯示‘^Error’
可用^C或^Break來(lái)終止當(dāng)前命令的執(zhí)行,還可用^S來(lái)暫停屏幕顯示(當(dāng)連續(xù)不斷地顯示信息時(shí))第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug例14.1啟動(dòng)Debug,并裝入test.exe文件(假設(shè)該文件已存在).解:方法1:
方法2:…\>debugtest.exe …\>debug-ntest.exe-l第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug例2.2比較DS段、偏移量從10到50的內(nèi)存區(qū)域與從地址100:20開始的內(nèi)存區(qū)域.解:-CDS:1050100:20 或 -CDS:10L41100:20例2.3顯示以DS為段值,偏移量從10到50的內(nèi)存單元內(nèi)容,然后用‘a(chǎn)bc’來(lái)填充它.解:-DDS:1050 或 -DDS:10L41-FDS:1050'abc'第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.1Debug例2.4顯示十六進(jìn)制1234與3421之和、差.解:-H12344321例2.5把數(shù)據(jù)段區(qū)域DS:040內(nèi)的內(nèi)容傳送給從附加段ES:10開始的內(nèi)存中.解:-MDS:040ES:10例2.6在數(shù)據(jù)段區(qū)域DS:040內(nèi)查找是否有字符串‘CIH’.解:-SDS:040'CIH'第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.2CodeViewCodeView是一個(gè)簡(jiǎn)單、直觀的全屏幕調(diào)試工具,它可調(diào)試多種語(yǔ)言的源程序所生成的執(zhí)行代碼.CodeView的調(diào)試窗口如下圖所示.畫面的左上窗口是調(diào)試器的主窗口,其顯示被調(diào)試的源程序或執(zhí)行代碼,左下窗口是命令窗口,用戶可輸入
各種Debug命令,右窗口是顯
示寄存器窗口,它可顯示16位
和32位寄存器的內(nèi)容.此外,還有其它一些窗
口,如內(nèi)存窗口、查看內(nèi)容
窗口(Watch)和程序輸出窗口
(View)等.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.2CodeView(1)功能鍵F2:顯示/隱含的寄存器組窗口F3:以不同的顯示方式顯示當(dāng)前執(zhí)行的程序F4:顯示程序的輸出屏幕F5:執(zhí)行到下一個(gè)邏輯斷點(diǎn),或到程序尾F6:依次進(jìn)入當(dāng)前屏幕所顯示的窗口F7:與F5功能相同F(xiàn)8:單步執(zhí)行指令,并進(jìn)入被調(diào)用的子程序F9:在源程序行中設(shè)置/取消斷點(diǎn),或用鼠標(biāo)左鍵雙擊之F10:單步執(zhí)行指令,但不進(jìn)入被調(diào)用的子程序第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.2CodeView(2)命令窗口在該窗口中,可輸入前面介紹的Debug命令.(3)寄存器組窗口可直接在寄存器組窗口內(nèi)修改各寄存器的內(nèi)容和標(biāo)志位,還可以用Options菜單中的“32-BitRegisters”菜單項(xiàng)來(lái)切換16位和32位寄存器.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.3TurboDebugerTurboDebuger的窗口和調(diào)試功能鍵與CV非常類似,也可以單步執(zhí)行、設(shè)置斷點(diǎn)、顯示寄存器內(nèi)容和查看內(nèi)存內(nèi)容等.圖14.11和14.12是TurboAssember系統(tǒng)中16位和32位調(diào)試器的顯示畫面.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.4VkdebugVKdebug是MASM32內(nèi)含的調(diào)試工具,其前身為DbgWin.該調(diào)試工具不像CodeView和TurboDebuger等工具那樣提供“源程序”級(jí)的符號(hào)跟蹤功能,在調(diào)試程序時(shí)需在被調(diào)試的程序段中插入VKdebug所提供的宏引用.程序運(yùn)行時(shí),這些宏引用會(huì)把相關(guān)的調(diào)試信息輸出到一個(gè)特定的窗口(DebugWindowforMASM32)中.窗口畫面如圖14.13所示.圖14.13TD調(diào)試器的顯示畫面第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.4Vkdebug在調(diào)試窗口中,有各種調(diào)試信息,如變量名(寄存器名)及其數(shù)值、調(diào)試語(yǔ)句所在的程序名和行數(shù)等.除這些調(diào)試信息外,還有一些輔助功能:打開、保存、清空、頂層顯示和幫助等.
打開(Open)–打開以前所保存的調(diào)試信息文件,并用其中的調(diào)試信息覆蓋掉當(dāng)前調(diào)試窗口中的調(diào)試信息;保存(Save)–把當(dāng)前的調(diào)試信息保存到文件之中,該文件的后綴為:.dbw(DbgWinlogfile);清空(Clear)–清除當(dāng)前調(diào)試窗口中的顯示信息,為開始新的調(diào)試工作作準(zhǔn)備;頂層顯示(Topmost)–在頂層顯示調(diào)試窗口使之不被其他窗口覆蓋;第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.4VKdebugVKdebug工具除具有以下幾方面的特征:
用于調(diào)試的宏定義文件Debug.inc可包含在一個(gè)工程文件的不同源程序中;
當(dāng)程序調(diào)試好后,定義符號(hào)名DBGWIN_DEBUG_ON為0,從源程序中來(lái)去除所有調(diào)試宏引用代碼;
若符號(hào)名DBGWIN_EXT_INFO定義為1,則在調(diào)試信息中包含源程序的文件名和指令行號(hào).若定義該符號(hào)名為0,則調(diào)試信息中不含這些輔助信息;
宏P(guān)rintDec和PrintHex可輸出8~32位數(shù)據(jù),宏P(guān)rintDec、PrintHex和PrintDouble還可附帶一個(gè)注釋性字符串.第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具14.2調(diào)試工具14.2.4Vkdebug下面介紹VKdebug所提供的常用宏名及其功能描述,其它宏及其描述請(qǐng)見MASM32環(huán)境中的“VKdebugHelp”或MASM32系統(tǒng)目錄下help子目錄中的文件dbgwin.hlp.(1)PrintDecValue[,Text]PrintHexValue[,Text]功能:以十進(jìn)制/十六進(jìn)制格式輸出參數(shù)Value的數(shù)值,參數(shù)Value可以是8位~32位內(nèi)存變量和寄存器名.[,Text]是一個(gè)可選的字符串,以下相同,不再說明.例如:PrintDecesp,"espvalue?"PrintHexdwMyVar第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具(2)PrintDoubleValue[,Text]功能:以十進(jìn)制格式輸出內(nèi)存變量Value的數(shù)值,參數(shù)Value的類型必須是REAL8.用例:PrintDoubledblMyVar(3)PrintStringTextPrintStringByAddrAddress功能:輸出一個(gè)字符串,其中Text是地址表達(dá)式,Address是指向字節(jié)串的指針.例如:.dataszTextDB"Hello,World",0.codePrintStringszText+1 ;輸出:ello,WorldPrintStringByAddroffsetszText ;輸出:Hello,World第14章
匯編語(yǔ)言編程環(huán)境和調(diào)試工具(4)PrintTextText功能:輸出用引號(hào)('
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025海外銷售代理合同范本
- 2024年稅務(wù)申報(bào)外包協(xié)議
- 商丘學(xué)院《建筑師業(yè)務(wù)實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 承包主體合同范例
- 單位舊物回收合同范例
- 擬換田地合同范例
- 汕尾職業(yè)技術(shù)學(xué)院《圖像與繪畫語(yǔ)言研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 汕頭職業(yè)技術(shù)學(xué)院《軟件質(zhì)量保證》2023-2024學(xué)年第一學(xué)期期末試卷
- 陜西中醫(yī)藥大學(xué)《公共政策概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 陜西郵電職業(yè)技術(shù)學(xué)院《生產(chǎn)與運(yùn)作管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 讀《教育的真諦》心得體會(huì)
- 計(jì)算機(jī)教室(微機(jī)室)學(xué)生上機(jī)使用記錄
- 做好計(jì)劃管理-杜絕虛假繁忙-陳春花老師
- 船舶加油作業(yè)安全操作規(guī)程
- 重慶市兩江新區(qū)八年級(jí)(上)期末語(yǔ)文試卷(含解析)
- 七人學(xué)生小品《如此課堂》劇本臺(tái)詞手稿
- POWERPOINT教學(xué)案例優(yōu)秀6篇
- RFJ05-2009-DQ人民防空工程電氣大樣圖集
- 建筑物理課后習(xí)題參考
- 部編版道德與法治三年級(jí)下冊(cè)第一單元《我和我的同伴》大單元作業(yè)設(shè)計(jì)案例
- 2023屆四省聯(lián)考“諺語(yǔ)看似矛盾”的作文講評(píng)+課件
評(píng)論
0/150
提交評(píng)論