[教學(xué)研究]計(jì)算機(jī)組成與結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書_第1頁
[教學(xué)研究]計(jì)算機(jī)組成與結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書_第2頁
[教學(xué)研究]計(jì)算機(jī)組成與結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書_第3頁
[教學(xué)研究]計(jì)算機(jī)組成與結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書_第4頁
[教學(xué)研究]計(jì)算機(jī)組成與結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)體系結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書目 錄實(shí)驗(yàn)一 熟悉匯編語言程序開發(fā)環(huán)境3實(shí)驗(yàn)二 debug的啟動(dòng)及其基本命令的使用4實(shí)驗(yàn)三 系統(tǒng)功能調(diào)用12實(shí)驗(yàn)四 內(nèi)存操作數(shù)及尋址方法13實(shí)驗(yàn)五 分支程序設(shè)計(jì)14實(shí)驗(yàn)六 匯編語言程序的調(diào)試與運(yùn)行15實(shí)驗(yàn)七 循環(huán)程序設(shè)計(jì)17實(shí)驗(yàn)八 順序程序設(shè)計(jì)18實(shí)驗(yàn)九 子程序設(shè)計(jì)20實(shí)驗(yàn)十 循環(huán)程序設(shè)計(jì)23實(shí)驗(yàn)十二 綜合程序設(shè)計(jì)26實(shí)驗(yàn)十三 綜合程序設(shè)計(jì)27附錄-debug使用手冊(cè)28附錄 匯編軟件masm和調(diào)試、工具軟件debug使用311.1 實(shí) 驗(yàn) 目 的311.2 相關(guān)基礎(chǔ)知識(shí)311.2.1 匯編語言程序上機(jī)步驟311.2.2 調(diào)試工具軟件debug341.3 匯編語言上機(jī)實(shí)

2、驗(yàn)371.4 應(yīng)用debug軟件調(diào)試程序?qū)嶒?yàn)39實(shí)驗(yàn)一 熟悉匯編語言程序開發(fā)環(huán)境一、實(shí)驗(yàn)學(xué)時(shí):2二、實(shí)驗(yàn)類型:驗(yàn)證性三、開出要求:必修四實(shí)驗(yàn)?zāi)康?、熟悉在pc機(jī)上編輯、匯編、連接、調(diào)試和運(yùn)行匯編語言程序的過程。2、熟悉匯編過程中一些常見出錯(cuò)信息。五實(shí)驗(yàn)內(nèi)容 1、啟動(dòng)edit編輯軟件,輸入下面的匯編源程序(不包括行號(hào)),用s+學(xué)號(hào)后4位+.asm作為文件名保存到d:盤上, 然后匯編、連接并調(diào)試運(yùn)行。1 data segment2 out1 db hello world$3 ax db my name is djx$ ;有錯(cuò)行,將ax改為ax14 data ens ;有錯(cuò)行,將ens改為ends5

3、6 code segment7 assume cs:code;ds:data8 start: mov ax,data9 mov ds,ax10 lea dx,out111 mov ah,912 int 21h1314 mov dl,0a35h ;有錯(cuò)行,將0a35h改為0ah15 mov ah,216 int 21h17 mov dl,0dh18 moo ah,2 ;有錯(cuò)行,將moo改為mov19 int 21h2021 lea dx,ax ; 有錯(cuò)行,將ax改為ax122 mov ah,923 int 21h24 mov ah,4ch25 int 21h26 code ends27 end

4、start六、實(shí)驗(yàn)條件 dos運(yùn)行環(huán)境七實(shí)驗(yàn)報(bào)告1、寫出編輯、匯編、連接和運(yùn)行匯編語言程序的完整實(shí)驗(yàn)步驟及運(yùn)行結(jié)果。2、理解匯編出錯(cuò)信息并寫出中文含義。3實(shí)驗(yàn)體會(huì)八、實(shí)驗(yàn)成績?cè)u(píng)定辦法根據(jù)學(xué)生的實(shí)驗(yàn)預(yù)習(xí)、實(shí)驗(yàn)紀(jì)律、實(shí)驗(yàn)動(dòng)手能力、實(shí)驗(yàn)報(bào)告結(jié)果及編程技巧,進(jìn)行綜合評(píng)定,給出a(90)、b(80)、c(70)、d(60)、e(不及格)。實(shí)驗(yàn)二 debug的啟動(dòng)及其基本命令的使用一實(shí)驗(yàn)?zāi)康模赫莆誨ebug 的基本命令及其功能二實(shí)驗(yàn)內(nèi)容:debug是專門為匯編語言設(shè)計(jì)的一種調(diào)試工具,它通過步進(jìn),設(shè)置斷點(diǎn)等方式為匯編語言程序員提供了非常有效的調(diào)試手段。debug的命令都是一個(gè)字母,后跟一個(gè)或多個(gè)參數(shù):字母參

5、數(shù)命令的使用中注意:字母不分大小寫;只使用16進(jìn)制數(shù),沒有后綴字母;分隔符(空格或逗號(hào))只在兩個(gè)數(shù)值之間是必須的,命令和參數(shù)間可無分隔符;每個(gè)命令只有按了回車鍵后才有效,可以用ctrl+break中止命令的執(zhí)行;命令如果不符合debug的規(guī)則,則將以“error”提示,并用“”指示錯(cuò)誤位置。許多命令的參數(shù)是主存邏輯地址,形式是“段基地址:偏移地址”。其中,段基地址可以是段寄存器或數(shù)值;偏移地址是數(shù)值。如果不輸入段地址,則采用默認(rèn)值,可以是缺省段寄存器值。如果沒有提供偏移地址,則通常就是當(dāng)前偏移地址。對(duì)主存操作的命令還支持地址范圍這種參數(shù),它的形式是:“開始地址結(jié)束地址”(結(jié)束地址不能具有段地址

6、),或者是:“開始地址l字節(jié)長度”。debug命令一覽:分類命令格式功能簡(jiǎn)介讀寫寄存器r顯示所有寄存器的當(dāng)前內(nèi)容r寄存器名顯示和修改指定寄存器內(nèi)容rf顯示和修改標(biāo)志寄存器內(nèi)容匯編和反匯編a內(nèi)存地址從指定地址開始匯編指令u內(nèi)存塊對(duì)指定內(nèi)存塊進(jìn)行反匯編執(zhí)行指令t:內(nèi)存地址條數(shù)單步或多步執(zhí)行指令p=內(nèi)存地址條數(shù)單步或多步執(zhí)行指令g=內(nèi)存地址連續(xù)執(zhí)行指令g=內(nèi)存地址斷點(diǎn)地址設(shè)斷點(diǎn)執(zhí)行程序讀寫內(nèi)存d內(nèi)存塊顯示指定內(nèi)存塊內(nèi)容e 內(nèi)存地址 字符或數(shù)值串修改指定內(nèi)存內(nèi)容f 內(nèi)存塊 字符或數(shù)值串填充指定內(nèi)存塊s 內(nèi)存塊 字符串或數(shù)值在指定內(nèi)存塊中查找串m 內(nèi)存塊1 內(nèi)存塊2的首地址復(fù)制內(nèi)存塊內(nèi)容c 內(nèi)存塊1 內(nèi)

7、存塊2的首地址比較兩個(gè)指定內(nèi)存塊讀寫磁盤nd:path文件名.擴(kuò)展名指定欲讀寫的磁盤文件w 內(nèi)存地址將指定內(nèi)存塊寫入文件l 內(nèi)存地址將文件調(diào)入內(nèi)存讀寫i/o端口i 端口地址讀入指定端口的內(nèi)容o 端口地址 數(shù)值將數(shù)據(jù)寫入指定端口十六進(jìn)制加減h 數(shù)值1 數(shù)值2計(jì)算并顯示兩數(shù)之和,兩數(shù)之差退出debugq退出debug,返回dos1、debug程序的啟動(dòng)在dos提示符下,可鍵入命令:c:debugdebug命令的完整格式為:debug d:path文件名 參數(shù)1參數(shù)2。其中d:是盤符,path是路徑,文件名是被調(diào)試文件的名稱,它須是執(zhí)行文件(exe),兩個(gè)參數(shù)是運(yùn)行被調(diào)試文件時(shí)所需要的命令參數(shù),在d

8、ebug程序調(diào)入后,出現(xiàn)提示符“-”,此時(shí),可鍵入所需的debug命令。在啟動(dòng)debug時(shí),如果輸入了文件名,則debug程序把指定文件裝入內(nèi)存。用戶可以通過debug的命令對(duì)指定文件進(jìn)行修改、顯示和執(zhí)行。如果沒有文件名,則是以當(dāng)前內(nèi)存的內(nèi)容工作,或者用命名命令和裝入命令把需要的文件裝入內(nèi)存,然后再用debug的命令進(jìn)行修改、顯示和執(zhí)行。2、debug的主要命令(1)、檢查和修改寄存器內(nèi)容的命令r,它有三種方式:1)顯示cpu內(nèi)部所有寄存器內(nèi)容和標(biāo)志位狀態(tài),格式為:-r例如:輸入-r,得到結(jié)果如下:2)顯示和修改某個(gè)指定寄存器內(nèi)容,格式為:-r 寄存器名例如:輸入-r ax,得到結(jié)果如下:表示

9、ax當(dāng)前內(nèi)容為0000,此時(shí)若不對(duì)其作修改,可按enter鍵,否則,輸入修改內(nèi)容后,如:則ax內(nèi)容由0000改為0a0a3)r命令顯示標(biāo)志寄存器標(biāo)志位狀態(tài)的含義如下表所示:標(biāo) 志 名置 位(值為1)復(fù) 位(值為0)溢出overflow(是/否)ovnv方向direction(減量/增量)dnup中斷interrupt(允許/屏蔽)eidi符號(hào)sign(負(fù)/正)ngpl零zero(是/否)zrnz輔助進(jìn)位auxiliary carry(是/否)acna奇偶parity(偶/奇)pepo進(jìn)位carry(是/否)cync修改標(biāo)志位狀態(tài),命令格式為:-rf例如:輸入-rf,輸出結(jié)果如下:這時(shí)若不作修改

10、可按enter鍵,否則在“-”號(hào)之后鍵入修改值,鍵入順序任意。如:(2)、匯編命令a,格式為:-a地址該命令從指定地址開始允許輸入?yún)R編語句,把它們匯編成機(jī)器代碼相繼存放在從指定地址開始的存儲(chǔ)器中。a命令中如果沒有指定地址,則接著上一個(gè)a命令的最后一個(gè)單元開始;若還沒有使用過a命令,則從當(dāng)前cs:ip開始。例如:輸入代碼,則代碼存儲(chǔ)在oafo:0100至oafo:010d單元中。(3)、反匯編命令u,有兩種格式:1)-u地址該命令從指定地址開始,反匯編32個(gè)字節(jié),若地址省略,則從上一個(gè)u命令的最后一條指令的下一個(gè)單元開始顯示32個(gè)字節(jié)。2)-u范圍該命令對(duì)指定范圍的內(nèi)存單元進(jìn)行反匯編,例如:-u

11、 0100 011e或-u 100 11e 或-u 0af0:0100 011e或u 0af0:0100 l1f(l用來引導(dǎo)指令的條數(shù),1f為指令的條數(shù)),這些命令是等效的。(4)、運(yùn)行命令g,格式為:-g =地址1地址2地址3。其中地址1規(guī)定了運(yùn)行起始地址,后面的若干地址均為斷點(diǎn)地址。若省略地址,則運(yùn)行從ip所指的地址開始。例如:(5)、追蹤命令t,有兩種格式:1)逐條指令追蹤:-t該命令從指定地址起執(zhí)行一條指令后停下來,顯示寄存器內(nèi)容和狀態(tài)值。例如:2)多條指令追蹤:(有問題)-t=地址值該命令從指定地址起執(zhí)行n條命令后停下來,n由值確定。(6)、顯示內(nèi)存單元內(nèi)容的命令d,格式為:-d地址

12、(從給出的地址開始連續(xù)顯示128個(gè)字節(jié)的單元內(nèi)容)或-d范圍,例如:(7)、修改內(nèi)存單元內(nèi)容的命令e,它有兩種格式:1)用給定的內(nèi)容代替指定范圍的單元內(nèi)容:-e地址 內(nèi)容表 例如:-e 2000:0100 f3 “xyz” 8d其中f3,“x”“y”“z”和8d各占一個(gè)字節(jié),用這五個(gè)字節(jié)代替原內(nèi)存單元2000:0100到0104的內(nèi)容,“x”“y”“z”將分別按它們的ascii碼值代入。2)逐個(gè)單元相繼地修改:-e地址例如:-e 100:0af0:0100 f3.e7此命令是將原100號(hào)單元的內(nèi)容f3改為e7。e7是鍵入值。(8)、命名命令n,格式為:-n 文件名此命令將文件名格式化在cs:5

13、ch的文件控制塊內(nèi),以便使用l或w命令把文件裝入內(nèi)存進(jìn)行調(diào)試或者存盤。例如:(9)、裝入命令l,它有兩種功能:1)把磁盤上指定扇區(qū)的內(nèi)容裝入到內(nèi)存指定地址起始的單元中,格式為:-l 地址 驅(qū)動(dòng)器 扇區(qū)號(hào) 扇區(qū)個(gè)數(shù)2)裝入指定文件,格式為:-l 地址此命令裝入已在cs:5ch中格式化的文件控制塊所指定的文件。在用l命令前,bx和cx中應(yīng)包含所讀文件的字節(jié)數(shù)。3)裝入已在文件控制塊中的文件,格式為:-l此命令與-l 地址相同功能。(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

14、:5ch處的fcb所規(guī)定的文件中。在用w命令前,bx和cx中應(yīng)包含要寫入文件的字節(jié)數(shù)。(11)、十六進(jìn)制運(yùn)算命令h,格式為:h數(shù)據(jù)1數(shù)據(jù)2其功能是將兩個(gè)十六進(jìn)制數(shù)進(jìn)行相加、相減運(yùn)算,結(jié)果顯示在屏幕上。例如:(12)、退出debug命令q,該命令格式為:-q它退出debug程序,返回dos,但該命令本身并不把在內(nèi)存中的文件存盤,如需存盤,應(yīng)在執(zhí)行q命令前先執(zhí)行寫命令w。三實(shí)驗(yàn)要求:用匯編語言編寫一個(gè)計(jì)算“3+5”的加法程序,并將結(jié)果輸出到屏幕上。四實(shí)驗(yàn)報(bào)告:寫出在debug狀態(tài)下編寫、運(yùn)行程序的過程以及調(diào)試所中遇到的問題是如何解決的,并對(duì)調(diào)試過程中的問題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。實(shí)驗(yàn)三 系統(tǒng)

15、功能調(diào)用一、實(shí)驗(yàn)學(xué)時(shí):2二、實(shí)驗(yàn)類型:驗(yàn)證性三、開出要求:必修四、實(shí)驗(yàn)?zāi)康?、掌握接受鍵盤數(shù)據(jù)的方法,并了解將鍵盤數(shù)據(jù)顯示時(shí),須轉(zhuǎn)為ascii碼的原理。2、掌握dos功能調(diào)用的編程方法。五、實(shí)驗(yàn)內(nèi)容試編寫一個(gè)匯編語言程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來。六、實(shí)驗(yàn)條件 dos運(yùn)行環(huán)境七、實(shí)驗(yàn)步驟編寫匯編語言程序,利用dos系統(tǒng)功能調(diào)用int21h的1號(hào)功能從鍵盤輸入一個(gè)字符并利用2號(hào)功能在顯示器上顯示這個(gè)字符。八、實(shí)驗(yàn)報(bào)告1、程序的功能、結(jié)構(gòu),程序流程圖。2、上機(jī)實(shí)驗(yàn)步驟、實(shí)驗(yàn)所遇到的問題及解決的方法,實(shí)驗(yàn)體會(huì)。九、實(shí)驗(yàn)成績?cè)u(píng)定辦法根據(jù)學(xué)生的實(shí)驗(yàn)預(yù)習(xí)、實(shí)驗(yàn)紀(jì)律、實(shí)驗(yàn)動(dòng)手能力、實(shí)驗(yàn)報(bào)告

16、結(jié)果及編程技巧,進(jìn)行綜合評(píng)定,給出a(90)、b(80)、c(70)、d(60)、e(不及格)。實(shí)驗(yàn)四 內(nèi)存操作數(shù)及尋址方法一實(shí)驗(yàn)?zāi)康模?、熟練掌握debug的常用命令,學(xué)會(huì)用debug調(diào)試程序。2、掌握數(shù)據(jù)在內(nèi)存中的存放方式和內(nèi)存操作數(shù)的幾種尋址方式。3、掌握簡(jiǎn)單指令的執(zhí)行過程。二實(shí)驗(yàn)內(nèi)容:1、設(shè)堆棧指針sp=2000h,ax=3000h,bx=5000h;請(qǐng)編一程序段將ax和bx的內(nèi)容進(jìn)行交換。請(qǐng)用堆棧作為兩寄存器交換內(nèi)容的中間存儲(chǔ)單元,用debug調(diào)試程序進(jìn)行匯編與調(diào)試。2、設(shè)ds=當(dāng)前段地址,bx=0300h,si=0002h;請(qǐng)用debug的命令將存儲(chǔ)器偏移地址300h304h連續(xù)單

17、元順序裝入0ah,0bh,0ch,0dh,0eh。在debug狀態(tài)下送入下面程序,并用單步執(zhí)行的方法,分析每條指令源地址的形成過程,當(dāng)數(shù)據(jù)傳送完畢時(shí),ax中的內(nèi)容是什么。程序清單如下:mov ax,bxmov ax,0304hmov ax,0304hmov ax,bxmov ax,0001bxmov ax,bxsimov ax,0001bxsihlt三實(shí)驗(yàn)要求:1、實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)試方法,以及對(duì)程序結(jié)果的分析等。2、本實(shí)驗(yàn)只要求在debug調(diào)試程序狀態(tài)下進(jìn)行,包括匯編程序、調(diào)試程序和執(zhí)行程序。四實(shí)驗(yàn)報(bào)告:1、程序說明。說明程序的功能、結(jié)構(gòu)。2、調(diào)試說明。包括

18、上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問題是如何解決的,并對(duì)調(diào)試過程中的問題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出源程序清單和執(zhí)行結(jié)果。實(shí)驗(yàn)五 分支程序設(shè)計(jì)一、實(shí)驗(yàn)學(xué)時(shí):2二、實(shí)驗(yàn)類型:驗(yàn)證性三、開出要求:必修四、實(shí)驗(yàn)?zāi)康?、掌握分支程序的結(jié)構(gòu)。2、掌握分支程序的設(shè)計(jì)方法。五、實(shí)驗(yàn)內(nèi)容1.試編寫一個(gè)匯編語言程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來,輸入的其余字符用“?”號(hào)顯示。2. 試編寫一個(gè)匯編語言程序,要求從鍵盤輸入任意2個(gè)1位數(shù),計(jì)算其乘積, 然后除以10,將其商輸出,若輸入其它字符,則輸出“please input number between 0 and 9!”號(hào)。(選做

19、)。六、實(shí)驗(yàn)條件 dos運(yùn)行環(huán)境七、實(shí)驗(yàn)報(bào)告1、程序的功能,程序流程圖。2、上機(jī)實(shí)驗(yàn)步驟、實(shí)驗(yàn)所遇到的問題及解決的方法,實(shí)驗(yàn)體會(huì)。八、思考問題1、大小寫字母之間的轉(zhuǎn)換和數(shù)字與數(shù)字字符之間轉(zhuǎn)換的不同點(diǎn)2、如何同時(shí)將大寫轉(zhuǎn)小寫和將小寫轉(zhuǎn)大寫。九、實(shí)驗(yàn)成績?cè)u(píng)定辦法根據(jù)學(xué)生的實(shí)驗(yàn)預(yù)習(xí)、實(shí)驗(yàn)紀(jì)律、實(shí)驗(yàn)動(dòng)手能力、實(shí)驗(yàn)報(bào)告結(jié)果及編程技巧,進(jìn)行綜合評(píng)定,給出a(90)、b(80)、c(70)、d(60)、e(不及格)。實(shí)驗(yàn)六 匯編語言程序的調(diào)試與運(yùn)行一實(shí)驗(yàn)?zāi)康?學(xué)習(xí)數(shù)據(jù)傳送和算術(shù)運(yùn)算指令的用法2熟悉在pc機(jī)上編輯、匯編、連接、調(diào)試和運(yùn)行匯編語言程序的過程。二實(shí)驗(yàn)內(nèi)容將兩個(gè)多位十進(jìn)制數(shù)相加,要求被加數(shù)和加數(shù)均以

20、ascii碼形式各自順序存放在data1和data2為首的5個(gè)內(nèi)存單元中,結(jié)果送回data1處。三程序框圖圖3.1 兩個(gè)多位十進(jìn)制相加程序流程圖四調(diào)試步驟1編輯源程序,建立一個(gè)以后綴為 asm的文件.2匯編源程序,檢查程序有否錯(cuò)誤,有錯(cuò)時(shí)回到編輯狀態(tài),修改程序中錯(cuò)誤行。無錯(cuò)時(shí)繼續(xù)第3步。3連接目標(biāo)程序,產(chǎn)生可執(zhí)行程序。4debug調(diào)試可執(zhí)行程序,記錄數(shù)據(jù)段的內(nèi)容。 5在操作系統(tǒng)狀態(tài)下,運(yùn)行程序,并記錄屏幕顯示內(nèi)容。被 加 數(shù)加 數(shù)屏 幕 顯 示 內(nèi) 容127320681510732436916508717631實(shí)驗(yàn)七 循環(huán)程序設(shè)計(jì)一、實(shí)驗(yàn)學(xué)時(shí):2二、實(shí)驗(yàn)類型:驗(yàn)證性三、開出要求:必修四、實(shí)驗(yàn)?zāi)?/p>

21、的1、掌握循環(huán)程序的結(jié)構(gòu)。2、掌握循環(huán)程序的設(shè)計(jì)方法五、實(shí)驗(yàn)內(nèi)容1. 試編寫一個(gè)匯編語言程序,要求依次輸出ascii碼0-127對(duì)應(yīng)的128個(gè)字符。2. 假設(shè)以grade為首地址的10個(gè)字的數(shù)組中存有一組學(xué)生成績:89,79,20,60,98,81,78,83,93,71,請(qǐng)編一完整程序找出grade中第一位學(xué)生的成績名次并輸出名次。(提示:一個(gè)學(xué)生的名次等于成績高于等于該學(xué)生的人數(shù)加1)。六、實(shí)驗(yàn)條件 dos運(yùn)行環(huán)境七、實(shí)驗(yàn)報(bào)告1、程序的功能、結(jié)構(gòu),程序流程圖。2、上機(jī)實(shí)驗(yàn)步驟、實(shí)驗(yàn)所遇到的問題及解決的方法,實(shí)驗(yàn)體會(huì)。八、實(shí)驗(yàn)成績?cè)u(píng)定辦法根據(jù)學(xué)生的實(shí)驗(yàn)預(yù)習(xí)、實(shí)驗(yàn)紀(jì)律、實(shí)驗(yàn)動(dòng)手能力、實(shí)驗(yàn)報(bào)告結(jié)

22、果及編程技巧,進(jìn)行綜合評(píng)定,給出a(90)、b(80)、c(70)、d(60)、e(不及格)。實(shí)驗(yàn)八 順序程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?、熟練掌握編寫匯編語言原程序的基本方法和基本框架。2、掌握查表法和查表指令xlat。3、熟練使用debug調(diào)試程序。二實(shí)驗(yàn)內(nèi)容:用查表的方法將一位十六進(jìn)制數(shù)轉(zhuǎn)換成與它相應(yīng)的ascii碼,并將結(jié)果存放到asci單元中。三編程提示:既然指定用查表的方法,那么首先要建立一個(gè)表table。我們?cè)诒碇邪凑帐M(jìn)制數(shù)從小到大的順序放入他們對(duì)應(yīng)的ascii碼值。data segmenttable db 30h,31h,32h,33h,34h,35h,36h,37h db 38h,3

23、9h,41h,42h,43h,44h,45h,46hhex db x ;x為待轉(zhuǎn)換的十六進(jìn)制數(shù)asci db ?;存放轉(zhuǎn)換后的ascii碼data ends四實(shí)驗(yàn)要求:實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)試方法,以及對(duì)程序結(jié)果的分析等五實(shí)驗(yàn)報(bào)告: 1、程序說明。說明程序的功能、結(jié)構(gòu)。2、調(diào)試說明。包括上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問題是如何解決的,并對(duì)調(diào)試過程中的問題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出源程序清單和執(zhí)行結(jié)果。mov al,hexadd al,30hcmp al,39hjbe lab2add al,7lab:mov ascii,almov ah,4c

24、hint 21h。實(shí)驗(yàn)九 子程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康? 掌握循環(huán)程序設(shè)計(jì)的方法(兩重性循環(huán)結(jié)構(gòu))2 掌握正確分配與使用寄存器。二實(shí)驗(yàn)內(nèi)容與要求3 以grade為首地址的10個(gè)字的數(shù)組中保存有學(xué)生成績。建立一個(gè)10個(gè)字的rnak 數(shù)組,并根據(jù)grade中的學(xué)生成績將學(xué)生名次填入rank數(shù)組中(提示:一個(gè)學(xué)生的名次等于成績高于等于該學(xué)生的人數(shù)加1)。4 寄存器分配情況說明如下:5 ax 存放當(dāng)前被測(cè)學(xué)生的成績6 bx 存放當(dāng)前被測(cè)學(xué)生的相對(duì)地址指針7 cx 內(nèi)循環(huán)計(jì)數(shù)值8 dx 存放當(dāng)前被測(cè)學(xué)生的名次計(jì)數(shù)值9 si 內(nèi)循環(huán)測(cè)試時(shí)的地址指針10 di 外循環(huán)計(jì)數(shù)值三程序框圖圖71 程序框圖實(shí)驗(yàn)十 循環(huán)程序

25、設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?、掌握接受鍵盤數(shù)據(jù)的方法,并了解將鍵盤數(shù)據(jù)顯示時(shí),須轉(zhuǎn)為ascii碼的原理。2、掌握dos功能調(diào)用的編程方法。二實(shí)驗(yàn)內(nèi)容:試編寫一個(gè)匯編語言程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來。三編程提示:利用dos功能調(diào)用int21h的1號(hào)功能從鍵盤輸入字符和2號(hào)功能在顯示器上顯示一個(gè)字符。四實(shí)驗(yàn)要求:實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)試方法,以及對(duì)程序結(jié)果的分析等。五實(shí)驗(yàn)報(bào)告:1、程序說明。說明程序的功能、結(jié)構(gòu)。2、調(diào)試說明。包括上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問題是如何解決的,并對(duì)調(diào)試過程中的問題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出源程序清單和

26、執(zhí)行結(jié)果。實(shí)驗(yàn)十一 dos中斷及bios中斷程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康?掌握程序設(shè)計(jì)方法,合理劃分層次2掌握子程序的調(diào)用與返回的方法3了解子程序的嵌套與遞歸二實(shí)驗(yàn)內(nèi)容與要求編制一程序,要求鍵入一個(gè)班的學(xué)生成績,并存放于50字的erade數(shù)組中,然后根據(jù)erade中的成績,把學(xué)生名次填入50字的rank數(shù)組中,再按學(xué)號(hào)順序把名次從終端上顯示出來。提示:程序main 功能:根據(jù)輸入的學(xué)生成績,計(jì)算并顯示出學(xué)生名次。程序input 功能:接收一個(gè)班級(jí)學(xué)生的成績,各成績之間用空格隔開。程序rankp 功能:計(jì)算一個(gè)班級(jí)學(xué)生的名次。(可參照循環(huán)程序(一)中的程序段)程序output 功能:輸出(顯示)一個(gè)班級(jí)的

27、學(xué)生名次程序decibin 功能:十進(jìn)制轉(zhuǎn)換二進(jìn)制,存入bx程序bindec 功能:十進(jìn)制轉(zhuǎn)換二進(jìn)制,并在屏幕上顯示。程序dec_div功能:bx的內(nèi)容除以cx的內(nèi)容,并在屏幕上顯示一位商。三程序框圖: 圖81 程序流程圖四步驟1自編主程序與子程序。2輸入本班級(jí)某門基礎(chǔ)課成績。 實(shí)驗(yàn)十二 綜合程序設(shè)計(jì)一、實(shí)驗(yàn)學(xué)時(shí):4二、實(shí)驗(yàn)類型:綜合性三、開出要求:必修四、實(shí)驗(yàn)?zāi)康?、掌握分支、循環(huán)、子程序調(diào)用、dos功能調(diào)用等基本的程序結(jié)構(gòu)。2、掌握綜合程序的編制及調(diào)試方法。五、實(shí)驗(yàn)內(nèi)容設(shè)有十個(gè)學(xué)生成績分別是76,69,84,90,73,88,99,63,100和80分。試編制一個(gè)子程序,統(tǒng)計(jì)低于60分,6

28、069分,7079分,8089分,9099分和100分的人數(shù),并輸出顯示統(tǒng)計(jì)結(jié)果。六、實(shí)驗(yàn)條件 dos運(yùn)行環(huán)境七、實(shí)驗(yàn)步驟1、編寫的程序中,成績分等部分要求采用分支結(jié)構(gòu),統(tǒng)計(jì)所有成績則用循環(huán)結(jié)構(gòu)完成,顯示統(tǒng)計(jì)結(jié)果采用dos功能調(diào)用。2、統(tǒng)計(jì)學(xué)生成績和顯示統(tǒng)計(jì)結(jié)果兩部分程序要求用子程序結(jié)構(gòu)來完成。八、實(shí)驗(yàn)報(bào)告1、說明程序的功能、結(jié)構(gòu),畫出程序框圖。2、說明上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問題是如何解決的,并對(duì)調(diào)試過程中的問題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出程序執(zhí)行結(jié)果。4、體會(huì)和意見。九、實(shí)驗(yàn)成績?cè)u(píng)定辦法根據(jù)學(xué)生的實(shí)驗(yàn)預(yù)習(xí)、實(shí)驗(yàn)紀(jì)律、實(shí)驗(yàn)動(dòng)手能力、實(shí)驗(yàn)報(bào)告結(jié)果及編程技巧,進(jìn)行綜合

29、評(píng)定,給出a(90)、b(80)、c(70)、d(60)、e(不及格)。實(shí)驗(yàn)十三 綜合程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?、掌握分支、循環(huán)、子程序調(diào)用、dos功能調(diào)用等基本的程序結(jié)構(gòu)。2、掌握綜合程序的編制及調(diào)試方法。二實(shí)驗(yàn)內(nèi)容:設(shè)有十個(gè)學(xué)生成績分別是76,69,84,90,73,88,99,63,100和80分。試編制一個(gè)子程序,統(tǒng)計(jì)低于60分,6069分,7079分,8089分,9099分和100分的人數(shù),并輸出顯示統(tǒng)計(jì)結(jié)果。三編程提示:1、成績分等部分采用分支結(jié)構(gòu),統(tǒng)計(jì)所有成績則用循環(huán)結(jié)構(gòu)完成,顯示統(tǒng)計(jì)結(jié)果采用dos功能調(diào)用。2、統(tǒng)計(jì)學(xué)生成績和顯示統(tǒng)計(jì)結(jié)果兩部分內(nèi)容用子程序結(jié)構(gòu)來完成。四實(shí)驗(yàn)報(bào)告:1、

30、程序說明。說明程序的功能、結(jié)構(gòu)。2、調(diào)試說明。包括上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問題是如何解決的,并對(duì)調(diào)試過程中的問題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、畫出程序框圖。4、寫出源程序清單和執(zhí)行結(jié)果。5、體會(huì)和意見。附錄-debug使用手冊(cè)debug是專門為匯編語言設(shè)計(jì)的一種調(diào)試工具,它通過步進(jìn),設(shè)置斷點(diǎn)等方式為匯編語言程序員提供了非常有效的調(diào)試手段。(一)debug程序的啟動(dòng)在dos提示符下,可鍵入命令:cdebugd:path文件名 參數(shù)1參數(shù)2其中文件名是被調(diào)試文件的名稱,它須是執(zhí)行文件(exe),兩個(gè)參數(shù)是運(yùn)行被調(diào)試文件時(shí)所需要的命令參數(shù),在debug程序調(diào)入后,出現(xiàn)提示符“-

31、”,此時(shí),可鍵入所需的debug命令。在啟動(dòng)debug時(shí),如果輸入了文件名,則debug程序把指定文件裝入內(nèi)存。用戶可以通過debug的命令對(duì)指定文件進(jìn)行修改、顯示和執(zhí)行。如果沒有文件名,則是以當(dāng)前內(nèi)存的內(nèi)容工作,或者用命名命令和裝入命令把需要的文件裝入內(nèi)存,然后再用debug的命令進(jìn)行修改、顯示和執(zhí)行。(二)debug的主要命令(1) 匯編命令a,格式為:-a地址該命令從指定地址開始允許輸入?yún)R編語句,把它們匯編成機(jī)器代碼相繼存放在從指定地址開始的存儲(chǔ)器中。(2) 反匯編命令u,有兩種格式:1)-u地址該命令從指定地址開始,反匯編32個(gè)字節(jié),若地址省略,則從上一個(gè)u命令的最后一條指令的下一個(gè)單

32、元開始顯示32個(gè)字節(jié)。2)-u范圍該命令對(duì)指定范圍的內(nèi)存單元進(jìn)行反匯編,例如:-u 04ba:0100 0108或 u 04ba:0100 l9此二命令是等效的。(3) 運(yùn)行命令g,格式為:-g =地址1地址2地址3。其中地址1規(guī)定了運(yùn)行起始地址,后面的若干地址均為斷點(diǎn)地址。(4) 追蹤命令t,有兩種格式:1)逐條指令追蹤:-t=地址該命令從指定地址起執(zhí)行一條指令后停下來,顯示寄存器內(nèi)容和狀態(tài)值。2)多條指令追蹤:-t=地址值該命令從指定地址起執(zhí)行n條命令后停下來,n由值確定。(5) 顯示內(nèi)存單元內(nèi)容的命令d,格式為:-d地址或-d范圍(6) 修改內(nèi)存單元內(nèi)容的命令e,它有兩種格式:1)用給定

33、的內(nèi)容代替指定范圍的單元內(nèi)容:-e地址 內(nèi)容表 例如:-e 2000:0100 f3 “xyz” 8d其中f3,“x”“y”“z”和8d各占一個(gè)字節(jié),用這五個(gè)字節(jié)代替原內(nèi)存單元2000:0100到0104的內(nèi)容,“x”“y”“z”將分別按它們的ascii碼值代入。2)逐個(gè)單元相繼地修改:-e地址例如:-e 100:18e4:0100 89.78此命令是將原100號(hào)單元的內(nèi)容89改為78。78是程序員鍵入的。(7) 檢查和修改寄存器內(nèi)容的命令r,它有三種方式:1)顯示cpu內(nèi)部所有寄存器內(nèi)容和標(biāo)志位狀態(tài);格式為:-rr命令顯示中標(biāo)志位狀態(tài)的含義如下表所示:標(biāo) 志 名置 位復(fù) 位溢出overflo

34、w(是/否)ovnv方向direction(減量/增量)dnup中斷interrupt(允許/屏蔽)eidi符號(hào)sign(負(fù)/正)ngpl零zero(是/否)zrnz輔助進(jìn)位auxiliary carry(是/否)acna奇偶parity(偶/奇)pepo進(jìn)位carry(是/否)cync2)顯示和修改某個(gè)指定寄存器內(nèi)容,格式為:-r 寄存器名例如打入:-r ax系統(tǒng)將響應(yīng)如下:ax fif4:表示ax當(dāng)前內(nèi)容為f1f4,此時(shí)若不對(duì)其作修改,可按enter鍵,否則,打入修改后內(nèi)容,如:-r bxbx 0369:059f則bx內(nèi)容由0369改為059f3)顯示和修改標(biāo)志位狀態(tài),命令格式為:-rf系

35、統(tǒng)將給出響應(yīng),如ov dn ei ng zr ac pe cy-這時(shí)若不作修改可按enter鍵,否則在“-”號(hào)之后鍵入修改值,鍵入順序任意。如 ov dn ei ng zr ac pe cy-ponzdinv(8) 命名命令n,格式為:-n 文件名此命令將文件名格式化在cs:5ch的文件控制塊內(nèi),以便使用l或w命令把文件裝入內(nèi)存進(jìn)行調(diào)試或者存盤。(9) 裝入命令l,它有兩種功能:1)把磁盤上指定扇區(qū)的內(nèi)容裝入到內(nèi)存指定地址起始的單元中,格式為:-l 地址 驅(qū)動(dòng)器 扇區(qū)號(hào) 扇區(qū)數(shù)2)裝入指定文件,格式為:-l 地址此命令裝入已在cs:5ch中格式化的文件控制塊所指定的文件。在用l命令前,bx和c

36、x中應(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,該命令格式為q它退出debug程序,返回dos,但該命令本身并不把在內(nèi)存中的文件存盤,如需存盤,應(yīng)在執(zhí)行q命令前先執(zhí)行寫命令w。附錄 匯編軟件masm和調(diào)試 工具軟件debug使用匯編語言是唯一能夠充分利用計(jì)算機(jī)硬件特性并直接控制硬件設(shè)備的語言。對(duì)于諸如實(shí)時(shí)控制、軟件加密解密、病毒分析、

37、軟件調(diào)試等領(lǐng)域,匯編語言是最有效的程序設(shè)計(jì)語言。在學(xué)習(xí)匯編語言的過程中,只有通過大量的上機(jī)實(shí)驗(yàn)才能更好地掌握匯編語言程序設(shè)計(jì)的技能。1.1 實(shí) 驗(yàn) 目 的(1)掌握匯編軟件masm的使用,熟悉匯編語言的上機(jī)過程。(2)掌握調(diào)試工具軟件debug的應(yīng)用,掌握匯編語言程序的調(diào)試技能。1.2 相關(guān)基礎(chǔ)知識(shí)1.2.1 匯編語言程序上機(jī)步驟1匯編語言程序設(shè)計(jì)上機(jī)步驟匯編語言源程序的上機(jī)步驟包括編輯、匯編、鏈接、調(diào)試等幾個(gè)過程,如圖1-1所示。圖1.1 匯編語言源程序上機(jī)步驟源程序文件的編輯就是編寫一個(gè)匯編語言源程序,它可以使用任何一個(gè)文件編輯器實(shí)現(xiàn)。例如,windows 2000操作系統(tǒng)附件中的記事本。

38、編輯形成的文件最后一定要以.asm后綴保存。在編輯源程序的時(shí)候一定要將輸入法切換到英文環(huán)境下,否則會(huì)出錯(cuò)。2匯編匯編是把用匯編語言編寫的源代碼程序翻譯成計(jì)算機(jī)能夠識(shí)別的二進(jìn)制機(jī)器語言程序。目前常用的匯編程序是masm,稱為宏匯編程序。宏匯編程序當(dāng)前主要有兩個(gè)版本:masm5.0和masm6.0。其中,masm5.0的可執(zhí)行文件是masm.exe,masm5.0用于dos環(huán)境下。初學(xué)者首先學(xué)習(xí)使用masm5.0。而masm6.0的可執(zhí)行文件是ml.exe。匯編過程是將源程序翻譯為等價(jià)的二進(jìn)制機(jī)器語言的過程。所產(chǎn)生的文件稱為目標(biāo)程序,其后綴為.obj。在這個(gè)階段中,將對(duì)源程序的語法進(jìn)行檢驗(yàn),如果發(fā)

39、現(xiàn)錯(cuò)誤將給予提示。錯(cuò)誤提示分為嚴(yán)重錯(cuò)誤和警告錯(cuò)誤兩種。嚴(yán)重錯(cuò)誤指示某些指令存在語法錯(cuò)誤,不能形成對(duì)應(yīng)的二進(jìn)制機(jī)器指令。而警告錯(cuò)誤指示某些指令含義不夠明確,需要提醒程序員注意。程序員可以根據(jù)提示對(duì)源程序進(jìn)行修改,直到得到正確的結(jié)果為止。在匯編過程中還會(huì)產(chǎn)生列表文件和交叉引用文件。列表文件的后綴為.lst,主要用于給出源程序和機(jī)器代碼程序的清單,以供檢查程序使用。交叉引用文件的后綴為.crf,它是一個(gè)為源程序所引用的各種符號(hào)進(jìn)行前后對(duì)照的文件,主要用于給出不同程序段中互相引用的全部符號(hào)列表。這兩個(gè)文件是可有可無的,如果不需要生成這兩個(gè)文件,可以在匯編過程中加以控制。3鏈接在匯編過程中形成了目標(biāo)文件

40、(.obj),但是在該文件中,只是將源程序的操作碼部分變成了機(jī)器碼,而地址操作數(shù)還是可浮動(dòng)的相對(duì)地址,不是實(shí)際地址,浮動(dòng)地址需要再定位。只有經(jīng)過鏈接過程才能形成最后的可執(zhí)行文件。鏈接程序的功能就是把一個(gè)或多個(gè)目標(biāo)文件合并成一個(gè)可執(zhí)行文件,其后綴為.exe。其實(shí)在鏈接過程中一共形成兩個(gè)文件:第一個(gè)是可執(zhí)行文件(.exe)。默認(rèn)的可執(zhí)行文件名字與源程序文件相同,也可以根據(jù)用戶要求進(jìn)行修改可執(zhí)行文件的名字;鏈接過程中形成的第二個(gè)文件是內(nèi)存映像文件(.map),它給出了每個(gè)段的地址分配情況和長度。如果不需要該文件則可以在鏈接命令執(zhí)行時(shí)直接輸入enter鍵。在鏈接過程中還與一個(gè)庫文件(.lib文件)相關(guān)

41、。一般的匯編程序不需要庫文件。但是當(dāng)匯編語言與高級(jí)語言(如c語言)接口時(shí)需要用到庫文件。此時(shí)輸入相應(yīng)的庫文件名字即可。4運(yùn)行通過匯編和鏈接,最終形成的可執(zhí)行文件已經(jīng)排出了程序中的語法錯(cuò)誤,可以直接執(zhí)行。但是可能還存在一些算法錯(cuò)誤,這樣的錯(cuò)誤則要通過調(diào)試過程來修正。常用的調(diào)試工具軟件有debug等。5匯編語言上機(jī)舉例例 編寫一個(gè)名字為abcd.asm的源程序,該程序的功能是在計(jì)算機(jī)屏幕上顯示一個(gè)字符串“hello!”。1)編輯源程序利用windows 2000操作系統(tǒng)附件中的“記事本”編輯如下源程序。datasegments1dbhello!,$dataendsstacksegmentpara

42、stackdb 64 dup(?)stackendscodesegmentmain proc farassumecs:code,ds:data,ss:stackstart:push ds mov ax,0 push ax mov ax,data mov ds,ax mov ax,stack mov ss,ax mov ah,09h mov dx,offset s1 int 21hretmain endpcode ends end start2)匯編在masm5.0中的匯編程序是masm.exe。其命令格式為:c:masm abcd.asm執(zhí)行上述操作命令之后將在屏幕上顯示如下信息:micros

43、oft(r) macro assembler version 5.00copyright(c) microsoft corp 1981-1985,1987.all rights reservedobject filenameabcd.obj:source listingnul.lst:cross referencenul.crf:50678 + 410090 bytes symbol space free0 warning errors0 severe errors在匯編過程中產(chǎn)生了三個(gè)文件,其默認(rèn)的文件名顯示在屏幕上,如果不需要做任何改變就直接按enter鍵。通過屏幕上的顯示,可以了解到在本

44、次匯編過程中沒有發(fā)生錯(cuò)誤和警告,因此可以繼續(xù)進(jìn)行鏈接操作。3)鏈接在masm5.0中的匯編程序是link.exe。其命令格式為:c:link abcd執(zhí)行上述命令后將在屏幕上顯示如下信息:microsoft(r) overlay linker version 3.6copyright(c) mirosoft corp 1983-1987.all rights reservedrun fileabcd.exelist filenul.map:libraries.lib:在鏈接過程中產(chǎn)生了兩個(gè)文件,其默認(rèn)的文件名顯示在屏幕上,如果不需要做任何改變就直接按enter鍵。對(duì)于庫文件一欄,如果不需要使用

45、庫文件,可以直接按enter鍵;如果需要使用庫文件,則要求輸入所使用的庫文件名字。4)運(yùn)行其命令格式為:c:abcd在屏幕上就可以看到“hello!”的字樣了。1.2.2 調(diào)試工具軟件debug如果匯編語言的源程序中存在一些語法或格式上的錯(cuò)誤,在匯編和鏈接過程中都可以被發(fā)現(xiàn)并得到糾正。但是如果在源程序中存在著算法錯(cuò)誤和邏輯錯(cuò)誤,那就只有在調(diào)試過程中才能發(fā)現(xiàn)并糾正了。常用的調(diào)試工具軟件是debug。debug提供了修改寄存器和內(nèi)存單元內(nèi)容的命令,可以很方便地修改寄存器、內(nèi)存單元的內(nèi)容,為調(diào)試程序、修改程序帶來了方便。在debug狀態(tài)下,還提供了調(diào)試、控制測(cè)試的環(huán)境。用戶可以在此環(huán)境下進(jìn)行編輯、調(diào)

46、試和執(zhí)行等一些簡(jiǎn)單的匯編程序。debug有顯示命令,通過顯示命令,可以觀察某個(gè)內(nèi)存單元的內(nèi)容、cpu內(nèi)部某個(gè)寄存器的內(nèi)容,并可以根據(jù)這些內(nèi)容的變化情況分析、調(diào)試程序。1debug的啟動(dòng)假設(shè)在windows 2000的環(huán)境下,通過選擇“程序”“附件”“命令提示符”進(jìn)入dos狀態(tài)。然后輸入:debugdrive:pathfilenameparameters 即可進(jìn)入debug環(huán)境。其中,drive:path filename:指定要測(cè)試的可執(zhí)行文件的位置和名稱。 parameters:指定所需要的命令。如果已經(jīng)進(jìn)入存放debug文件的目錄下,則可以使用簡(jiǎn)化的命令進(jìn)入debug。簡(jiǎn)化命令的格式為:d

47、ebug。進(jìn)入debug后,顯示debug的提示符號(hào),該提示符號(hào)為連字符(-)。2debug的主要命令這里只介紹常用到的幾個(gè)主要debug命令,全部的debug命令請(qǐng)參考相關(guān)文獻(xiàn)。1)a(匯編命令)該命令的功能是從匯編語言程序語句創(chuàng)建可執(zhí)行的機(jī)器碼。所有數(shù)值都是十六進(jìn)制格式,必須按14個(gè)字符輸入這些數(shù)值。命令格式:a address參數(shù)address是指定輸入?yún)R編語言指令的位置。對(duì)address使用十六進(jìn)制值,但是輸入十六進(jìn)制地址時(shí)不能以h字符結(jié)尾。如果不指定地址,執(zhí)行a命令后將在它上次停止處的地址開始匯編。a命令使用舉例如下。-a 0100:0500 0100:0500mov al,0501

48、00:0502jmp near5050100:0505jmp far50am2)c(比較命令)該命令的功能是比較內(nèi)存的兩個(gè)區(qū)域存放的內(nèi)容。命令格式為:c rangeaddress參數(shù)range指定要比較的內(nèi)存第一個(gè)區(qū)域的起始和結(jié)束地址,或起始地址和長度。參數(shù)address指定要比較的第二個(gè)內(nèi)存區(qū)域的起始地址。c命令使用舉例如下。-c 100,10f300該命令對(duì)100h10fh的內(nèi)存數(shù)據(jù)塊與300h30fh的內(nèi)存數(shù)據(jù)塊進(jìn)行比較。debug響應(yīng)前面的命令并顯示如下信息(假定此時(shí)ds=197f):197f:01004de4197f:0300 197f:01016799197f:0301 197f:

49、0102a327197f:0302 197f:010335f3197f:0303 197f:010497bd197f:0304 197f:01050435197f:0305 197f:01077671197f:0307 197f:0108e611197f:0308 197f:0109192c197f:0309 197f:010a800a197f:030a 197f:010b367f197f:030b 197f:010cbe22197f:030c 197f:010d8393197f:030d 197f:010e4977197f:030e 197f:010f4f8a197f:030f 注意:列表中缺少地址197f:0106和197f:0306,這表明地址中的數(shù)據(jù)值是相同的。3)d(顯示內(nèi)存命令)該命令的功能是顯示一定范圍內(nèi)存地址的內(nèi)容。命令格式:drange參數(shù)range指定要顯示其內(nèi)容的內(nèi)存區(qū)域的起始和結(jié)束地址,或起始地址和長度。如不指定range,將從以前d命令中所指定地址范圍末尾開始顯示128字節(jié)的內(nèi)容。d命令舉例如下。-d cs:10010f debug按以下格式顯示范圍中的內(nèi)容:04ba:0100544f4d0053415759-4552000000000000tom.sawyer.當(dāng)使用d命令時(shí),debug以兩個(gè)部分顯

溫馨提示

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