實(shí)驗(yàn)二 匯編語言動(dòng)態(tài)調(diào)試程序Debug的使用_第1頁
實(shí)驗(yàn)二 匯編語言動(dòng)態(tài)調(diào)試程序Debug的使用_第2頁
實(shí)驗(yàn)二 匯編語言動(dòng)態(tài)調(diào)試程序Debug的使用_第3頁
實(shí)驗(yàn)二 匯編語言動(dòng)態(tài)調(diào)試程序Debug的使用_第4頁
實(shí)驗(yàn)二 匯編語言動(dòng)態(tài)調(diào)試程序Debug的使用_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)二 Debug的使用(基礎(chǔ)與驗(yàn)證型)一、實(shí)驗(yàn)要求和目的熟練掌握動(dòng)態(tài)調(diào)試程序DEBUG的使用;二、軟硬件環(huán)境1、硬件環(huán)境:微機(jī)CPU 486以上,500MB以上硬盤,32M以上內(nèi)存;2、軟件環(huán)境:裝有MASM 5.0、Debug、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等應(yīng)用程序。三、實(shí)驗(yàn)涉及的主要知識(shí)單元通過編輯、匯編和連接后的程序是可以執(zhí)行的程序。但是,一個(gè)程序特別是比較復(fù)雜的程序不能保證沒有一點(diǎn)錯(cuò)誤。因此,在投入正式運(yùn)行前必須進(jìn)行調(diào)試,以檢查程序的正確性。調(diào)試程序Debug就是用來調(diào)試匯編語言程序的一種工具。Debug的主要功能有顯示和修改寄存器及內(nèi)存單元的內(nèi)容;按

2、指定地址啟動(dòng)并運(yùn)行程序;設(shè)置斷點(diǎn)使程序分段運(yùn)行,以便檢查程序運(yùn)行過程中的中間結(jié)果或確定程序出錯(cuò)的位置;反匯編被調(diào)試程序,它將一個(gè)可執(zhí)行文件中的指令機(jī)器碼反匯編成助記符指令并同時(shí)給出指令所在的內(nèi)存地址;單條追蹤或多條追蹤被調(diào)試程序,它可以逐條指令執(zhí)行或幾條指令執(zhí)行被調(diào)試程序,每執(zhí)行一條(或幾條)指令后,Debug程序?qū)⒅袛喑绦虻倪\(yùn)行并提供有關(guān)結(jié)果信息;匯編一段程序,在Debug的匯編命令下可以直接輸入助記符指令,并將其匯編成可運(yùn)行程序段。此外,Debug還可以將磁盤指定區(qū)的內(nèi)容或一個(gè)文件裝入到內(nèi)存或?qū)?nèi)存的信息寫到磁盤上等等。啟動(dòng)Debug程序:在DOS狀態(tài)下可以用下面的命令啟動(dòng)Debug程序:

3、DEBUG 路徑文件名.擴(kuò)展名Debug后面的文件名及路徑是指被調(diào)試程序的文件名及路徑,Debug后面的文件必須是程序的可執(zhí)行文件,其擴(kuò)展名可以是.EXE 或.COM。在此命令后,DOS將調(diào)試程序Debug調(diào)入內(nèi)存,Debug接著將被調(diào)程序送入內(nèi)存。比如:DEBUG 123.EXE 調(diào)試程序Debug的主要命令如下:(一)顯示內(nèi)存單元內(nèi)容的命令D格式(1):-D 地址從指定地址開始,顯示128個(gè)字節(jié)的內(nèi)容,每一行的左邊顯示段內(nèi)偏移地址,接著顯示16個(gè)單元的內(nèi)容,最右邊區(qū)域則顯示這一行的16個(gè)單元所對(duì)應(yīng)的可顯示的字符。若無可顯示的字符,則用圓點(diǎn)(小數(shù)點(diǎn))填充。 D命令中的地址可為段內(nèi)偏移量,也可

4、為段基址和段內(nèi)偏移量兩部分,中間用冒號(hào)隔開,如1680:0110,即指段基址為1680H,段內(nèi)偏移量為0110H。Debug中所顯示的數(shù)據(jù)均為十六進(jìn)制數(shù),且省去了后面的H標(biāo)志。 格式(2):-D 范圍將顯示指定地址范圍內(nèi)的內(nèi)存單元的內(nèi)容,起始地址可由段基址及段內(nèi)偏移量兩個(gè)部分組成,中間用冒號(hào)“:”隔開,也可以只指出段內(nèi)偏移量,而此時(shí)的段基址在DS中。這里所說的范圍包含起始地址和結(jié)束地址。比如 D DS:1000 1020 將顯示數(shù)據(jù)段偏移地址為1000H到1020H的內(nèi)容。 (二)修改內(nèi)存單元內(nèi)容的命令E格式(1):-E 地址 內(nèi)容表它的功能是用給定的內(nèi)容表去代替所指定的內(nèi)存單元的內(nèi)容。 例如

5、:E DS:0110 41 CLOSE 41該命令執(zhí)行后,將用列表中的7個(gè)字符填入從DS:0110 到DS:0116 的7個(gè)存儲(chǔ)單元中。格式(2):E 地址它的功能是可以連續(xù)地逐個(gè)修改內(nèi)存單元的內(nèi)容。當(dāng)屏幕上顯示指定單元的地址和內(nèi)容之后,可采取下列辦法:若指定單元的內(nèi)容需要修改,則將新的內(nèi)容的十六進(jìn)制數(shù)輸入,再按空格鍵,修改便告完成,然后顯示下一個(gè)存儲(chǔ)單元的地址及內(nèi)容,若需要修改,可進(jìn)行同樣的操作。若某一個(gè)單元的內(nèi)容不需要修改,而操作又要進(jìn)行下去,則可直接按空格鍵。 若需要顯示前一個(gè)單元的地址和內(nèi)容,則輸入連接號(hào)-,若要修改,則輸入新的內(nèi)容;若顯示前一個(gè)單元的地址和內(nèi)容仍要修改,則可進(jìn)行同樣的

6、操作;若顯示的內(nèi)容不需要修改,則可直接按-鍵,使該操作由高地址向低地址單元連續(xù)不斷地進(jìn)行。按<CR>鍵,結(jié)束E命令。 (三)檢查和修改寄存器內(nèi)容的命令R格式(1):R此時(shí)將顯示所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài),以及現(xiàn)行CS:IP所指的機(jī)器指令代碼和反匯編符號(hào)。 格式(2):R 寄存器名該格式可用于檢查和修改指定寄存器的內(nèi)容。若不修改其內(nèi)容,可按<CR>鍵,若需要修改其內(nèi)容,可以輸入1-4 個(gè)十六進(jìn)制數(shù),再按<CR>鍵。 格式(3):RF該格式可用于顯示標(biāo)志和修改標(biāo)志位狀態(tài)。 當(dāng)系統(tǒng)給出標(biāo)志位狀態(tài)后,可采取下列辦法:若不需要修改任一標(biāo)志位,可按<CR&

7、gt;鍵。 若需要修改一個(gè)或多個(gè)標(biāo)志位,可輸入其相反的值。各標(biāo)志位之間可以無空格且與順序無關(guān),修改后按<CR>鍵。 由于標(biāo)志位狀態(tài)顯示時(shí),是用下列特殊符號(hào)表示的,因而修改時(shí),只要輸入規(guī)定的符號(hào)即可。下面是標(biāo)志名和狀態(tài)符號(hào)的對(duì)照表: 標(biāo)志名置 位符號(hào)復(fù) 位符號(hào)溢出標(biāo)志OF(是/否) OV NV方向標(biāo)志DF(減/增) DN UP中斷標(biāo)志IF(允許/禁止) EI DI符號(hào)標(biāo)志SF(負(fù)/正) NG PL零標(biāo)志ZF(是/否) ZR NZ輔助進(jìn)位標(biāo)志AF(是/否) AC NA奇偶校驗(yàn)標(biāo)志PF(偶/奇) PE PO進(jìn)位標(biāo)志CF(是/否) CY NC只有追蹤標(biāo)志TF,不能用指令直接修改。 例如:輸

8、入RF命令,系統(tǒng)可能作出如下響應(yīng):OV DN EI NG ZR AC PE CY-若現(xiàn)在要修改奇偶、零、中斷和溢出標(biāo)志位,可在光標(biāo)處輸入:PO NZ DI NV<CR>(四)運(yùn)行程序命令G格式:G =地址地址地址該命令可以在程序運(yùn)行中設(shè)置斷點(diǎn)。它是Debug程序進(jìn)行程序調(diào)試的主要命令之一。示例:-g 001a 則執(zhí)行從當(dāng)前cs:ip至001a的指令,注意:地址設(shè)置必須從指令的第一字節(jié)設(shè)起。 第一個(gè)參數(shù)“=地址”規(guī)定了程序執(zhí)行的起始地址,以CS內(nèi)容作段地址,等號(hào)后面的地址只需給出地址偏移量。此時(shí),命令G與地址之間的等號(hào)不能省去。 如果在G命令執(zhí)行前,已經(jīng)設(shè)置了CS值和IP值,則也可以

9、直接用G命令,從指定地址執(zhí)行程序。 格式中后面給出的地址是指斷點(diǎn)地址,最多可設(shè)置10個(gè)斷點(diǎn)。當(dāng)程序執(zhí)行到一個(gè)斷點(diǎn)時(shí),就停下來,顯示CPU各寄存器的內(nèi)容和標(biāo)志位的狀態(tài),以及下一條待執(zhí)行的指令,被調(diào)試程序的所有斷點(diǎn)全部被取消,并返回Debug。 地址參數(shù)所指的單元,必須包含有有效的8088指令的第一個(gè)字節(jié),否則將產(chǎn)生不可預(yù)料的結(jié)果。 堆棧必須至少包含有6個(gè)可用字節(jié),否則也將產(chǎn)生不可預(yù)料的結(jié)果。 若斷點(diǎn)地址只包括地址偏移量,則認(rèn)為段地址在CS寄存器中。 (五)追蹤命令T格式(1):T =地址該命令可以在指令執(zhí)行中進(jìn)行追蹤,若略去地址,則從CS:IP現(xiàn)行值執(zhí)行。每一次T命令都執(zhí)行一條指令。 格式(2)

10、:T =地址值此時(shí),它可對(duì)多條指令進(jìn)行追蹤,即在執(zhí)行了由值所指定的若干條指令之后,停止執(zhí)行并顯示各寄存器的內(nèi)容和各標(biāo)志位,還指出下一條待執(zhí)行的指令。 (六)匯編命令A(yù)若在調(diào)試目標(biāo)程序的過程中,要求改寫或增添一段目標(biāo)程序,則可以用A命令直接在Debug下實(shí)現(xiàn)。 格式:A 地址該命令可以從指定地址開始,將輸入的匯編語言語句立即匯編成機(jī)器代碼,連續(xù)存放在內(nèi)存單元中。在程序輸入完畢后,最后一行不輸入內(nèi)容,直接按回車鍵,即可返回DEBUG程序,還可用反匯編命令U對(duì)剛輸入的內(nèi)容進(jìn)行反匯編,以驗(yàn)證輸入的程序是否正確。 使用A命令應(yīng)遵守以下規(guī)則: 所有輸入數(shù)值,均為十六進(jìn)制數(shù)。 前綴助記符,必須在相關(guān)指令的前

11、面輸入,可以在同一行,也可以在不同行輸入。 段超越助記符為CS:、 DS:、 ES:、 SS:。 遠(yuǎn)調(diào)用時(shí)的返回指令助記符用RETF。 使用串操作指令時(shí),助記符中必須注明是字節(jié)還是字傳送。 匯編語言能自動(dòng)匯編短、近和遠(yuǎn)的轉(zhuǎn)移及近和遠(yuǎn)的調(diào)用,也能由NEAR和FAR前綴來超越。 例如: 0110:0600 JMP 602;短轉(zhuǎn)移 0110:0602 JMP NEAR 605;近轉(zhuǎn)移 0110:0605 JMP FAR 60A;遠(yuǎn)轉(zhuǎn)移 第一條JMP指令中含有一個(gè)字節(jié)偏移量。 第二條JMP指令中含有兩個(gè)字節(jié)偏移量。 第三條JMP指令中含有兩個(gè)字節(jié)的偏移量及兩個(gè)字節(jié)的段地址。 當(dāng)DEBUG不能確定某些操

12、作數(shù)涉及的是字類型存儲(chǔ)單元還是字節(jié)類型的存儲(chǔ)單元時(shí),在這種情況下,必須用前綴“WORD PTR”或“BYTE PTR”來加以說明。例如:NEG BYTE PTR 128 DEC WORD SI 當(dāng)Debug不能確定一個(gè)操作數(shù)是立即數(shù)還是存儲(chǔ)單元的地址時(shí),可以把地址放在方括號(hào)中。 兩個(gè)最常用的偽指令DB和DW可以在A命令中使用,用來直接把字節(jié)或字的值送入相應(yīng)的存儲(chǔ)單元。例如:DB 2,5,3,4,THIS IS AN EXAMPLEDW 6000, 2000, 7000,BA Debug支持所有形式的寄存器間接尋址命令。例如:ADD BX,74BP+3SI-5POPBX+DI(七)反匯編命令U格

13、式(1):U地址該命令從指定的地址開始,反匯編32個(gè)字節(jié)。若略去指定地址,則以上一個(gè)U命令反匯編的最后一條指令地址的下一條指令地址作為起始地址;若沒有用過U命令,則以由Debug初始化的段寄存器的值作段地址,以100作為地址偏移量。 格式(2):U范圍這種格式的命令,可以對(duì)指定范圍的內(nèi)存單元進(jìn)行反匯編,范圍可以由起始地址、結(jié)束地址(只能包含地址偏移量)或起始地址及長度來指定。其命令格式如:U 04BA:100 0108或 U 04BA:0100 L7兩者是等效的。 (八)輸入命令I(lǐng)格式:I端口地址該命令從指定端口輸入一個(gè)字節(jié)并顯示。 例如: I 2E8C C它表示所顯示的是從02E8 端口輸入

14、的一個(gè)字節(jié)為CC。 (九)輸出命令O格式:O端口地址 字節(jié)值其功能是向指定的端口輸出一個(gè)字節(jié)。 例如:O 2E8 12它表示將一個(gè)字節(jié)12H送到輸出端口2E8。 (十)命名命令N格式:N文件標(biāo)識(shí)符文件標(biāo)識(shí)符該命令用給定的兩個(gè)文件標(biāo)識(shí)符格式化在CS:5C和CS:6C的兩個(gè)文件控制塊中(若在調(diào)用Debug時(shí)具有一個(gè)文件標(biāo)識(shí)符,則它已格式化在CS:5C的文件控制塊中),文件控制塊是將要介紹的裝入命令L和寫命令W所需要的。 N命令能把文件標(biāo)識(shí)符和別的參數(shù)放至CS:81開始的參數(shù)保存區(qū)中。在CS:80中保存輸入的字符個(gè)數(shù), 寄存器AX保存前兩個(gè)文件標(biāo)識(shí)符中的驅(qū)動(dòng)器標(biāo)志。 例如:A>DEBUG<

15、;CR>N TEST<CR>L<CR>N命令后,用L命令可將TEST調(diào)入自己的CS:100開始的存儲(chǔ)區(qū)中。若對(duì)正在調(diào)試的程序TEST進(jìn)行調(diào)試時(shí),需要用到其它的文件標(biāo)識(shí)符及其它參數(shù),也可用N命令加以實(shí)現(xiàn)。;例如: A>DEBUG TEST<CR> N 文件1 文件2<CR>(十一)裝入命令L格式1: L <地址> <驅(qū)動(dòng)器號(hào)> <起始邏輯扇區(qū)> <所讀扇區(qū)個(gè)數(shù)n> 其中<地址>的缺省值為CS:100。邏輯扇區(qū)可由物理扇區(qū)號(hào)換算得到,以雙面雙密度盤為例:物理扇區(qū)是按0面0道1區(qū),

16、0面0道2區(qū),0面0道9區(qū),0面1道1區(qū),0面39道9區(qū),1面0道1區(qū),1面39道9區(qū)排列。而邏輯扇區(qū)與物理扇區(qū)號(hào)的對(duì)應(yīng)關(guān)系為物理扇區(qū)0面0道1扇區(qū)至9扇區(qū),邏輯扇區(qū)號(hào)為08;物理扇區(qū)1面0道1扇區(qū)至9扇區(qū),邏輯扇區(qū)號(hào)為911H;物理扇區(qū)0面1道1扇區(qū)至9扇區(qū),邏輯扇區(qū)號(hào)為121AH;。這樣每道先0面后1面一直排下去。 其中<驅(qū)動(dòng)器號(hào)>為0、1或2,0表示A驅(qū),1表示B驅(qū),2表示硬盤。功能: 將<驅(qū)動(dòng)器號(hào)>指定的盤上,從<起始邏輯扇區(qū)>起,共n個(gè)邏輯扇區(qū)上的所有字節(jié)順序讀入指定內(nèi)存地址開始的一片連續(xù)單元。當(dāng)L后的參數(shù)缺省時(shí),必須在L之前由N命令指定(或進(jìn)入D

17、EBUG時(shí)一并指出)所讀驅(qū)動(dòng)器文件名。此時(shí)L執(zhí)行后將該文件裝入內(nèi)存。 例如:-N EXAMPLE <Enter> -L <Enter> 將當(dāng)前驅(qū)動(dòng)器上的EXAMPLE文件裝入CS:100起始的一片內(nèi)存單元。格式2:L地址或L該命令把已在CS:5C中格式化的文件控制塊所指定的文件裝入到指定區(qū)域中。 若省略地址,則裝入到CS:100開始的內(nèi)存區(qū)域中。 若是帶有擴(kuò)展名.COM或.EXE文件,無論命令中是否指定了地址,一律裝入到CS:100開始的內(nèi)存區(qū)域中去。通常在BX和CX中包含了所讀入文件的字節(jié)數(shù),但對(duì)具有擴(kuò)展名.EXE文件,則BX和CX中還包含實(shí)際程序長度。(十二)寫命令

18、W功能: 為LW命令指定待裝入寫盤文件格式1:W <地址> <盤號(hào)> <起始邏輯扇區(qū)> <所寫邏輯扇區(qū)數(shù)n>功能:與L命令不同的地方是將內(nèi)存從<地址>起始的一片單元內(nèi)容寫入指定扇區(qū)。只有W而沒有參數(shù)時(shí),與N命令配合使用將文件寫盤。該命令把由地址所指定的內(nèi)存區(qū)域中的數(shù)據(jù)寫入指定的驅(qū)動(dòng)器。若地址中只包含偏移量,則段地址在CS中。其中,扇區(qū)號(hào)決定了寫入起始扇區(qū);區(qū)段數(shù)決定了寫入的區(qū)段個(gè)數(shù);扇區(qū)號(hào)和區(qū)段數(shù)均用十六進(jìn)制數(shù)表示。格式2:W地址或W該命令把指定內(nèi)存區(qū)域中的數(shù)據(jù),寫入到由CS:5C處的文件控制塊所規(guī)定的文件中去。若省略地址,則內(nèi)存區(qū)域

19、從CS:100 開始。對(duì)于擴(kuò)展名為.EXE或.HEX文件不能寫入。因?yàn)檫@些文件的寫入要用一種特殊格式,而此格式Debug程序不支持。 (十三)退出Debug命令Q格式:Q該命令退出Debug程序并返回DOS。 Q命令并不把內(nèi)存中的文件存盤,若需要存盤的話,應(yīng)在退出前用W命令寫入磁盤。四、實(shí)驗(yàn)內(nèi)容與步驟1、實(shí)驗(yàn)內(nèi)容(1) 進(jìn)入和退出Debug程序(2) 學(xué)會(huì)Debug中的D命令、E命令、R命令、T命令、A命令、G命令、U命令、N命令、W命令等的使用。(3) 利用Debug,驗(yàn)證乘法、除法、加法、減法、帶進(jìn)位加、帶借位減、堆棧操作指令、串操作指令的功能。 (4)使用D

20、ebug調(diào)試程序調(diào)試匯編程序。2、實(shí)驗(yàn)步驟(1)   在DOS提示符下,進(jìn)入Debug程序。(2)    詳細(xì)記錄每一步所用的命令,以及查看結(jié)果的方法和具體結(jié)果。(3)現(xiàn)有一個(gè)雙字加法源程序如下,其中存在錯(cuò)誤?,F(xiàn)假設(shè)已匯編、連結(jié)生成了可執(zhí)行文件HB.EXE,存放在d:MASM目錄下。請(qǐng)使用Debug對(duì)其進(jìn)行調(diào)試。Code SEGMENT ASSUME CS:code,DS:code ORG 100H ;從100H處開始存放下列指令Start:MOV AX,code ;將DS置成code段的首地址 MOV DS,AX MOV SI,20

21、0H ;取第一個(gè)數(shù)的首地址 MOV AX,SI ;將第一個(gè)數(shù)的低16位取到AX MOV DI,204H ;取第二個(gè)數(shù)的首地址 ADD AX,DI ;第一個(gè)數(shù)和第二個(gè)數(shù)的低16應(yīng)相加 MOV SI+8,AX ;低16位相加的結(jié)果送到208H和209H單元 MOV AX,SI+2 ;取第一個(gè)數(shù)的高16位送到AX中 ADD AX,DI+2 ;兩個(gè)數(shù)的高16位相加 MOV SI+0AH,AX ;高16位相加的結(jié)果送到20AH,20BH單元 MOV AX,4C00H ;使用DOS的4CH號(hào)功能調(diào)用 INT 21H ;進(jìn)入功能調(diào)用,返回DOS ORG 200H ;從200H處開始存放下列數(shù)據(jù) DD 123

22、45678h,654387A9h,0h ;被加數(shù)、加數(shù)、和Code ENDS END start調(diào)試過程: 進(jìn)入Debug并裝入可執(zhí)行文件HB.EXED:MASM>Debug HB.EXE<Enter>- 觀察寄存器初始狀態(tài)-R <Enter>AX=0000 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0100 NV UP EI PL NZ NA PO NC18A2:0100 B8A218 MOV AX,18A2注:(1)以上顯示

23、的寄存器值,可能和你的電腦顯示的不一樣。(2)Debug中默認(rèn)的進(jìn)制是十六進(jìn)制。 以單步工作方式開始運(yùn)行程序 首先用T命令順序執(zhí)行用戶程序的前l(fā)兩條指令,將段寄存器DS預(yù)置為用戶的數(shù)據(jù)段。-T <Enter>AX=18A2 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=1892 ES=1892 SS=18A2 CS=18A2 IP=0103 NV UP EI PL NZ NA PO NC18A2:0103 8ED8 MOV DS,AX-T <Enter>AX=18A2 BX=0000 CX=020C

24、DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0105 NV UP EI PL NZ NA PO NC18A2:0105 BE0002 MOV SI,0200 觀察用戶程序數(shù)據(jù)段初始內(nèi)容-D 200 20F <Enter>18A2:0200 78 56 34 12 A9 87 43 65-00 00 00 00 00 74 13 50 xV4.Ce.t.P- 連續(xù)工作方式運(yùn)行程序至返回DOS前(設(shè)斷點(diǎn)),查看運(yùn)行結(jié)果。為此,現(xiàn)使用U命令反匯編。 -U 100 <Enter&g

25、t; 18A2:0100 B8A218 MOV AX,18A2 18A2:0103 8ED8 MOV DS,AX 18A2:0105 BE0002 MOV SI,0200 18A2:0108 8B04 MOV AX,SI 18A2:010A BF0402 MOV DI,0204 18A2:010D 0305 ADD AX,DI 18A2:010F 894408 MOV SI+08,AX 18A2:0112 8B4402 MOV AX,SI+02 18A2:0115 034502 ADD AX,DI+02 18A2:0118 89440A MOV SI+0A,AX 18A2:011B B8004

26、C MOV AX,4C00 18A2:011E CD21 INT 21 -可見,要執(zhí)行10條指令,至011B處停止-G=100,011B <Enter> AX=7777 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204 DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=011B NV UP EI PL NZ NA PE NC 18A2:011B B8004C MOV AX,4C00 -D 200 20F <Enter> 18A2:0200 78 56 34 12 A9 87 43 65-2

27、1 DE 77 77 43 43 83 06 xV4.Ce!.wwCC. -和為7777DE21H,正確。 再取一組數(shù)據(jù),查看運(yùn)行結(jié)果。為此,首先用E命令修改數(shù)據(jù)。 -E 200 CD,AB,78,56,90,EF,34,12 <Enter> -D 200 20F <Enter> 18A2:0200 CD AB 78 56 90 EF 34 12-21 DE 77 77 43 43 83 06 .xV.4.!.wwCC. -G=100,11B <Enter> AX=68AC BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI

28、=0200 DI=0204 DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=011B NV UP EI PL NZ NA PE NC 18A2:011B B8004C MOV AX,4C00 -D 200 20F <Enter> 18A2:0200 CD AB 78 56 90 EF 34 12-5D 9B AC 68 43 43 83 06 .xV.4.hCC. -和為68AC9B5DH,錯(cuò)誤。說明程序有問題。 再將斷點(diǎn)設(shè)在完成低位字加法后,查看運(yùn)行結(jié)果。-G=100,112 <Enter> AX=9B5D BX=0000 CX=020C DX=

29、0000 SP=0000 BP=0000 SI=0200 DI=0204 DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0112 NV UP EI NG NZ NA PO CY 18A2:0112 8B4402 MOV AX,SI+02 DS:0202=5678 -D 200 20F <Enter> 18A2:0200 CD AB 78 56 90 EF 34 12-5D 9B AC 68 43 43 83 06 .xV.4.hCC. -低位和為9B5D,正確。說明錯(cuò)誤可能出在后面 使用T命令從剛才的斷點(diǎn)處向后單步調(diào)試,查看運(yùn)行結(jié)果。-T=112 <E

30、nter> AX=5678 BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204 DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0115 NV UP EI NG NZ NA PO CY 18A2:0115 034502 ADD AX,DI+02 DS:0206=1234 -T <Enter>AX=68AC BX=0000 CX=020C DX=0000 SP=0000 BP=0000 SI=0200 DI=0204 DS=18A2 ES=1892 SS=18A2 CS=18A2 IP=0118 NV UP EI PL NZ NA PE NC 18A2:0118 89440A MO

溫馨提示

  • 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)論