微機(jī)原理實(shí)驗(yàn)指導(dǎo)書_第1頁(yè)
微機(jī)原理實(shí)驗(yàn)指導(dǎo)書_第2頁(yè)
微機(jī)原理實(shí)驗(yàn)指導(dǎo)書_第3頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)原理實(shí)驗(yàn)扌旨導(dǎo)書信息技術(shù)系實(shí)驗(yàn)一 DEBUG 的啟動(dòng)及其基本命令的使用 1實(shí)驗(yàn)二內(nèi)存操作數(shù)及尋址方法 15實(shí)驗(yàn)三匯編語(yǔ)言程序的調(diào)試與運(yùn)行 17實(shí)驗(yàn)四 查表程序設(shè)計(jì) 17實(shí)驗(yàn)五系統(tǒng)功能調(diào)用 20實(shí)驗(yàn)六分支程序設(shè)計(jì) 21實(shí)驗(yàn)七循環(huán)程序設(shè)計(jì) 23實(shí)驗(yàn)八子程序設(shè)計(jì) 25實(shí)驗(yàn)九綜合程序設(shè)計(jì) 28附錄 實(shí)驗(yàn)報(bào)告 29實(shí)驗(yàn)的基本要求與方法一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)程序設(shè)計(jì)的基本方法和技能,熟練學(xué)握用匯編語(yǔ)言設(shè)計(jì)、編寫、調(diào)試和運(yùn)行程序的方法。為后續(xù)課程打下堅(jiān)實(shí)的基礎(chǔ)。二、實(shí)驗(yàn)要求1. 上機(jī)前做好充分的準(zhǔn)備,包括程序框圖、源程序清單、調(diào)試步驟、測(cè)試方法,對(duì)運(yùn)行結(jié)果的分析等。2o上機(jī)時(shí)要遵守實(shí)驗(yàn)室的規(guī)章制度,愛(ài)護(hù)實(shí)驗(yàn)設(shè)

2、備。要熟悉與實(shí)驗(yàn)有關(guān)的系統(tǒng)軟件(編輯程序、匯編程序、連接程序和調(diào)試程序等)的使用方法。在稈序的調(diào)試過(guò)程中,有意識(shí)地學(xué)習(xí)及常握debug程序的各種操作命令,以便掌握程序的調(diào)試方法及技巧。3. 每個(gè)實(shí)驗(yàn)完成后,應(yīng)寫出實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告為word文檔。實(shí)驗(yàn)報(bào)告要求:(1)設(shè)計(jì)說(shuō)明:用來(lái)說(shuō)明程序的功能、結(jié)構(gòu)。它包扌舌:程序名、功能、原理及算法說(shuō)明、程序及數(shù) 據(jù)結(jié)構(gòu)、主要符號(hào)名的說(shuō)明等。(2) 調(diào)試說(shuō)明:便于學(xué)生總結(jié)編程經(jīng)驗(yàn)提高編程及高度能力。它包括:調(diào)試情況,如上機(jī)時(shí)遇到的問(wèn)題及解決辦法,觀察到的現(xiàn)象及其分析,對(duì)程序設(shè)計(jì)技巧的總結(jié)及分析等;程序的輸出結(jié)果及對(duì)結(jié)果的分析;實(shí)驗(yàn)的心得體會(huì)。(3)程序框圖(

3、4)程序清單4. 為了更好地進(jìn)行上機(jī)管理,要求用硬盤存儲(chǔ)程序,并建立和使用子目錄,以避免文件被別人刪除。為便于統(tǒng)一管理硬盤屮的文件,要求實(shí)驗(yàn)者在學(xué)號(hào)目錄下建立自己的文件,文件按以下格式命名:字母學(xué)號(hào)擴(kuò)充名,其中字母取a? z的26個(gè)英文字母,按實(shí)驗(yàn)順序從 a至z排列,學(xué)號(hào)取后面的6位。如學(xué) 號(hào)為20043727的學(xué)生第三個(gè)實(shí)驗(yàn)第一個(gè)源程序所對(duì)應(yīng)的文件名為 CI043727.ASM,本次實(shí)驗(yàn)的第二個(gè)源程 序?yàn)镃2043727實(shí)驗(yàn)報(bào)告對(duì)應(yīng)的文件名為c043727.doc-實(shí)驗(yàn)報(bào)告寫完后,將源程序文件及實(shí)驗(yàn)報(bào)告上傳到教師機(jī)上相應(yīng)的目錄中。具體日錄上機(jī)吋由指導(dǎo)老師告之。三、實(shí)驗(yàn)的基本方法1. 從教師機(jī)

4、下載匯編程序 MASM.EXE和連接程序LINK.EXE到學(xué)生機(jī)的相應(yīng)文件夾(文件夾以學(xué)號(hào)命名)下。2. 進(jìn)入DOS環(huán)境中相應(yīng)的目錄下。如學(xué)生的文件來(lái)為:d:20043727則對(duì)應(yīng)的操作為(1)選擇windows的“開(kāi)始- 程序- 附件- 命令提示符(2)在DOS命令提示符下輸入如下命令(其屮帶下劃線部分為輸入內(nèi)容)。C:Docume nts and Sett in gsnewd:D:cd 20043727D:20043727edit a!043727.asm進(jìn)入編輯程序,在其環(huán)境下輸入編好的源程序,然后在盤上生成一個(gè)擴(kuò)展名為.asm的文件。3. 用宏匯編程序MASM,將擴(kuò)展名為ASM的源程序

5、匯編成目標(biāo)程序,即生成盤上擴(kuò)展名為 .OBJ的文件。若編過(guò)程出現(xiàn)錯(cuò)誤,則無(wú)法生成目標(biāo)程序,需要冋到編輯程序進(jìn)行修改,修改后重新匯編直到無(wú)錯(cuò)出現(xiàn)。4. 用連接程序LINK,將擴(kuò)展名為.OBJ的目標(biāo)程序連接裝配成可執(zhí)行文件,即在盤上生成擴(kuò)展名為.EXE的文件。5. 用調(diào)試程序DEBUG,調(diào)試擴(kuò)展名為.EXE的文件,以發(fā)現(xiàn)程序屮的邏輯錯(cuò)誤并進(jìn)行排除。實(shí)驗(yàn)一 DEBUG 的啟動(dòng)及其基本命令的使用一?實(shí)驗(yàn)?zāi)康模赫莆?DEBUG 的基本命令及其功能二. 實(shí)驗(yàn)內(nèi)容:DEBUG 是專門為匯編語(yǔ)言設(shè)計(jì)的一種調(diào)試工具,它通過(guò)步進(jìn),設(shè)置斷點(diǎn)等方式為匯編語(yǔ)言程 序員 提供了非常有效的調(diào)試手段。1、 DEBUG 程序的

6、啟動(dòng)在 DOS 提示符下,可鍵入命令:CDEBUGld:Jpathli 件名參數(shù) 1參數(shù) 2其屮文件名是被調(diào)試文件的名稱,它須是執(zhí)行文件 ( EXE) ,兩個(gè)參數(shù)是運(yùn)行被調(diào)試文件時(shí)所需 要的 命令參數(shù),在DEBUG程序調(diào)入后,出現(xiàn)提示符“”,此時(shí),可鍵入所需的DEBUG命令。在啟動(dòng) DEBUG 吋,如果輸入了文件名, 則 DEBUG 程序把指定文件裝入內(nèi)存。 用戶可以通過(guò) DEBUG 的命令對(duì)指定文件進(jìn)行修改、顯示和執(zhí)行。如果沒(méi)有文件名,則是以當(dāng)前內(nèi)存的內(nèi)容工作 , 或者用命名命 令和裝入命令把需要的文件裝入內(nèi)存,然后再用 DEBUG 的命令進(jìn)行修改、顯示和執(zhí) 行。2、DEBUG 的主要命令匯

7、編命令 A, 格式為:? A 地址該命令從指定地址開(kāi)始允許輸入?yún)R編語(yǔ)句,把它們匯編成機(jī)器代碼相繼存放在從指定地址開(kāi)始的存儲(chǔ)器屮。反匯編命令U,有兩種格式:1) ? U 地址該命令從指定地址開(kāi)始,反匯編 32個(gè)字節(jié),若地址省略,則從上一個(gè) U 命令的最后一條指令 的下 一個(gè)單元開(kāi)始顯示 32 個(gè)字節(jié)。2) ? U 范闈該命令對(duì)指定范圍的內(nèi)存單元進(jìn)行反匯編,例如:-U 04BA : 0100 0108或一U04BA : 0100 L9此二命令是等效的。運(yùn)行命令G,格式為:? G 二地址 1地址 2地址 3ooo 其中地址 1 規(guī)定了運(yùn)行起始地址,后面的若干地址均為斷點(diǎn)地址。追蹤命令T,有兩種格式:

8、1 ) 逐條指令追蹤:?T 二地址 該命令從指定地址起執(zhí)行一條指令后停下來(lái),顯示寄存器內(nèi)容牙口狀態(tài)值2) 多條指令追蹤: 地址值該命令從指定地址起執(zhí)行n條命令后停下來(lái),n由值確定。 顯示內(nèi)存單元內(nèi)容的命令 D,格式為:-D 地址或-D 范圍修改內(nèi)存單元內(nèi)容的命令E,它有兩種格式:1)用給定的內(nèi)容代替指定范圍的單元內(nèi)容:? E地址內(nèi)容表例如:-E 2000: 0100 F3 “XYZ 8D其中F3, “X” “丫”和8Z”各占一個(gè)字節(jié),用這五個(gè)字節(jié)代替原內(nèi)存單元 2000: 0100到0104的內(nèi)容, “X”“ Y”將分別按它們的ASCII碼值代入。2)逐個(gè)單元相繼地修改:-E地址例如:-E 1

9、00:18E4: 0100 89.78此命令是將原100號(hào)單元的內(nèi)容89改為78。78是程序員鍵入的。檢查和修改寄存器內(nèi)容的命令R,它有三種方式:1)顯示CPU內(nèi)部所有寄存器內(nèi)容和標(biāo)志位狀態(tài);格式為:? R R命令顯示中標(biāo)志位狀態(tài)的含義如下表所示:標(biāo)志名置位復(fù)位溢出Oveflow (是/否)OVNV方向Directi on (減量/增量)DNUP中Interrupt (允許/屏蔽)EIDI符號(hào)Sign (負(fù)/正)NGPL零Zero (是/否)ZRNZ輔助進(jìn)位Auxiliary Carry (是/否)ACNA奇偶Parity (偶倚)PEPO進(jìn)位Carry (是/否)CYNC2)顯示和修改某個(gè)指

10、定寄存器內(nèi)容,格式為: -R寄存器名例如打入:-RAX 系統(tǒng)將響應(yīng)如下:AX F1F4表示AX當(dāng)前內(nèi)容為F1F4,此時(shí)若不對(duì)其作修改,可按 ENTER鍵,否則,打入修改后內(nèi) 容,女口:? RBXBX 0369:059F則BX內(nèi)容由0369改為059F3)顯示和修改標(biāo)志位狀態(tài),命令格式為: RF系統(tǒng)將給出響應(yīng),如OV DN El NG ZR AC PE CY-這時(shí)若不作修改可按ENTER鍵,否則在號(hào)Z后鍵入修改值,鍵入順序任意。如OV DN El NG ZR AC PE CY -PONZDINV命名命令N,格式為:? N文件名此命令將文件名格式化在 CS: 5CH的文件控制塊內(nèi),以便使用L或W命

11、令把文件裝入內(nèi)存進(jìn) 行調(diào) 試或者存盤。裝入命令L,它有兩種功能:1) 把磁盤上指定扇區(qū)的內(nèi)容裝入到內(nèi)存指定地址起始的單元中,格式為:-L地址驅(qū)動(dòng)器扇區(qū)號(hào)扇區(qū)數(shù)2) 裝入指定文件,格式為:-L 地址此命令裝入已在CS: 5CH屮格式化的文件控制塊所指定的文件。在用L命令前,BX和CX中應(yīng)包含所讀文件的字節(jié)數(shù)。(10) 寫命令W,有兩種格式:1) 把數(shù)據(jù)寫入磁盤的指定扇區(qū): -W地址驅(qū)動(dòng)器扇區(qū)號(hào)扇區(qū)數(shù)2) 把數(shù)據(jù)寫入指定文件中:-W 地址此命令把指定內(nèi)存區(qū)域屮的數(shù)據(jù)寫入由CS: 5CH處的FCB所規(guī)定的文件屮。在用W命令前,BX和CX中應(yīng)包含要寫入文件的字節(jié)數(shù)。(11) 退出DEBUG命令Q,該命

12、令格式為Q它退;1| DEBUG程序,返回DOS,但該命令本身并不把在內(nèi)存中的文件存盤,如需存盤,應(yīng)在執(zhí)行Q命令前先執(zhí)行寫命令W。三. 操作步驟1調(diào)用字處理程序建立源程序文件如圖1-1所示。DATA SEGMENTSTRING1 DB J Move the cursor backwardSTRING2 DB J Move the cursor backwardMESSIDB Match., 13, 10,$MESS2DB No Match., 13, 10,$DATA ENDSSTACK SEGMENTDB 40 DUP (?)STACK ENDSPROGXAM SEGMENTASSUME C

13、S:PROGNAM, DS:DATA, ES:DATA, SS:STACKMAIN PROC FARSTART: XOR AX, AXPUSH AXPUSH DSMOV AX,DATAMOV DS, AXMOV ES, AXMOV AX, STACKMOV SS, AXLEA S1,STRING1LEA DI,STRING2CLDMOV CX, 25REPZ CMPSBJZ MATCHLEA DX,MESS2JMP SHORT DTSPMATCH: LEA DX, MESSIDISP: MOV AH,09h1NT 21HRETMAIN ENDPPROGNAM ENDSEND START圖 IT

14、2. 在DOS壞境F,用匯編程序MASM對(duì)源文件匯編產(chǎn)生目標(biāo)文件 OBJ,命令格式如下: D:ASMMASM 源程序文件名 .asm如匯編程序指示出錯(cuò)則需要重新調(diào)用編輯程序修改錯(cuò)誤,直至匯編通過(guò)為止。3. 用連接程序 link 產(chǎn)生執(zhí)行文件 exeD:ASMLINK 源程序文件名 .obj4. 執(zhí)行程序可直接從DOS執(zhí)行程序如下:源程序文件名Match的內(nèi)此時(shí)可看到程序的運(yùn)行結(jié)果。為了調(diào)試程序的另一部分,可重新進(jìn)行編輯程序修改兩個(gè)字符串 容,使它們互不相同,如修改后的數(shù)據(jù)段為DATA SEGMENTSTRINT1 DB Move the cursor backward/STRINT2 DB M

15、ove the cursor fordward/MessiDB Match 二 13,10,$Mess2 DB No Match.,13,10,$DATA ENDS然后,重新匯編、連接、執(zhí)行,結(jié)果為:No match! 至此,程序已調(diào)試完畢,運(yùn)行結(jié)果正確。5. 用 DEBUG 調(diào)試程序.exe另一種調(diào)試程序的方法是使用 DEBUG 程序。調(diào)用格式如下: D:asmDEBUG 源程序文件名 此吋, DEBUG 已將執(zhí)行程序裝入內(nèi)存,可直接用 g 命令運(yùn)行程序。-gMatch.為了調(diào)試程序的另一部分,可在 DEBUG屮修改字符串內(nèi)容??上扔胾命令顯示程序,以便了14F0:0000 IEPUSHDS

16、14F0:0001 33C0XORAX,AX14F0:0003 50PUSHAX14F0:0004 B8E814MOVAXJ4E814F0:0007 8ED8MOVDS,AX14F0:0009 SECOMOVES,AX14F0:000BB8ED14MOVAX,14ED14F0:000E 8ED0MOVSS,AX14F0:0010 8D360000LEASI,000014F0:0014 8D3E1800LEADI,001814F0:0018FCCLD14F0:0019B91900MOVCX,001914F0:001CF3REPZ14F0:001D A6CMPSB14F0:001E7406JZ00

17、2614F0:0020 8D163900LEADX,003914F0:0024 EB04JMP002A14F0:0026 8D163000LEADX,003014F0:002A B409MOVAH,0914F0:002C CD21INT2114F0:002E CBRETF解指令地址。顯示結(jié)果如圖1? 2所示圖1-2-gObAX=14E8 BX=0000DS=14E8 ES=14E8將斷點(diǎn)設(shè)置在程序的主要部分運(yùn)行以前,并查看數(shù)據(jù)區(qū)的內(nèi)容3所示。CX=OOAF DX=OOOO SP=FFFC BP=OOOO SI=OOOO DI=OOOO如圖 1SS= 14E8 CS= 14F0 IP=000B

18、NV UP El PL ZR NA PE NC14F0:000B B8ED14MOVAXJ4ED-dO14E8:00004D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 2014E&001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 6814E&002065 20 63 75 72 73 6F 72-20 62 61 63 6B 77 61 7214E8:003064 2E 4D 61 74 63 68 2E-0D 0A 24 4E 6F 20 4D 6114E8:004074 63 68 2E 0D 0A

19、24 00-00 00 00 00 00 00 00 0014E&005000 ()0 0() 00 ()0 ()0 00 00-00 ()0 00 0() 0() ()0 00 00Move the cursor backward.Move th e cursor backwar d.Match.$No Ma tc ? ? ? $? ? ? 14E&006014E&007000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0圖01-3用 e 命令修改數(shù)據(jù)區(qū)的字

20、符串,操作如下:-e2914E8:0029 62.6661.6f 63.72 6B.77 77.61 61.72 72.6414E8:0030 64.2e2E.20再次用 d 命令杳看修改結(jié)果。14E&00004D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20Move the cursor14E8:001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68backward.Move th14E8:002065 20 63 75 72 73 6F 72-20 66 6F 72 77 61 72 64e cur

21、sor forward14E8:00302E 20 4D61 74 63 68 2E-0D 0A 24 4E 6F 20 4D61? Match.SNo Ma14E&004074 63 68 2E 0D OA 24 00-00 00 00 00 00 00 00 00tc h-dO14E8:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 14E&0060 0014E8:0070 00 00 00 00 00 00 00 00-00 00 00 00

22、 00 00 00 00圖 1-4用 g 命令運(yùn)行程序,結(jié)果為:-gNo Match用 q 命令退出 debug.?q至此,程序已調(diào)試完畢。為了進(jìn)一步說(shuō)明debug命令的使用方法,我們?cè)俅沃貜?fù)上述程序的調(diào)試過(guò)程,只是使用e、a、f來(lái)修改數(shù)據(jù)區(qū)的內(nèi)容而己。必須注意,由于在用debug調(diào)試程序時(shí),只能 修改當(dāng)時(shí)有關(guān)的內(nèi)存單元內(nèi)容,因此重新用 debug裝入執(zhí)行程序時(shí),仍是原來(lái)在磁盤文件中的內(nèi)容。操作如下:命令提示符: debug a 1 .exe-gObAX=14E8 BX=0000 CX=00AF DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=14E8 ES

23、=14E8 SS=14E8 CS=14F0 IP=()()0B NV UP El PL ZR NA PE NC 14F0:000BB8ED14MOV AX,14ED14E8:00004D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20Move the cursor14E8:001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68backward.Move th14E8:002065 20 63 75 72 73 6F 72-20 62 61 63 6B 77 61 72e cursor backwar14E

24、8:003064 2E 4D61 74 63 68 2E-0D 0A 24 4E 6F 20 4D61d.Match.$No Ma14E&004074 63 68 2E 0D 0A 24 00-00 00 00 00 00 00 00 00tch ? ? ? $ ?14E&005000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0014E&006000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0014E8:007000 00 00 00 00 00 0() 00-00 ()0 00 00 00 ()0 ()0

25、 00-e29 Yorward/ZO-dO14E&0000 4D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20Move the cursor14E8:0010 62 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68backward.Move th14E8:0020 65 20 63 75 72 73 6F 72-20 66 6F 72 77 61 72 64e cursor forward14E&0030 2E 20 4D61 74 63 68 2E-0D 0A 24 4E 6F 20 4D61Match.$N

26、o Ma14E&0040 74 63 68 2E 0D 0A 24 00-00 00 00 00 00 00 00 00tch? .$-dO14E8:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0014E&0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0014E8:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00圖1-5可見(jiàn)這種e命令方式避免使用ASCII碼進(jìn)入,對(duì)用戶是比較方便的。英中最后一個(gè) 20是空格爭(zhēng) 的 ASCII碼,以

27、補(bǔ)足原來(lái)的字節(jié)數(shù)。也可使用a命令把數(shù)據(jù)區(qū)恢復(fù)原狀,具體如下:14E&0000 4D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20Move the cursor14E8:001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68backward.Move th14E&002065 20 63 75 72 73 6F 72-20 66 6F 72 77 61 72 64e cursor forward14E8:0030 2E 20 4D61 74 63 68 2E-0D 0A 24 4E 6F 20 4D611

28、4E8:004074 63 68 2E 0D 0A 24 00-00 00 00 00 00 00 00 0014E&005000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? Match.$NoMatch.$14E&006000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 0014E8:007000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00-al4e8:2914E8:0029 db backward?14E&0032-dO14E&00004D 6F 76 65

29、 20 74 68 65-20 63 75 72 73 6F 72 2014E8:001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 6814E8:002065 20 63 75 72 73 6F 72-20 62 61 63 6B 77 61 7214E8:003064 2E 4D61 74 63 68 2E-0D 0A 24 4E 6F 20 4D6114E&0040-d074 63 68 2E 0D 0A 24 00-00 00 00 00 00 00 00 00Move the cursor backward.Move th e curso

30、r backwar d? Match.? $NoMatc h ? $? ?14E8:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00-00 ()0 00 00 00 ()0 ()014E8:0060 00 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00圖1614E8:0070 圖 1 6由于a是匯編命令,因此信息是用匯編格式進(jìn)入的。如果修改的是程序屮的語(yǔ)句,方法也是相 同的,下面我們還會(huì)看到這類的操作。為了進(jìn)一步說(shuō)明程序的調(diào)試過(guò)程, 現(xiàn)假設(shè)程序

31、編制錯(cuò)誤:在源文件中把jz match改為jnz matcho該程 序經(jīng)過(guò)匯編、連接后,進(jìn)入debug調(diào)試如下:-gNo match!? gl9AX=14DF BX=0000DS=14DF ES=14DF14E4:0019A6結(jié)果是錯(cuò)誤的(因?yàn)樵次募袃蓚€(gè)字符串是相同的)。為檢查程序的錯(cuò)誤,將斷點(diǎn)設(shè)在比較串之BP=0000 SI=0000 DI=0019NV UP El PL NZ NA FO NCCX=0019 DX=0000 SP 二 FFFCSS= 14DF CS= 14E4 IP=0019CMPSBAX=14DF BX=0000CX=0019DX=0000 SP=FFFC用t命令再執(zhí)行

32、一條指令以觀察ZF標(biāo)志的狀況。DS=14DF ES=14DF SS=14DF CS= 14E4 I P=001ABP=0000 SI=0001 DI=001ANV UP El PL ZR NA PE NC14E4:001A7506JNZ 0022AX=14DF BX=OOOO CX=0019 DX=OOOO SP=FFFC BP=OOOO S1=000 1DI=001ADS=14DF ES=14DF SS=14DF CS=14E4 IP 二()01 C NV UP El PL ZR NA PE NC14E4:001C 8D163B00 LEA DXJ003B圖1-7為查到003B單元的內(nèi)容,可

33、查數(shù)據(jù)區(qū)如下:-d0DS:003B=6F4E14DF:0000 4D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20Move the cursor14DF:001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68backward.Move th14DF:002065 20 63 75 72 73 6F 72-20 62 61 63 6B 77 61 72e cursor backward.Match.$No Ma14DF:003064 2E 4D61 74 63 68 2E-0D 0A 24 4E 6F 2

34、0 4D61指令以觀察指令的轉(zhuǎn)向。14DF:004074 63 68 2E 0D 0A 24 00-00 00 00 00 00 00 00 00 tc (*! ? ?14DF:0050 IE B8 ()0 ()0 5() B8 DF 14-8E D8 8E CO 8D 36 00 00 $?.P?.?.6. ?14DF:0060 8D 3E 19 00 FC B9 19 00-F3 A6 75 06 8D 16 3B ()0 .u.;.14DF:0070 EB 04 8D 16 32 00 B4 09-CD 21 CB EB 78 80 3E A4圖1-8可見(jiàn)003B單元的內(nèi)容為4E,即 N

35、的ASCII碼,后面跟的是No match!,這說(shuō)明jnz指令使用錯(cuò) 誤,應(yīng) 改為JZ MATCH.可用a命令修改,并用u命令檢查修改結(jié)果。運(yùn)行結(jié)果說(shuō)明程序修改正確。-al914E4:0019jz002214E4:001B-u014E4:0000 IEPUSHDS14E4:0001 B80000MOVAX,000014E4:0004 50PUSHAX14E4:0005 B8DF14MOVAXJ4DF14E4:0008 8ED8MOVDS,AX14E4:000A SECOMOVES,AX14E4:000C 8D360000LEASI,000014E4:0010 8D3E1900LEADI,001

36、914E4:0014FCCLD14E4:0015 B91900MOVCX,001914E4:0018F3REPZ14E4:0019 7407JZ002214E4:001B06PUSHES14E4:001C8D163B00LEADXJ003B-ripIP001C:0-g Match.圖 1-9-U14E4:0000 IEPUSHDS14E4:0001 B80000MOVAX,000014E4:0004 50PUSHAX丿段地址14E4:0005 B8DF14MOVAX,14DF-a14E4:0008 8ED8MOVDS,AX14E4:000A 8EC0MOVES,AX14E4:000C 8D36

37、0000LEASI,000014E4:0010 8D3E1900LEADI,001914E4:0014FCCLD14E4:0015 B91900MOVCX,001914E4:0018F3REPZI4E4:0019A6CMPSB14E4:001A7506JNZ002214E4:001C 8D163B00LEA 圖M0DXJ003B在這里應(yīng)該注意,在使用a命令修改數(shù)據(jù)區(qū)時(shí),必須給出數(shù)據(jù)段的地址,而在修改程序區(qū)時(shí), a命令的缺省段為代碼段,所以直接給出偏移地址就可以了。在調(diào)試過(guò)程中,也可以用t命令逐條跟蹤程序的執(zhí)行。下面列出斷點(diǎn)停在 Ob后,用f命令修改 數(shù)據(jù) 區(qū)中字符串的內(nèi)容,然后用t命令逐條執(zhí)行

38、指令的情況。首先用u命令查看數(shù)據(jù)段的段地址。用f命令修改數(shù)據(jù)區(qū)中字符串的內(nèi)容。其中14df:29為字符串的起始地址,1 (字母L)9表示需要修改的長(zhǎng)度為9個(gè)字節(jié)。-fl4df:29 1 9 Torward.AO查看修改后的內(nèi)容:由于I4DF:OOOO4D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20Move the cursor14DF:001062 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68backward.Move th14DF:002065 20 63 75 72 73 6F 72-20 66 6F

39、 72 77 61 72 64e cursor forward14DF:00302E 20 4D61 74 63 68 2E-0D 0A 24 4E 6F 20 4D61? Match.$No Ma14DF:004074 63 68 2E 0D 0A 24 00-00 00 00 00 00 00 00 00? ? ?& ?14DF:00501EB8 00 00 50 B8 DF 14-8E D8 8E CO 8D 36 00 00用t命令逐條跟蹤程序的執(zhí)行。-dl4df:0AX=0()()()BX=()()()0CX=007BDX=()()()()SP=FFFEBP=()0()0SI=0()

40、0()DI=()000DS=14CFES=14CFSS=14DFCS=14E4IP=0001NV UP El PL NZ NA PO NC14E4:0001B80000MOVAX,0000-lAX=0000BX=0000CX=007BDX=0000SP=FFFEBP=0000SI=0000DI=0000DS=14CFES=14CFSS=14DFCS=14E4IP=0004NV UP El PL NZ NA PO NC14E4:0004 50PUSHAX-IAX=0000BX=0000CX=007BDX=0000BP=OOOSP二 FFFCOSI=0000DI=0000DS=14CF ES=14

41、CF SS=14DF CS=14E4IP=0005 NV UP El PL NZ NA PO NC-tAX=14DF BX=OOOODS=14CF ES=14CF14E4:0008 8ED8-tAX=14DF BX=0000DS=14DF ES=14CF14E4:000A 8EC0-tAX=14DF BX=0000DS=14DF ES 二 14DF14E4:000C 8D360000-tAX=14DF BX=()O()ODS=14DF ES=14DF 14E4:0010 8D3E1900 -tAX=14DF BX=0000DS=14DF ES=14DF 14E4:0014FC-tAX=14DF

42、 BX=0000DS=14DF ES=14DF 14E4:0015 B91900 -tAX=14DF BX=0000DS=14DF ES=14DF14E4:0018F314E4:0019A6-tAX=14DF BX=0000DS=14DF ES=14DF14E4:0018F314E4:0019A6-tAX=14DF BX=0000DS=14DF ES=14DF14E4:0018F314E4:0019A6-tAX=14DF BX=0000DS=14DF ES=14DF14E4:0018F3CX=007BDX=0000SP=FFFCBP=0000SI=0000 DI=0000SS=14DFCS=1

43、4E4IP=0008NV UP El PL NZ NA PO NCMOVDS,AXCX=007BDX=0000SP=FFFCBP 二 0000S1=0000 DI=0000SS=14DFCS=14E4IP=000ANV UP El PL NZ NA PO NCMOVES,AXCX=007BDX=0000SP=FFFCBP=0000SI=0000 DI=0000SS=14DFCS=14E4IP=000CNV UP El PL NZ NA PO NCLEASI,0000DS:0000=6F4DCX=007BDX=0000SP=FFFCBP=()0()0SI=000() DI=0()0()SS=14

44、DFCS=14E4IP=0010NV UP El PL NZ NA PO NCLEADI,0019DS:0019=6F4DCX=007BDX=0000SP=FFFCBP=0000SI=0000 DI=0019SS=14DFCS=14E4IP 二()014NV UP El PL NZ NA PO NCCLDCX=007B DX=0000 SP=FFFC BP=OOOO SI=OOOO DI=0019SS=14DF CS=14E4 IP=0015 NV UP El PL NZ NA PO NCMOV CX,0019CX=OOI9 DX=0000 SP 二 FFFC BP 二 0000 SI=000

45、0 DI=0019SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NCREPZCMPSBCX=0018 DX=0000 SP 二 FFFC BP 二 0000 SI=0001SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NCREPZCMPSBDI=001ACX=0017 DX=0000 SP 二 FFFC BP 二 0000 SI=0002 DI=001BSS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NCREPZCMPSBCX=0016 DX=0000 SP=FFF

46、C BP=0000 SI=0003 DI=001CSS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NCREPZ-tAX=14DF BX=OOOODS=14DF ES=14DFCX=0015 DX=OOOO SP=FFFC BP=OOOO SI=0004 DI=001D14E4:0018 F3SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=14DFCX=0014 DX=0000 SP=FFFC BP=0000 SI

47、=0005 DI=001E14E4:0018F3SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=14DFCX=0013 DX=0000 SP=FFFC BP=0000 SI=0006 DI=001F14E4:0018 F3SS=14DF CS= 14E4 1P=OO 18 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=14DFCX=0012 DX=0000 S

48、P=FFFC BP=0000 SI=0007 DI=002014E4:0018 F3SS=14DF CS= 14E4 1P=OO 18 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=14DFCX=0011 DX=0000 SP=FFFC BP=0000 SI=0008 DI=002114E4:0018 F3SS=14DF CS= 14E4 1P=OO 18 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=1

49、4DFCX=0010 DX=0000 SP=FFFC BP=0000 SI=0009 DI=002214E4:0018 F3SS=14DF CS=14E4 IP二 0018 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=14DFCX=000F DX=0000 SP=FFFC BP=0000 SI=000A DI=002314E4:0018 F3SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOO

50、CMPSBDS=14DF ES=14DFCX=000E DX=0000 SP=FFFC BP=0000 SI=000B DI=002414E4:0018 F3SS=14DF CS= 14E4 1P=OO 18 NV UP El PL NZ NA PO NC14E4:0019A6REPZ-tAX=14DF BX=OOOOCMPSBDS=14DF ES=14DFCX=000D DX=0000 SP=FFFC BP=0000 SI=000C DI=0025SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NC14E4:0018F314E4:0019 A6REP

51、ZCMPSBAX=14DF BX=OOOO CX=OOOC DX=OOOO SP=FFFC BP=OOOO SI=OOOD Dl=0026DS=14DF ES=14DF SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NC 14E4:0018F3 REPZ 14E4:0019 A6 CMPSB-tAX=14DF BX=0000 CX=000B DX=0000 SP 二 FFFC BP=0000 SI=000E DI=0027DS=14DF ES=14DF SS=14DF CS=14E4 IP二 0018NV UP El PL NZ NA PO NC14E4:0018F3REPZ14E4:0019 A6CMPSB-tAX=14DF BX=0000 CX=000A DX=0000 SP=FFFC BP=0000 SI=000F DI=0028DS=14DF ES=14DF SS=14DF CS=14E4 IP=0018 NV UP El PL NZ NA PO NC 14E4:0018F3 REPZ 14E4:0019A6CMPSB-tAX=14DF BX=0000 CX=0009 DX=0000 SP=FFFC BP=0000 SI=0010 Dl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論