基于32位的微機原理與接口技術(shù)實驗指導(dǎo)書.doc_第1頁
基于32位的微機原理與接口技術(shù)實驗指導(dǎo)書.doc_第2頁
基于32位的微機原理與接口技術(shù)實驗指導(dǎo)書.doc_第3頁
基于32位的微機原理與接口技術(shù)實驗指導(dǎo)書.doc_第4頁
基于32位的微機原理與接口技術(shù)實驗指導(dǎo)書.doc_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理與接口技術(shù)實驗指導(dǎo)書授課教師:王春武(內(nèi)部資料)目 錄實驗一、 算術(shù)邏輯運算單元實驗1實驗二、 通用寄存器單元實驗3實驗三、存儲器和總線實驗5實驗四、堆棧寄存器實驗6實驗五、熟悉MASMPlus編程環(huán)境12實驗六、順序程序設(shè)計12實驗七、分支程序設(shè)計12實驗八、循環(huán)程序設(shè)計12實驗九、子程序設(shè)計12實驗十、 綜合實驗12實驗十一、8253 發(fā)聲控制實驗128086匯編語言初學(xué)者教程12什么是匯編語言?(匯編語言學(xué)習(xí)參考)12第一部分8位模型機實驗實驗一、 算術(shù)邏輯運算單元實驗一 實驗?zāi)康?1掌握簡單運算器的數(shù)據(jù)傳輸方式 2掌握74LS181的功能和應(yīng)用 二.實驗要求 完成不帶進位位算術(shù)運算實驗、帶進位位算術(shù)加法運算實驗、邏輯運算單元實驗。按照實驗步驟完成實驗項目,了解算術(shù)邏輯運算單元運用。三實驗說明 1ALU單元實驗構(gòu)成: 1)運算器由兩片74LS181構(gòu)成8位字長的ALU單元。2)運算器的2個數(shù)據(jù)輸入端分別由2個74LS374鎖存,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。3)運算器的數(shù)據(jù)輸出由一片74LS244(輸出緩沖器)來控制,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。2ALU單元的工作原理: 輸入寄存器DR1的EDR1為低電平并且D1CK為電平正跳變時,把來自數(shù)據(jù)總線的數(shù)據(jù)打入寄存器DR1,同樣通過EDR2、D2CK可把數(shù)據(jù)打入輸入寄存器DR2。算術(shù)邏輯運算單元的核心是由2片74LS181組成,它可以進行2個8位的二進制數(shù)算術(shù)邏輯運算,74LS181的各種工作方式可通過設(shè)置控制信號(S0、S1、S2、S3、M、CN)來實現(xiàn)。當(dāng)實驗者正確設(shè)置了74LS181的各個控制信號,74LS181會把DR1、DR2寄存器內(nèi)的數(shù)據(jù)進行相應(yīng)地運算。由于DR1、DR2已經(jīng)把數(shù)據(jù)鎖存,只要74LS181的控制信號不變,那么74LS181的輸出數(shù)據(jù)也不會改變。輸出緩沖器采用三態(tài)門74LS244,當(dāng)控制信號ALU-O0時,74LS244開通,把74LS181的運算結(jié)果輸出到數(shù)據(jù)總線;當(dāng)ALU-O1時,74LS244的輸出為高阻。 3控制信號說明: 信號名稱 作用 有效電平 EDR1選通DR1寄存器低電平有效EDR2選通DR2寄存器低電平有效DR1CKDR1寄存器工作脈沖上升延有效DR2CKDR2寄存器工作脈沖上升延有效S3S074LS181工作方式選擇16種組合M邏輯或算術(shù)選擇M=0算術(shù),M=1邏輯CN有無進位輸入CN=0帶進位CN=1不帶進位CCK進位寄存器的工作脈沖上升延有效ALU-O計算結(jié)果輸出至總線低電平有效四實驗步驟取一根長數(shù)據(jù)線,一頭插入ALU-IN(8芯的盒型插座)另一頭插入實驗箱右側(cè)的J1插座(對應(yīng)二進制開關(guān)H16-H23),把ALU-OUT(8芯的盒型插座)插入總線的數(shù)據(jù)總線DJ2 。(實驗箱默認(rèn)的信號為高電平,實驗中只需連接低電平信號即可)1. 把D1CK和D2CK用連線連到脈沖單元的PLS1,把EDR1、ALU-O,S0、S1、S2、S3、CN、M接入試驗箱右側(cè)對應(yīng)二進制撥動開關(guān)。2. 置EDR1=0,EDR2=1、ALU-O=1。把二進制開關(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ù)是否進入DR1中。4. 同樣方法,置EDR2=0把二進制H16-H23開關(guān)置0XA7。5. 按PLS1脈沖按鍵,再產(chǎn)生一個上升沿的脈沖,把0XA7打入DR2(74LS374)。6. 參照表一,設(shè)置M CN S3 S2 S1 S0的狀態(tài),實現(xiàn)觀察DR1(A)、DR2(B)以及實驗結(jié)果。五. 實驗思考 驗證74LS181的算術(shù)運算和邏輯功能,在保持DR1=0x65、DR2=0xA7時,改變運行運算器的功能設(shè)置,實現(xiàn)觀察A,B,A+B,A加B功能。表1 74LS181的邏輯方式 M=1 M=0算術(shù)運算 S3 S2 S1 S0邏輯運算CN=1(無進位)CN=0(有進位)0000F=/AF=AF=A加10001F=/(A+B)F=A+BF=(A+B)加10010F=/A BF=A+/BF=(A+/B)加10011F=0F=減1(2的補)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=(A+/B)加A加11111F=AF=A減1F=A實驗二、 通用寄存器單元實驗一實驗?zāi)康?1了解寄存器的組成和硬件電路 2利用寄存器進行數(shù)據(jù)傳輸 二實驗要求 按照實驗步驟完成實驗項目, 實現(xiàn)寄存器移位操作。了解通用寄存器單元運用。 三實驗說明 1 寄存器實驗構(gòu)成: (1)通用寄存器由74LS198構(gòu)成8位字長的寄存器單元,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。(由于74LS198的使用率不高,有的型號實驗機上采用2片GAL來替代它,使用方法和74LS198基本相同)。(2)數(shù)據(jù)輸出由一片74LS244(輸出緩沖器)來控制,可通過8芯扁平電纜直接連接到數(shù)據(jù)總線。(3)由1片GAL、1片7474和一些常規(guī)芯片組成判零和進位電路,分別由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的輸出為高阻。3控制信號說明: 信號名稱 作用 有效電平 X0、X174LS198的工作模式低電平ERA選通74LS198寄存器低電平RA-O74LS198寄存器內(nèi)容輸出至總線低電平RACK74LS198寄存器工作脈沖上升沿M在ALU單元中作為邏輯和算術(shù)運算的選擇。在本實驗中決定是否帶進位移位0 帶進位1 不帶進位四. 實驗步驟(數(shù)據(jù)輸入)1. 把RA-IN(8芯的盒型插座)插入數(shù)據(jù)輸出板上的J1 8芯的盒型插座(對應(yīng)二進制開關(guān)),把RA-OUT(8芯的盒型插座)插入總線的數(shù)據(jù)總線DJ6。2. 把RACK連到脈沖單元的PLS11,把ERA、X0、X1、RA-O、M接入實驗板右側(cè)的對應(yīng)開關(guān)。3. 實現(xiàn)置數(shù)功能:置ERA=0、RA-O=0、X0=1、X1=1把二進制開關(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,觀察實驗現(xiàn)象;6. 保持M=0,將X1=1,X0=0, 按PLS1,觀察實驗現(xiàn)象7. 保持M=1,重新完成步驟5和6觀察實驗現(xiàn)象8. 將CCK(進位脈沖)與RACK相連,重新完成實驗57觀察實驗現(xiàn)象。提示:M=1 功能:8位循環(huán)移位,與CCK無關(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上升沿左移 實驗三、存儲器和總線實驗一實驗?zāi)康?1 熟悉存儲器和總線組成和硬件電路 二實驗要求 按照實驗步驟完成實驗項目,利用存儲器和總線傳輸數(shù)據(jù)。 三實驗說明 1 存儲器實驗的構(gòu)成: (1)存儲器采用靜態(tài)RAM(6264)(2)存儲器的控制電路由1片74LS32和74LS08組成。(3)總線由2片74LS245組成,把整個系統(tǒng)分為內(nèi)部總線和外部總線。2存儲器和總線的原理 (1)總線的原理:由于本系統(tǒng)內(nèi)使用8根地址線、8位數(shù)據(jù)線,所以使用1片74LS245作為數(shù)據(jù)總線另1片作為地址總線(見圖)??偩€把整個系統(tǒng)分為內(nèi)部總線和外部總線,由于數(shù)據(jù)總線需要進行內(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接地,其實際容量為256個字節(jié)。6264的數(shù)據(jù)、地址總線已經(jīng)接在總線單元的外部總線上。存儲器有3個控制信號:外部地址總線設(shè)置存儲器地址,RM=0時,把存儲器中的數(shù)據(jù)讀出到總線上。當(dāng)WM=0,并且EMCK有一個上升沿時,把外部總線上的數(shù)據(jù)寫入存儲器中。為了更方便的編輯內(nèi)存中的數(shù)據(jù),在實驗機處于停機狀態(tài)時,可由監(jiān)控來編輯其中的數(shù)據(jù)。(3)控制信號說明: 信號名稱作用有效電平BUS總線方向選擇 RM6264的讀允許信號低電平有效WM6264的寫允許信號低電平有效EMCK6264的寫入脈沖信號上升延有效四實驗步驟 l 把數(shù)據(jù)總線一端插入DJ8另一端插入實驗板右側(cè)的J2口、地址總線上一端插入B10單元的AJ1另一端插入實驗板右側(cè)的J3口。l 把EMCK連到脈沖單元的PLS1,把WM、RM、BUS接入右側(cè)對應(yīng)二進制的開關(guān),由于BUS與RM狀態(tài)一直相同,因此可以將BUS也連接到RM孔上。撥動二進制開關(guān),置數(shù)據(jù)為0X55,地址為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)如下表)。H15H14H13WMRMBUS100 此時數(shù)據(jù)總線上的LED燈IDB0-IDB7顯示0X55。實驗四、堆棧寄存器實驗一實驗?zāi)康?1 熟悉堆棧概念 2 熟悉堆棧寄存器的組成和硬件電路 二實驗要求 按照實驗步驟完成實驗項目,對4個堆棧寄存器讀出、寫入數(shù)據(jù)。 三實驗說明 1、堆棧寄存器組實驗構(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兩根控制線通過74LS139譯碼來選擇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寄存器的工作脈沖上升延有效四實驗步驟 l 將R-IN(8芯的盒型插座)插入數(shù)據(jù)輸出板上的8芯的盒型插座,將R-OUT(8芯的盒型插座)插入左側(cè)的數(shù)據(jù)總線。l 把RR、WR、SA、SB接入二進制的撥位開關(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 在二進制的撥位開關(guān)上置0X01(對應(yīng)開關(guān)如下表)。H23H22H21H20H19H18H17H1600000001l 按PLS1脈沖按鍵,脈沖單元的PLS1+,在RCK上產(chǎn)生一個上升沿,此時把數(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補充試驗:DEBUG的基本操作(參見附件2)。過程:1、 開始 運行DEBUG 確定,出現(xiàn)黑色屏幕并有短線提示,表示進入DEBUG成功。2、 收入 ?號,查看DEBUG 命令。3、 依次試驗各個命令的用法。第二部分debug命令DEBUG是一個DOS實用程序,是供程序員使用的程序調(diào)試工具,可以用它檢查內(nèi)存中任何地方的字節(jié)以及修改任何地方的字節(jié)。它可以用于逐指令執(zhí)行某個程序以驗證程序運行的正確性,也可以追蹤執(zhí)行過程、比較一個指令執(zhí)行前后的值以及比較與移動內(nèi)存中數(shù)據(jù)的范圍,讀寫文件與磁盤扇區(qū)。目錄DEBUG命令介紹 DEBUG的命令及功能如下: 1. * A地址 匯編命令 2. * C源地址范圍目的地址比較命令 3. 轉(zhuǎn)儲命令 4. * G=起始地址 斷點 執(zhí)行命令 5. * I端口地址 6. * L地址盤號:邏輯扇區(qū)號扇區(qū)數(shù) 7. * M地址范圍起始地址 數(shù)據(jù)傳送命令 8. * N盤號: 路徑 文件名 擴展名 9. * O端口地址數(shù)據(jù) 輸出命令 10. * P=地址 數(shù)據(jù) 進程命令 11. * Q 退出命令。 12. * R寄存器 寄存器命令 13. * S地址范圍 字符串 14. * T=地址指令條數(shù) 跟蹤命令 15. * U起始地址或者地址范圍 16. * W寫盤命令debug命令實際應(yīng)用DEBUG命令介紹 DEBUG的命令及功能如下: 1. * A地址 匯編命令 2. * C源地址范圍目的地址比較命令 3. 轉(zhuǎn)儲命令 4. * G=起始地址 斷點 執(zhí)行命令 5. * I端口地址 6. * L地址盤號:邏輯扇區(qū)號扇區(qū)數(shù) 7. * M地址范圍起始地址 數(shù)據(jù)傳送命令 8. * N盤號: 路徑 文件名 擴展名 9. * O端口地址數(shù)據(jù) 輸出命令 10. * P=地址 數(shù)據(jù) 進程命令 11. * Q 退出命令。 12. * R寄存器 寄存器命令 13. * S地址范圍 字符串 14. * T=地址指令條數(shù) 跟蹤命令 15. * U起始地址或者地址范圍 16. * W寫盤命令debug命令實際應(yīng)用展開DEBUG命令介紹它的功能包括以下幾個方面。 1,直接輸入,更改,跟蹤,運行匯編語言源程序; 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ù): 十六進制數(shù)據(jù)和ASC碼字符。它的顯示格式是各個字節(jié)的十六進制值以及值在32與126之間的字節(jié)的相應(yīng)ASC碼字符。 在DEBUG中輸入數(shù)據(jù)有兩種方法: 提示方法和非提示方法。在用提示方法時,用戶可以輸入要求輸入數(shù)據(jù)的命令,后跟數(shù)據(jù)所要輸入的地址。然后用戶就可以看到該地之中已有內(nèi)容及一個冒號提示符。此時用戶可以在提示符下輸入一個新的值或者按下回車鍵或CTRL+C回到短橫(-)提示符。在運用非提示方法時,用戶可以輸入要輸入數(shù)據(jù)的內(nèi)存地址以及要輸入的字節(jié)。但與使用字處理程序或正文編輯程序時不一樣,在使用DEBUG時,用戶不能直接移動光標(biāo)到一入口點輸入或修改數(shù)據(jù),而要一次輸入一個或幾個字節(jié)。 在使用DEBUG時可以只涉及內(nèi)存中的數(shù)據(jù),從而一般都要指定所要處理的內(nèi)存地址,地址的輸入格式是: 段地址: 位移。如果沒有輸入地址,DEBUG將假定為當(dāng)前內(nèi)存段,從位于地址100H的字節(jié)開始。前100H字節(jié)保留給程序段前綴使用,這一專用區(qū)域用于建立DOS與程序之間的聯(lián)系。DEBUG總是用四位十六進制數(shù)表示地址。用兩位數(shù)表示十六進制數(shù)據(jù)。 講到這里大家應(yīng)該對DEBUG有了初步的了解,但是光知道這些可不夠,接下來我來講講DEBUG的命令格式和命令。當(dāng)輸入 DEBUG 調(diào)用了DEBUG程序,就會出現(xiàn)一個短橫提示符,用戶就可以在這一短橫后輸入DEBUG程序的命令。有些DEBUG命令會顯示一個內(nèi)存地址并產(chǎn)生一個作為提示符的冒號。在這些提示符后,用戶可以輸入一個新值以改變所顯示位置原來的值。如果用戶不輸入一個新值而是按下回車或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地址 匯編命令功能: 將指令直接匯編成機器碼輸入到內(nèi)存中。 說明: 用于小段程序的匯編及修改目標(biāo)程序,所有輸入的數(shù)字均采用十六進制, 用戶裝入內(nèi)存的匯編語句是連續(xù)存放的,若沒有指定地址,并且前面沒有使用匯編命令,改語句被匯編到 CS:0100區(qū)域。 例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 指定中斷點 Program terminated normally: 另外:我們在DEBUG下可運行一個文件.EXE 如:A:debug tan.exe -g 即可開始運行此程序,和在DOS下完全一樣: * H數(shù)值數(shù)值 十六進制算術(shù)運算命令 功能: 分別顯示兩個十六進制數(shù)相加的和以及第一個數(shù)減去第二個數(shù)的差。 說明: 替用戶完成簡單的十六進制數(shù)的運算。 例:-h4538 5623 9B5B EF15 * I端口地址功能: 從指定的端口輸入并顯示(用十六進制)的一個字節(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ū)的方式。 例:-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)存,裝入的文件可在進入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ù)傳送命令功能: 把地址范圍內(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盤號: 路徑 文件名 擴展名功能: 定義操作文件名。 說明: 可同時定義兩個操作文件,并將形成的文件控制塊相應(yīng)的設(shè)置在內(nèi)存 CS:5C和CS:6C上,供以后的L和W命令操作之用。我們在運行程序偵錯時,在啟動DEBUG時在其后加文件程序名以及該程序的參數(shù)或運行文件,但當(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)我們遇到開機要求輸入口令時,可用如下方式取消 -O 70 10 _O 71 00 * P=地址 數(shù)據(jù) 進程命令功能: 將一個子程序調(diào)用指令,循環(huán)指令,中斷指令或一個重復(fù)字符串指令,停止在下一條指令上。 說明: 在執(zhí)行一條子程序調(diào)用指令,循環(huán)指令,中斷指令或一個重復(fù)字符串指令時,發(fā)出P命令去執(zhí)行有關(guān)指令,并且返回到要執(zhí)行的下一條指令。 P命令和T一樣選用來跟蹤程序運行過程用的命令,我們可以在P命令中指定程序運行的起始地址,指令個數(shù),如未指定則CS:IP所指定程序的地址開始一次運行一條令。 P與T命令的差別在于P命令把CALL/INT當(dāng)成一條指令來執(zhí)行,簡化了跟蹤過程,P命令只運行RAM內(nèi)存的命令,而T命令則可運行RAM和ROM里的程序。 * Q 退出命令。* R寄存器 寄存器命令功能: 一,顯示單個寄存器的內(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)志的名稱即可。 標(biāo)志名稱 設(shè)置 未設(shè)置 標(biāo)志名稱 設(shè)置 未設(shè)置 滋出 OV(未溢出) NV(未溢出) 零位 ZR NZ(不等于零) 方向 DN(減少) UP(增加) 輔助進位 AC NA(無進位) 中斷 EI(許可) DI(禁止) 奇偶標(biāo)志 PE(偶) PO(奇) 符號 NG(負(fù)) PL(正) 進位 CY NC(清除進位) 例:-Rf NV UP EI PL NZ NA PO NC :-OV DI 輸入值 * S地址范圍 字符串功能: 在指定的地址范圍內(nèi)查找給定的字符串。 說明: 用來指定在地址范圍內(nèi)查找一個字符串,若找到則顯示其地址, 否則直接顯示DEBUG提示符。隱含地址為DS段值。 在此內(nèi)存可以用(起始地址)(終止地址)或(起始地址)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=起始地址 從指定地址起執(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 MOV AH,02 若指定起始地址,則T命令會從指定的地址開始跟蹤,我們還可以指定跟蹤一次所運行指令的個數(shù),用Ctrl+S暫停屏幕的顯示,以便觀察。 -t=100 10;由CS:100開始跟蹤10條指令 * U起始地址或者地址范圍功能: 將內(nèi)存中的內(nèi)容轉(zhuǎn)換為匯編語句。 說明: 反匯編的字節(jié)數(shù)取決與用戶的系統(tǒng)顯示形式,以及在U命令中使用的可選項。 (1)從指定地址開始編譯,反匯編32個字節(jié) -U地址從CS:100開始,其反匯編32個字節(jié) 如果地址被省略,則從一個U命令的最后一條指令的下一條單元開始匯編32個字節(jié)。 (2)對指定的存貯范圍進行反匯編 -u起始地址 終止地址(L 長度) 例:-U 100 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)試文件寫在磁盤上。 在運行W時需設(shè)置文件的大小CX或BX寄存器 (1)把數(shù)據(jù)寫入磁盤的指定扇區(qū) -W 起始地址 驅(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命令;把擴充內(nèi)存上的內(nèi)存頁區(qū)映射到主內(nèi)存區(qū) 格式:XM RAM 長頁碼 主內(nèi)存頁碼句柄 例:-XM3 2 0001把0001號句柄的第3號邏輯頁區(qū)映射到2號真實頁區(qū) Logical page 03 mapped to physical page 02 *XS命令:顯示當(dāng)前EMS使用情況。 格式 -XS debug命令實際應(yīng)用1.非物理0磁道壞軟盤的修復(fù) 此種損壞從軟盤盤面上來看并沒有明顯的劃傷和霉變。一般可以恢復(fù)其數(shù)據(jù),也可使軟盤重新再利用。 處理方法如下: . 進入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)你也不妨試一試已下方法: 磁化處理:用較強的磁鐵在靠近壞磁盤的表面處反復(fù)移動,切不可碰到磁盤介質(zhì),以免劃傷表面,然后在試試格式化。 軟盤換面:小心的將磁盤打開,堅磁片與金屬芯片分開,方面后再按原來的方法粘在一起即可,在重新格式化。 diskfix:對于diskfix想必大家都用的比較多了,里面的磁盤修復(fù)功能很好用的。能修復(fù)大多數(shù)磁盤表面錯誤。 3. 硬盤啟動失敗處理 在正常機上格式化一張軟盤,無其它數(shù)據(jù) 進入debug l 0 2 0 1 w 0 0 0 1 q 用系統(tǒng)盤啟動故障機后 在進入debug l 0 0 0 1 w 0 2 0 1 q 4. 軟盤不能正確讀取解決方法 如果使用軟盤時出現(xiàn)如下提示 general failure error reading drive a 可以用以下方法解決: 將一張好盤插入軟驅(qū) 進入debug a 100 *:*100 mov al,0 *:* mov cx,1 *:* mov dx,0 *:* mov bx,1000 *:* int 25 *:* int 20 回車 g=0100 插入壞盤并進入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的地址口的口地址為 70h 數(shù)據(jù)口的口地址為 71h 讀取時只需將讀的cmosram的地址送到70h,隨后就可以從71 h中得到所需數(shù)據(jù)。 (1)讀取cmos數(shù)據(jù) 進入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 21 *:* mov bx,ax *:* mov dx,1000 *:* mov cx,0040 *

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論