基于32位的微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第1頁
基于32位的微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第2頁
基于32位的微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第3頁
基于32位的微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第4頁
基于32位的微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書授課教師:王春武(內(nèi)部資料)目 錄實(shí)驗(yàn)一、 算術(shù)邏輯運(yùn)算單元實(shí)驗(yàn)1實(shí)驗(yàn)二、 通用寄存器單元實(shí)驗(yàn)3實(shí)驗(yàn)三、存儲器和總線實(shí)驗(yàn)5實(shí)驗(yàn)四、堆棧寄存器實(shí)驗(yàn)6實(shí)驗(yàn)五、熟悉masmplus編程環(huán)境12實(shí)驗(yàn)六、順序程序設(shè)計(jì)12實(shí)驗(yàn)七、分支程序設(shè)計(jì)12實(shí)驗(yàn)八、循環(huán)程序設(shè)計(jì)12實(shí)驗(yàn)九、子程序設(shè)計(jì)12實(shí)驗(yàn)十、 綜合實(shí)驗(yàn)12實(shí)驗(yàn)十一、8253 發(fā)聲控制實(shí)驗(yàn)128086匯編語言初學(xué)者教程12什么是匯編語言?(匯編語言學(xué)習(xí)參考)12第一部分8位模型機(jī)實(shí)驗(yàn)實(shí)驗(yàn)一、 算術(shù)邏輯運(yùn)算單元實(shí)驗(yàn)一 實(shí)驗(yàn)?zāi)康?1掌握簡單運(yùn)算器的數(shù)據(jù)傳輸方式 2掌握74ls181的功能和應(yīng)用 二.實(shí)驗(yàn)要求 完成不帶進(jìn)位位算術(shù)

2、運(yùn)算實(shí)驗(yàn)、帶進(jìn)位位算術(shù)加法運(yùn)算實(shí)驗(yàn)、邏輯運(yùn)算單元實(shí)驗(yàn)。按照實(shí)驗(yàn)步驟完成實(shí)驗(yàn)項(xiàng)目,了解算術(shù)邏輯運(yùn)算單元運(yùn)用。三實(shí)驗(yàn)說明 1alu單元實(shí)驗(yàn)構(gòu)成: 1)運(yùn)算器由兩片74ls181構(gòu)成8位字長的alu單元。2)運(yùn)算器的2個數(shù)據(jù)輸入端分別由2個74ls374鎖存,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。3)運(yùn)算器的數(shù)據(jù)輸出由一片74ls244(輸出緩沖器)來控制,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。2alu單元的工作原理: 輸入寄存器dr1的edr1為低電平并且d1ck為電平正跳變時,把來自數(shù)據(jù)總線的數(shù)據(jù)打入寄存器dr1,同樣通過edr2、d2ck可把數(shù)據(jù)打入輸入寄存器dr2。算術(shù)邏輯運(yùn)算單元的核心是由

3、2片74ls181組成,它可以進(jìn)行2個8位的二進(jìn)制數(shù)算術(shù)邏輯運(yùn)算,74ls181的各種工作方式可通過設(shè)置控制信號(s0、s1、s2、s3、m、cn)來實(shí)現(xiàn)。當(dāng)實(shí)驗(yàn)者正確設(shè)置了74ls181的各個控制信號,74ls181會把dr1、dr2寄存器內(nèi)的數(shù)據(jù)進(jìn)行相應(yīng)地運(yùn)算。由于dr1、dr2已經(jīng)把數(shù)據(jù)鎖存,只要74ls181的控制信號不變,那么74ls181的輸出數(shù)據(jù)也不會改變。輸出緩沖器采用三態(tài)門74ls244,當(dāng)控制信號alu-o0時,74ls244開通,把74ls181的運(yùn)算結(jié)果輸出到數(shù)據(jù)總線;當(dāng)alu-o1時,74ls244的輸出為高阻。 3控制信號說明: 信號名稱 作用 有效電平 edr1選

4、通dr1寄存器低電平有效edr2選通dr2寄存器低電平有效dr1ckdr1寄存器工作脈沖上升延有效dr2ckdr2寄存器工作脈沖上升延有效s3s074ls181工作方式選擇16種組合m邏輯或算術(shù)選擇m=0算術(shù),m=1邏輯cn有無進(jìn)位輸入cn=0帶進(jìn)位cn=1不帶進(jìn)位cck進(jìn)位寄存器的工作脈沖上升延有效alu-o計(jì)算結(jié)果輸出至總線低電平有效四實(shí)驗(yàn)步驟取一根長數(shù)據(jù)線,一頭插入alu-in(8芯的盒型插座)另一頭插入實(shí)驗(yàn)箱右側(cè)的j1插座(對應(yīng)二進(jìn)制開關(guān)h16-h23),把a(bǔ)lu-out(8芯的盒型插座)插入總線的數(shù)據(jù)總線dj2 。(實(shí)驗(yàn)箱默認(rèn)的信號為高電平,實(shí)驗(yàn)中只需連接低電平信號即可)1. 把d1

5、ck和d2ck用連線連到脈沖單元的pls1,把edr1、alu-o,s0、s1、s2、s3、cn、m接入試驗(yàn)箱右側(cè)對應(yīng)二進(jìn)制撥動開關(guān)。2. 置edr1=0,edr2=1、alu-o=1。把二進(jìn)制開關(guān)h16-h23置0x65。3. 按pls1脈沖按鍵,在pls1上產(chǎn)生一個上升沿的脈沖,把0x65打入dr1寄存器,通過邏輯筆或示波器來測量確定dr1寄存器(74ls374)的輸出端(引腳對應(yīng)關(guān)系為:2-q0 5-q1 6-q2 9-q3 12-q4 15-q5 16-q6 19-q7),來確定總線數(shù)據(jù)是否進(jìn)入dr1中。4. 同樣方法,置edr2=0把二進(jìn)制h16-h23開關(guān)置0xa7。5. 按pls

6、1脈沖按鍵,再產(chǎn)生一個上升沿的脈沖,把0xa7打入dr2(74ls374)。6. 參照表一,設(shè)置m cn s3 s2 s1 s0的狀態(tài),實(shí)現(xiàn)觀察dr1(a)、dr2(b)以及實(shí)驗(yàn)結(jié)果。五. 實(shí)驗(yàn)思考 驗(yàn)證74ls181的算術(shù)運(yùn)算和邏輯功能,在保持dr1=0x65、dr2=0xa7時,改變運(yùn)行運(yùn)算器的功能設(shè)置,實(shí)現(xiàn)觀察a,b,a+b,a加b功能。表1 74ls181的邏輯方式 m=1 m=0算術(shù)運(yùn)算 s3 s2 s1 s0邏輯運(yùn)算cn=1(無進(jìn)位)cn=0(有進(jìn)位)0000f=/af=af=a加10001f=/(a+b)f=a+bf=(a+b)加10010f=/a bf=a+/bf=(a+/b)

7、加10011f=0f=減1(2的補(bǔ))f=00100f=/(ab)f=a加a/bf=a加a/b加10101f=/bf=(a+b)加a/bf=(a+b)加a/b加10110f=/(ab)f=a減b減1f=a減b0111f=a /bf=a/b減1f=a/b1000f=/a+bf=a 加abf=a 加ab加 11001f= abf=a加bf=a加b加11010f=bf=(a+/b)加abf=(a+/b)加ab加11011f=abf=ab減1f=ab1100f=1f=a加 af=a加 a 加11101f=a+/bf=(a+b) 加 af=(a+b) 加 a 加11110f=a+bf=(a+/b)加af=

8、(a+/b)加a加11111f=af=a減1f=a實(shí)驗(yàn)二、 通用寄存器單元實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康?1了解寄存器的組成和硬件電路 2利用寄存器進(jìn)行數(shù)據(jù)傳輸 二實(shí)驗(yàn)要求 按照實(shí)驗(yàn)步驟完成實(shí)驗(yàn)項(xiàng)目, 實(shí)現(xiàn)寄存器移位操作。了解通用寄存器單元運(yùn)用。 三實(shí)驗(yàn)說明 1 寄存器實(shí)驗(yàn)構(gòu)成: (1)通用寄存器由74ls198構(gòu)成8位字長的寄存器單元,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。(由于74ls198的使用率不高,有的型號實(shí)驗(yàn)機(jī)上采用2片gal來替代它,使用方法和74ls198基本相同)。(2)數(shù)據(jù)輸出由一片74ls244(輸出緩沖器)來控制,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。(3)由1片gal、1片7474和

9、一些常規(guī)芯片組成判零和進(jìn)位電路,分別由2個led發(fā)光管來顯示其狀態(tài)。2通用寄存器單元的工作原理: 通用寄存器單元的核心部件為74ls198,它具有鎖存、左移、右移、保存等功能,各個功能都有x1、x2信號和rack工作脈沖來決定。當(dāng)置era=0、x0=1、x1=0,rack為脈沖的上升沿時,把總線上的數(shù)據(jù)打入74ls198??赏ㄟ^設(shè)置x0、x1來指定74ls198的工作方式,74ls198的輸出端q0q7接入判零電路。led亮?xí)r表示數(shù)據(jù)為0。輸出緩沖器采用三態(tài)門74ls244,當(dāng)控制信號ra-o為低時,74ls244開通,把通用寄存器內(nèi)容輸出到總線;當(dāng)ra-o為高時,74ls244的輸出為高阻。

10、3控制信號說明: 信號名稱 作用 有效電平 x0、x174ls198的工作模式低電平era選通74ls198寄存器低電平ra-o74ls198寄存器內(nèi)容輸出至總線低電平rack74ls198寄存器工作脈沖上升沿m在alu單元中作為邏輯和算術(shù)運(yùn)算的選擇。在本實(shí)驗(yàn)中決定是否帶進(jìn)位移位0 帶進(jìn)位1 不帶進(jìn)位四. 實(shí)驗(yàn)步驟(數(shù)據(jù)輸入)1. 把ra-in(8芯的盒型插座)插入數(shù)據(jù)輸出板上的j1 8芯的盒型插座(對應(yīng)二進(jìn)制開關(guān)),把ra-out(8芯的盒型插座)插入總線的數(shù)據(jù)總線dj6。2. 把rack連到脈沖單元的pls11,把era、x0、x1、ra-o、m接入實(shí)驗(yàn)板右側(cè)的對應(yīng)開關(guān)。3. 實(shí)現(xiàn)置數(shù)功能

11、:置era=0、ra-o=0、x0=1、x1=1把二進(jìn)制開關(guān)h16-h23置01000010(對應(yīng)開關(guān)如下表)。4. 按pls1脈沖按鍵,按pls1,把0100 0010打入74ls198。此時數(shù)據(jù)總線上的指示燈iob0-iob7 應(yīng)該顯示為0100 0010,由于寄存器內(nèi)容不為0,所以zd led燈滅。 5. 保持m=0,將x1=0,x0=1, 按pls1,觀察實(shí)驗(yàn)現(xiàn)象;6. 保持m=0,將x1=1,x0=0, 按pls1,觀察實(shí)驗(yàn)現(xiàn)象7. 保持m=1,重新完成步驟5和6觀察實(shí)驗(yàn)現(xiàn)象8. 將cck(進(jìn)位脈沖)與rack相連,重新完成實(shí)驗(yàn)57觀察實(shí)驗(yàn)現(xiàn)象。提示:m=1 功能:8位循環(huán)移位,與c

12、ck無關(guān)m=0 無cck時 功能:8位移位,移入數(shù)據(jù)取決于當(dāng)前cy狀態(tài)m=0 有cck時 功能:9位循環(huán)移位表二 控制邏輯x1 x0 clk q7q0 0 0上升沿保持1 1上升沿置數(shù)0 1上升沿右移1 0上升沿左移 實(shí)驗(yàn)三、存儲器和總線實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康?1 熟悉存儲器和總線組成和硬件電路 二實(shí)驗(yàn)要求 按照實(shí)驗(yàn)步驟完成實(shí)驗(yàn)項(xiàng)目,利用存儲器和總線傳輸數(shù)據(jù)。 三實(shí)驗(yàn)說明 1 存儲器實(shí)驗(yàn)的構(gòu)成: (1)存儲器采用靜態(tài)ram(6264)(2)存儲器的控制電路由1片74ls32和74ls08組成。(3)總線由2片74ls245組成,把整個系統(tǒng)分為內(nèi)部總線和外部總線。2存儲器和總線的原理 (1)總線的原理:

13、由于本系統(tǒng)內(nèi)使用8根地址線、8位數(shù)據(jù)線,所以使用1片74ls245作為數(shù)據(jù)總線另1片作為地址總線(見圖)??偩€把整個系統(tǒng)分為內(nèi)部總線和外部總線,由于數(shù)據(jù)總線需要進(jìn)行內(nèi)、外部數(shù)據(jù)的交換所以由bus信號來控制數(shù)據(jù)的流向,當(dāng)bus=1時數(shù)據(jù)由內(nèi)到外,當(dāng)bus=0時,數(shù)據(jù)由外到內(nèi)。信號ebus=0時,表示當(dāng)前有效。(2)由于本系統(tǒng)內(nèi)使用8根地址線、8位數(shù)據(jù),所以6264的a8a12接地,其實(shí)際容量為256個字節(jié)。6264的數(shù)據(jù)、地址總線已經(jīng)接在總線單元的外部總線上。存儲器有3個控制信號:外部地址總線設(shè)置存儲器地址,rm=0時,把存儲器中的數(shù)據(jù)讀出到總線上。當(dāng)wm=0,并且emck有一個上升沿時,把外部

14、總線上的數(shù)據(jù)寫入存儲器中。為了更方便的編輯內(nèi)存中的數(shù)據(jù),在實(shí)驗(yàn)機(jī)處于停機(jī)狀態(tài)時,可由監(jiān)控來編輯其中的數(shù)據(jù)。(3)控制信號說明: 信號名稱作用有效電平bus總線方向選擇 rm6264的讀允許信號低電平有效wm6264的寫允許信號低電平有效emck6264的寫入脈沖信號上升延有效四實(shí)驗(yàn)步驟 l 把數(shù)據(jù)總線一端插入dj8另一端插入實(shí)驗(yàn)板右側(cè)的j2口、地址總線上一端插入b10單元的aj1另一端插入實(shí)驗(yàn)板右側(cè)的j3口。l 把emck連到脈沖單元的pls1,把wm、rm、bus接入右側(cè)對應(yīng)二進(jìn)制的開關(guān),由于bus與rm狀態(tài)一直相同,因此可以將bus也連接到rm孔上。撥動二進(jìn)制開關(guān),置數(shù)據(jù)為0x55,地址為

15、0x02(對應(yīng)開關(guān)如下表)。h23h22h21h20h19h18h17h1600000010l 此時在數(shù)據(jù)總線led燈idb0-idb7顯示0x55, 地址總線上led燈iab0-iab7顯示0x02,l 內(nèi)部數(shù)據(jù)總線上的數(shù)據(jù)輸出到外部數(shù)據(jù)總線。置wc=0,rc=1(對應(yīng)開關(guān)如下表)。h15h14h13wrrcbus011按pls1脈沖按鍵,脈沖單元的pls1,在emck上產(chǎn)生1個上升沿,此時0x55寫入存儲器的地址0x02中。讀存儲器的數(shù)據(jù)到總線上,置當(dāng)前地址為0x02(對應(yīng)開關(guān)如下表)。h23h22h21h20h19h18h17h1600000010l 置wm=1,rm=0,(對應(yīng)開關(guān)如下

16、表)。h15h14h13wmrmbus100 此時數(shù)據(jù)總線上的led燈idb0-idb7顯示0x55。實(shí)驗(yàn)四、堆棧寄存器實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康?1 熟悉堆棧概念 2 熟悉堆棧寄存器的組成和硬件電路 二實(shí)驗(yàn)要求 按照實(shí)驗(yàn)步驟完成實(shí)驗(yàn)項(xiàng)目,對4個堆棧寄存器讀出、寫入數(shù)據(jù)。 三實(shí)驗(yàn)說明 1、堆棧寄存器組實(shí)驗(yàn)構(gòu)成: 本系統(tǒng)內(nèi)有4個寄存器r0r3,寄存器組由4個74ls374組成,由1片74ls139(2、4譯碼器)來選擇4個74ls374,并且由2片74ls08和1片74ls32來組成控制線。可通過8芯扁平電纜把數(shù)據(jù)輸入、輸出直接連接到數(shù)據(jù)總線上。2、堆棧寄存器組原理: 由sa、sb兩根控制線通過74ls13

17、9譯碼來選擇4個寄存器(74ls374)。當(dāng)wr0時,表示數(shù)據(jù)總線將要向寄存器中寫入數(shù)據(jù),rclk作為寄存器的工作脈沖,在有上升沿時把總線數(shù)據(jù)打入74ls139選擇的那個寄存器。當(dāng)74ls139選擇了某個寄存器,并且rr=0時,寄存器上的數(shù)據(jù)輸出至數(shù)據(jù)總線。在本系統(tǒng)內(nèi)使用了wr=0作為寫入允許,rck信號為上升沿打入數(shù)據(jù)、rr=0時數(shù)據(jù)輸出、er0er3作為4個寄存器的選通。 3、控制信號說明: 信號名稱作用有效電平sa、sb選通寄存器低電平有效rr數(shù)據(jù)輸出允許低電平有效wr數(shù)據(jù)寫入允許低電平有效 rck寄存器的工作脈沖上升延有效四實(shí)驗(yàn)步驟 l 將r-in(8芯的盒型插座)插入數(shù)據(jù)輸出板上的8

18、芯的盒型插座,將r-out(8芯的盒型插座)插入左側(cè)的數(shù)據(jù)總線。l 把rr、wr、sa、sb接入二進(jìn)制的撥位開關(guān),把rck連到脈沖單元的pls1。(請按下表接線)。信號定義 接入開關(guān)位號 rck pls1 孔 rr h15孔 wr h14孔 sa h13孔 sb h12孔 把數(shù)據(jù)寫入寄存器r0 l 置wr=0、rr=1、sb=0、sa=0 (對應(yīng)開關(guān)如下表)。h15h14h13h12rrwrsasb1000l 在二進(jìn)制的撥位開關(guān)上置0x01(對應(yīng)開關(guān)如下表)。h23h22h21h20h19h18h17h1600000001l 按pls1脈沖按鍵,脈沖單元的pls1+,在rck上產(chǎn)生一個上升沿,

19、此時把數(shù)據(jù)寫入寄存器r0。 把寄存器r0數(shù)據(jù)讀出 l 置wr=1、rr=0、sb=0、sa=0 (對應(yīng)開關(guān)如下表)。h15h14h13h12rrwrsasb0100l 此時把寄存器r0數(shù)據(jù)讀出。l 總線數(shù)據(jù)發(fā)光二極管idb0-idb7將分別顯示0x01補(bǔ)充試驗(yàn):debug的基本操作(參見附件2)。過程:1、 開始 運(yùn)行debug 確定,出現(xiàn)黑色屏幕并有短線提示,表示進(jìn)入debug成功。2、 收入 ?號,查看debug 命令。3、 依次試驗(yàn)各個命令的用法。第二部分debug命令debug是一個dos實(shí)用程序,是供程序員使用的程序調(diào)試工具,可以用它檢查內(nèi)存中任何地方的字節(jié)以及修改任何地方的字節(jié)。它

20、可以用于逐指令執(zhí)行某個程序以驗(yàn)證程序運(yùn)行的正確性,也可以追蹤執(zhí)行過程、比較一個指令執(zhí)行前后的值以及比較與移動內(nèi)存中數(shù)據(jù)的范圍,讀寫文件與磁盤扇區(qū)。目錄debug命令介紹 debug的命令及功能如下: 1. * a地址 匯編命令 2. * c源地址范圍目的地址比較命令 3. 轉(zhuǎn)儲命令 4. * g=起始地址 斷點(diǎn) 執(zhí)行命令 5. * i端口地址 6. * l地址盤號:邏輯扇區(qū)號扇區(qū)數(shù) 7. * m地址范圍起始地址 數(shù)據(jù)傳送命令 8. * n盤號: 路徑 文件名 擴(kuò)展名 9. * o端口地址數(shù)據(jù) 輸出命令 10. * p=地址 數(shù)據(jù) 進(jìn)程命令 11. * q 退出命令。 12. * r寄存器 寄存

21、器命令 13. * s地址范圍 字符串 14. * t=地址指令條數(shù) 跟蹤命令 15. * u起始地址或者地址范圍 16. * w寫盤命令debug命令實(shí)際應(yīng)用debug命令介紹 debug的命令及功能如下: 1. * a地址 匯編命令 2. * c源地址范圍目的地址比較命令 3. 轉(zhuǎn)儲命令 4. * g=起始地址 斷點(diǎn) 執(zhí)行命令 5. * i端口地址 6. * l地址盤號:邏輯扇區(qū)號扇區(qū)數(shù) 7. * m地址范圍起始地址 數(shù)據(jù)傳送命令 8. * n盤號: 路徑 文件名 擴(kuò)展名 9. * o端口地址數(shù)據(jù) 輸出命令 10. * p=地址 數(shù)據(jù) 進(jìn)程命令 11. * q 退出命令。 12. * r寄

22、存器 寄存器命令 13. * s地址范圍 字符串 14. * t=地址指令條數(shù) 跟蹤命令 15. * u起始地址或者地址范圍 16. * w寫盤命令debug命令實(shí)際應(yīng)用展開debug命令介紹它的功能包括以下幾個方面。 1,直接輸入,更改,跟蹤,運(yùn)行匯編語言源程序; 2,觀察操作系統(tǒng)的內(nèi)容; 3,查看rom bios的內(nèi)容; 4,觀察更改ram內(nèi)部的設(shè)置值; 5,以扇區(qū)或文件的方式讀寫軟盤數(shù)據(jù) debug把所有數(shù)據(jù)都作為字節(jié)序列處理。因此它可以讀任何類型的文件。debug可以識別兩種數(shù)據(jù): 十六進(jìn)制數(shù)據(jù)和asc碼字符。它的顯示格式是各個字節(jié)的十六進(jìn)制值以及值在32與126之間的字節(jié)的相應(yīng)asc

23、碼字符。 在debug中輸入數(shù)據(jù)有兩種方法: 提示方法和非提示方法。在用提示方法時,用戶可以輸入要求輸入數(shù)據(jù)的命令,后跟數(shù)據(jù)所要輸入的地址。然后用戶就可以看到該地之中已有內(nèi)容及一個冒號提示符。此時用戶可以在提示符下輸入一個新的值或者按下回車鍵或ctrl+c回到短橫(-)提示符。在運(yùn)用非提示方法時,用戶可以輸入要輸入數(shù)據(jù)的內(nèi)存地址以及要輸入的字節(jié)。但與使用字處理程序或正文編輯程序時不一樣,在使用debug時,用戶不能直接移動光標(biāo)到一入口點(diǎn)輸入或修改數(shù)據(jù),而要一次輸入一個或幾個字節(jié)。 在使用debug時可以只涉及內(nèi)存中的數(shù)據(jù),從而一般都要指定所要處理的內(nèi)存地址,地址的輸入格式是: 段地址: 位移。

24、如果沒有輸入地址,debug將假定為當(dāng)前內(nèi)存段,從位于地址100h的字節(jié)開始。前100h字節(jié)保留給程序段前綴使用,這一專用區(qū)域用于建立dos與程序之間的聯(lián)系。debug總是用四位十六進(jìn)制數(shù)表示地址。用兩位數(shù)表示十六進(jìn)制數(shù)據(jù)。 講到這里大家應(yīng)該對debug有了初步的了解,但是光知道這些可不夠,接下來我來講講debug的命令格式和命令。當(dāng)輸入 debug 調(diào)用了debug程序,就會出現(xiàn)一個短橫提示符,用戶就可以在這一短橫后輸入debug程序的命令。有些debug命令會顯示一個內(nèi)存地址并產(chǎn)生一個作為提示符的冒號。在這些提示符后,用戶可以輸入一個新值以改變所顯示位置原來的值。如果用戶不輸入一個新值而是

25、按下回車或ctrl+c,那么原來的值不會改變。 一般用不著把地址和命令名字分開。例如,用轉(zhuǎn)儲命令d察看100號地址的數(shù)據(jù),那么這個命令可以用以下任一種形勢輸入: d100 d 100 d。100 d,100 如果輸入的命令中出現(xiàn)了錯誤,debug將在下一行對著錯誤的位置標(biāo)記出來,例如: -s100 d 12 error debug的命令及功能如下:a地址 匯編命令功能: 將指令直接匯編成機(jī)器碼輸入到內(nèi)存中。 說明: 用于小段程序的匯編及修改目標(biāo)程序,所有輸入的數(shù)字均采用十六進(jìn)制, 用戶裝入內(nèi)存的匯編語句是連續(xù)存放的,若沒有指定地址,并且前面沒有使用匯編命令,改語句被匯編到 cs:0100區(qū)域。

26、 例a:debug -a 0100 08f1:0100 mov ah,09 08f1:0102 mov dx,109 08f1:0105 int 21h; 08f1:0107 int 21h;debug tan.exe -u:反編譯成匯編語言程碼 . . -g 100 指定中斷點(diǎn) program terminated normally: 另外:我們在debug下可運(yùn)行一個文件.exe 如:a:debug tan.exe -g 即可開始運(yùn)行此程序,和在dos下完全一樣: * h數(shù)值數(shù)值 十六進(jìn)制算術(shù)運(yùn)算命令 功能: 分別顯示兩個十六進(jìn)制數(shù)相加的和以及第一個數(shù)減去第二個數(shù)的差。 說明: 替用戶完成

27、簡單的十六進(jìn)制數(shù)的運(yùn)算。 例:-h4538 5623 9b5b ef15 * i端口地址功能: 從指定的端口輸入并顯示(用十六進(jìn)制)的一個字節(jié)。 例:-i 70 f9;顯示70端口的內(nèi)容為f9 i命令可由80x86的64k個端口取數(shù)據(jù) * l地址盤號:邏輯扇區(qū)號扇區(qū)數(shù)功能: 將一個文件或盤的絕對扇區(qū)裝入存儲器。 說明: 單個l命令能夠裝入的最大扇區(qū)數(shù)是 80h,其中盤號 0,1,2,3分別代表 a,b,c,出現(xiàn)讀盤錯,顯示錯誤信息。 (1)格式1: l裝入地址 驅(qū)動器名 起始扇區(qū)/扇區(qū)數(shù) 這種方式可把磁盤上指定扇區(qū)范圍的內(nèi)容裝入到存儲器從指定地址開始的區(qū)域中,在此外扇區(qū)編號引用邏輯/扇區(qū)的方式

28、。 例:-l 100 0 01,將a驅(qū)的0扇區(qū)裝至cs:100上 -d 100 10f 08f1:0100 eb 3c 90 3c 53 44 4f 53 -36 2e 32 32 02 01 01 00.l,msdos 6.22 (2)格式2:l裝入地址 這種方式可把指定文件裝入內(nèi)存,裝入的文件可在進(jìn)入debug時指定亦可用n命令建立,格式為-n文件名: 例1 debug tan.pas -l 100 例2 debug -n tan.pas -l 100 須知:l命令只能讀取邏輯扇區(qū),不能讀取硬盤分區(qū)表 l命令中所用的磁盤代碼a=00,b=01,c=02 * m地址范圍起始地址 數(shù)據(jù)傳送命令

29、功能: 把地址范圍內(nèi)的存儲器單元的內(nèi)容移到起始地址的指定地址中 說明: 傳送期間,源區(qū)和目標(biāo)區(qū)可以部分重疊;傳送后源區(qū)域數(shù)據(jù)保持不變。 例:-e100 41 42 43 44 45 -d100 10f 08f1:0100 41 42 43 44 45 62 62 63 64 -61 62 63 64 61 62 63 64 abcdebcdabcdabcd -m 100 104 110 -d110 l1f 08f1:0100 41 42 43 45 0a 21 19-20 01 01 20 07 96 87 9f abcde * n盤號: 路徑 文件名 擴(kuò)展名功能: 定義操作文件名。 說明:

30、可同時定義兩個操作文件,并將形成的文件控制塊相應(yīng)的設(shè)置在內(nèi)存 cs:5c和cs:6c上,供以后的l和w命令操作之用。我們在運(yùn)行程序偵錯時,在啟動debug時在其后加文件程序名以及該程序的參數(shù)或運(yùn)行文件,但當(dāng)我們偵錯一段后,可能裝入其它文件來測試,這時我們可利用n命令來設(shè)置而無需退出debug。 例:a:debug tan.exe -n youg.pas 當(dāng)程序偵錯一段時間后,若要把tan.exe裝入tan1.pas則-n tanl.pas * o端口地址數(shù)據(jù) 輸出命令功能: 發(fā)送字節(jié)到指定的輸出端口。 例:當(dāng)我們遇到開機(jī)要求輸入口令時,可用如下方式取消 -o 70 10 _o 71 00 *

31、p=地址 數(shù)據(jù) 進(jìn)程命令功能: 將一個子程序調(diào)用指令,循環(huán)指令,中斷指令或一個重復(fù)字符串指令,停止在下一條指令上。 說明: 在執(zhí)行一條子程序調(diào)用指令,循環(huán)指令,中斷指令或一個重復(fù)字符串指令時,發(fā)出p命令去執(zhí)行有關(guān)指令,并且返回到要執(zhí)行的下一條指令。 p命令和t一樣選用來跟蹤程序運(yùn)行過程用的命令,我們可以在p命令中指定程序運(yùn)行的起始地址,指令個數(shù),如未指定則cs:ip所指定程序的地址開始一次運(yùn)行一條令。 p與t命令的差別在于p命令把call/int當(dāng)成一條指令來執(zhí)行,簡化了跟蹤過程,p命令只運(yùn)行ram內(nèi)存的命令,而t命令則可運(yùn)行ram和rom里的程序。 * q 退出命令。* r寄存器 寄存器命令

32、功能: 一,顯示單個寄存器的內(nèi)容,并提供修改功能。 二,顯示所有寄存器內(nèi)容, 再加上字母標(biāo)志位狀態(tài)以及要執(zhí)行的下一條指令。 三,顯示8個標(biāo)志位狀態(tài), 并提供修改功能。若不想改變則回車即可。 例:-r bx bx 0050 :51 -r ax=0000 bx=0051 cx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=0003 es=0cd3 ss=0cd3 ip=0100 nv up ei pl nz na op nc 0cd3:0100 0f db of 若想改變標(biāo)志寄存器,用-rf回車,則debug會將標(biāo)志內(nèi)容顯示出來,若想改變?nèi)我粯?biāo)志,只要輸入該標(biāo)志的

33、名稱即可。 標(biāo)志名稱 設(shè)置 未設(shè)置 標(biāo)志名稱 設(shè)置 未設(shè)置 滋出 ov(未溢出) nv(未溢出) 零位 zr nz(不等于零) 方向 dn(減少) up(增加) 輔助進(jìn)位 ac na(無進(jìn)位) 中斷 ei(許可) di(禁止) 奇偶標(biāo)志 pe(偶) po(奇) 符號 ng(負(fù)) pl(正) 進(jìn)位 cy nc(清除進(jìn)位) 例:-rf nv up ei pl nz na po nc :-ov di 輸入值 * s地址范圍 字符串功能: 在指定的地址范圍內(nèi)查找給定的字符串。 說明: 用來指定在地址范圍內(nèi)查找一個字符串,若找到則顯示其地址, 否則直接顯示debug提示符。隱含地址為ds段值。 在此內(nèi)存

34、可以用(起始地址)(終止地址)或(起始地址)l(長度)的方式來表示,而字符串與數(shù)據(jù)行則可混合使用:如:02.76bc。 例:-d100 lof 08f1:0100 of 2a 41 43 0b 31 42 96 -ff f0 b9 8a f3 00 b1. ac,1b. -s 100 l 0f ac 08f1:0102 表示找到,由0102開始, * t=地址指令條數(shù) 跟蹤命令功能: 逐條跟蹤程序的執(zhí)行,每條指令執(zhí)行后都將顯示各寄存器的內(nèi)容。 說明: 通常采用跟蹤一條指令,但用戶也可以用指令條數(shù)設(shè)定一次跟蹤多條指令, 每執(zhí)行一條指令之后,顯示所有寄存器的內(nèi)容和標(biāo)志狀態(tài)。 逐條指令跟蹤 -t=起

35、始地址 從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內(nèi)容及標(biāo)志位的值,如來指定地址則從當(dāng)前cs:ip開始執(zhí)行。 a:debug -a 08f1:0100 mov dl,03h 08f1:0102 mov ah,02h 08f1:0104 int 21h 08f1:0106 int 20h 08f1:0108 -t ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000 ds=08f1 es=08f1 ss=08f1 cs=08f1 1p=0105 nv up ei pl nz po cy 09f1:0102 b402

36、mov ah,02 若指定起始地址,則t命令會從指定的地址開始跟蹤,我們還可以指定跟蹤一次所運(yùn)行指令的個數(shù),用ctrl+s暫停屏幕的顯示,以便觀察。 -t=100 10;由cs:100開始跟蹤10條指令 * u起始地址或者地址范圍功能: 將內(nèi)存中的內(nèi)容轉(zhuǎn)換為匯編語句。 說明: 反匯編的字節(jié)數(shù)取決與用戶的系統(tǒng)顯示形式,以及在u命令中使用的可選項(xiàng)。 (1)從指定地址開始編譯,反匯編32個字節(jié) -u地址從cs:100開始,其反匯編32個字節(jié) 如果地址被省略,則從一個u命令的最后一條指令的下一條單元開始匯編32個字節(jié)。 (2)對指定的存貯范圍進(jìn)行反匯編 -u起始地址 終止地址(l 長度) 例:-u 1

37、00 109 08f1:0100 cd20 int 20 08f1:0102 ff9f009a call fa12bx+9a00 08f1:0106 f0 lock 08f1:0107 fe1d call far di 08f1:0109 f0 lock 說明:如指定了范圍則整個范圍全都會被反編譯 * w寫盤命令* w地址 盤符: 起始扇區(qū) 扇區(qū)數(shù) 寫盤命令 功能: 將修改過的數(shù)據(jù)寫到磁盤上。 說明: 可以將指定內(nèi)存地址開始的數(shù)據(jù)寫在磁盤上,可以在沒有指定參數(shù), 或指定地址參數(shù)的情況下,將調(diào)試文件寫在磁盤上。 在運(yùn)行w時需設(shè)置文件的大小cx或bx寄存器 (1)把數(shù)據(jù)寫入磁盤的指定扇區(qū) -w 起

38、始地址 驅(qū)動器名 起始扇區(qū) 扇區(qū)數(shù) (2)把數(shù)據(jù)寫入指定文件中 -w 起始地址 例a:debug -a 08f1:0100. . 寫入程序段 08f1: 012a. -r cx cx:0000 :2a寫入字節(jié)數(shù),即為程序結(jié)尾地址減起始地址 -n 設(shè)置文件名,需后綴為com -w wring 002a bytes -q a:tan即可執(zhí)行此程序 * xd命令:釋放ems內(nèi)存 例:-xd 0001 handle 0001 deallocatel釋放了 利用xd釋放后可再分配 *xm命令;把擴(kuò)充內(nèi)存上的內(nèi)存頁區(qū)映射到主內(nèi)存區(qū) 格式:xm ram 長頁碼 主內(nèi)存頁碼句柄 例:-xm3 2 0001把0

39、001號句柄的第3號邏輯頁區(qū)映射到2號真實(shí)頁區(qū) logical page 03 mapped to physical page 02 *xs命令:顯示當(dāng)前ems使用情況。 格式 -xs debug命令實(shí)際應(yīng)用1.非物理0磁道壞軟盤的修復(fù) 此種損壞從軟盤盤面上來看并沒有明顯的劃傷和霉變。一般可以恢復(fù)其數(shù)據(jù),也可使軟盤重新再利用。 處理方法如下: . 進(jìn)入debug . 取一張引導(dǎo)區(qū)沒有損壞的好磁盤,插入軟驅(qū) l 100 0 0 1 . 插入損壞的磁盤到軟驅(qū) w 100 0 0 1 q 注意:好盤與壞盤容量必須相同 2. 物理0磁道壞軟盤中的數(shù)據(jù)讀取 對于0磁道損壞的磁盤,一般來說是應(yīng)該拋棄了,當(dāng)

40、你也不妨試一試已下方法: 磁化處理:用較強(qiáng)的磁鐵在靠近壞磁盤的表面處反復(fù)移動,切不可碰到磁盤介質(zhì),以免劃傷表面,然后在試試格式化。 軟盤換面:小心的將磁盤打開,堅(jiān)磁片與金屬芯片分開,方面后再按原來的方法粘在一起即可,在重新格式化。 diskfix:對于diskfix想必大家都用的比較多了,里面的磁盤修復(fù)功能很好用的。能修復(fù)大多數(shù)磁盤表面錯誤。 3. 硬盤啟動失敗處理 在正常機(jī)上格式化一張軟盤,無其它數(shù)據(jù) 進(jìn)入debug l 0 2 0 1 w 0 0 0 1 q 用系統(tǒng)盤啟動故障機(jī)后 在進(jìn)入debug l 0 0 0 1 w 0 2 0 1 q 4. 軟盤不能正確讀取解決方法 如果使用軟盤時出

41、現(xiàn)如下提示 general failure error reading drive a 可以用以下方法解決: 將一張好盤插入軟驅(qū) 進(jìn)入debug a 100 *:*100 mov al,0 *:* mov cx,1 *:* mov dx,0 *:* mov bx,1000 *:* int 25 *:* int 20 回車 g=0100 插入壞盤并進(jìn)入debug a 200 *:*100 mov al,1 *:* mov cx,1 *:* mov dx,0 *:* mov bx,1000 *:* int 26 *:* int 20 回車 g=200 5.cmos 數(shù)據(jù)的保存,恢復(fù) cmosram

42、的地址口的口地址為 70h 數(shù)據(jù)口的口地址為 71h 讀取時只需將讀的cmosram的地址送到70h,隨后就可以從71 h中得到所需數(shù)據(jù)。 (1)讀取cmos數(shù)據(jù) 進(jìn)入debug a 100 *:*100 mov bx,1000 *:* mov cx,0040 *:* mov ax,0000 *:0109 mov dx,cx *:* mov cx,0005 *:010e loop 010e *:* out 70,al *:* mov cx,0005 *:0115 loop 0115 *:* in al,71 *:* mov bx,al *:* cmp ah,0e *:* jb 0123 *:* add ah,80 *:0123 inc ah *:* inc bx *:* mov cx,dx *:* mov al,ah *:* loop 0109 *:* mov ah,3c *:* mov dx,0150 *:* mov cx,0020 *:* int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論