華中科技大學匯編實驗報告6_第1頁
華中科技大學匯編實驗報告6_第2頁
華中科技大學匯編實驗報告6_第3頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、華中科技大學匯編實驗報告聿甲科拉大字課程實驗報告課程名稱:匯編語言程序設計實驗實驗名稱:實驗六輸入輸出與中斷處理程序設計實驗時間:2016-4-26,14:00-17:30實驗地點:南一樓804室74號實驗臺指導教師:張勇專業(yè)班級:計算機科學與技術201409班學號:U201414813姓名:唐禮威同組學生:無報告日期:2016年5月2日原創(chuàng)性聲明本人鄭重聲明:本報告的內(nèi)容由本人獨立完成,有關觀點、方法、數(shù)據(jù)和文獻等的引用已經(jīng)在文中指出。除文中已經(jīng)注明引用的內(nèi)容外,本報告不包含任何其他個人或集體已經(jīng)公開發(fā)表的作品或成果,不存在剽竊、抄襲行為。特此聲明!學生簽名:日期:成績評定實驗完成質(zhì)報告撰寫

2、質(zhì)量總成績(100量得分(70分)(實驗步驟清晰詳細深入,實驗記錄真實完整等)得分(30分)(報告規(guī)范、完整、通順、詳實等)分)指導教師簽字:日期:目錄實驗目的與要求3實驗內(nèi)容3實驗過程4任務14設計思想及存儲單元分配4流程圖4源程序4實驗步驟6實驗記錄7任務27設計思想及存儲單元分配7流程圖9源程序9實驗步驟12實驗記錄123.3任務314設計思想及存儲單元分配14流程圖14源程序14實驗步驟17實驗記錄1718參考文獻191實驗目的與要求(1) 掌握中斷矢量表的概念;熟悉I/O訪問,BIOS功能調(diào)用方法;(2) 掌握實方式下中斷處理程序的編制與調(diào)試方法。2實驗內(nèi)容任務1:用三種方式獲取中斷

3、類型碼10H對應的中斷處理程序的入口地址。要求:首先要進入虛擬機狀態(tài),然后(1) 直接運行調(diào)試工具(TD.EXE),觀察中斷欠量表中的信息。(2) 編寫程序,用DOS系統(tǒng)功能調(diào)用方式獲取,觀察功能調(diào)用相應的出口參數(shù)與“(1)”看到的結果是否相同(使用TD觀看出口參數(shù)即可)。編寫程序,直接讀取相應內(nèi)存單元,觀察讀到的數(shù)據(jù)與“(1)”看到的結果是否相同(使用TD觀看程序的執(zhí)行結果即可)。任務2:編寫一個接管鍵盤中斷的中斷服務程序并駐留內(nèi)存,要求在程序返回DOS操作系統(tǒng)后,鍵盤的按鍵A變成了按鍵B,而B變成了A。要求:(1) 在DOS虛擬機或DOS窗口下執(zhí)行程序,中斷服務程序駐留內(nèi)存。(2) 在DO

4、S命令行下按鍵A,屏幕顯示為B,按B時屏幕顯示為A。執(zhí)行TD,在代碼區(qū)輸入指令“MOVAX,0”看是否能發(fā)生變化。(3) 選作:另外編寫一個中斷服務程序的卸載程序,將鍵盤中斷服務程序恢復到原來的狀態(tài)(也就是還原中斷欠量表的信息)。任務3:讀取CMOS內(nèi)指定單元的信息,按照16進制形式顯示在屏幕上。要求:(1) 先輸入待讀取的CMOS內(nèi)部單元的地址編號(可以只處理編號小丁10的地址單元)。再使用IN/OUT指令,讀取CMOS內(nèi)的指定單元的信息。將讀取的信息用16進制的形式顯示在屏幕上。若是時間信息,可以人工判斷一下是否正確3實驗過程3.1任務13.1.1設計思想及存儲單元分配用三種方式獲取中斷類

5、型碼10H對應的中斷處理程序的入口地址。1. 直接在td中觀察即可。2. 系統(tǒng)功能調(diào)用35H,入口參數(shù)為AL=10H,取中斷信息。直接把主存中的DS:40HrIP,DS:42HCS賦值給寄存器BX和CX3.1.2流程圖無3.1.3源程序程序名renwu61.386CODESEGMENTUSE16ASSUMECS:CODESTART:XORAX,AXMOVDS,AXMOVAX,3510HINT21HMOVAH,4CHINT21HCODEENDSENDSTART程序名renwu62.386STACKSEGMENTUSE16STACKDB200DUP(0)STACKENDSCODESEGMENTUS

6、E16ASSUMECS:CODE,SS:STACKSTART:XORAX,AXMOVDS,AXXORBX,BXXORCX,CXMOVBX,DS:40HMOVCX,DS:42HMOVAH,4CHINT21HCODEENDSENDSTART3.1.4實驗步驟1. 直接運行td,置數(shù)據(jù)區(qū)為當前區(qū)執(zhí)行Goto,在地址輸入窗口輸:40H(0:10*4)->IP,(0:10*4+2->CS讀取連續(xù)的4個字節(jié),前兩個為偏移地址,后兩個為段值。然后置代碼區(qū)為當前區(qū)。輸入剛才得到的值,得到對應的程序。2. 將程序renwu61編譯、鏈接,調(diào)試直到?jīng)]有錯誤。運行tdrenwu61,在td中單步調(diào)試,觀

7、察es與bx的改變情況;3. 將程序renwu62編譯、鏈接,調(diào)試直到?jīng)]有錯誤。運行tdrenwu62,在td中單步調(diào)試,觀察寄存器的值。1. 3.1.5實驗記錄(包括實驗條件、輸入/輸出、錯誤和修改等信息的記錄)實驗環(huán)境條件:16M內(nèi)存;WINDOWSXP命令行窗口;EDIT.EXE2.0;MASM.EXE6.0;LINK.EXE5.2;TD.EXE5.0。方法一,直接觀察ds段,可以觀察到從0:40h開始低2個字節(jié)為0F96,高2個字節(jié)為3002;方法二,調(diào)用35號系統(tǒng)功能,在TD內(nèi)觀察到es為3002,bx為0F96;方法三,將0:40h開始的低2個字節(jié)移至bx,高2個字節(jié)移至cx,得到

8、cx為3002,bx為0F96;比較上述三種方法得到的結果,發(fā)現(xiàn)它們一致,說明以上方法實施得到的結果準確無誤3.2任務23.2.1設計思想及存儲單元分配設計思想:修改鍵盤驅動中斷程序(int16h),將中斷矢量表0:58h開始的4個字節(jié)修改為新的中斷程序的偏移地址和段首址,并保存號舊的鍵盤驅動中斷程序的偏移地址和段首址。在新的中斷程序中,先判斷用戶調(diào)用的是否為鍵盤驅動中斷程序的讀入鍵盤功能,若不是,則直接調(diào)用舊的鍵盤驅動中斷程序;若是,則對輸入進行處理。實際上我們改變出口參數(shù)中AL的值即是鍵入字符的ASCII碼即可實現(xiàn)。3.2.2流程圖開始INT36H的功能號為00H或10H調(diào)用OLD_INT

9、3.2.3源程序程序名renwu63.386DATASEGMENTUSE16DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,SS:STACKOLD_INTDW?,?NEW16H:CMPAH,00HJEATBCMPAH,10HJEATBJMPDWORDPTROLD_INTATB:PUSHFCALLDWORDPTROLD_INTCMPAL,41H;比較輸入的ascii碼JNZNEXT1;MOVAL,42HJMPQUITNEXT1:CMPAL,42HJNZNEXT2MOVAL,41HJMPQUITNEXT2:CMPAL,61HJNZNEXT3MOVAL,62HJMPQUI

10、TNEXT3:CMPAL,62HJNZQUITMOVAL,61HQUIT:IRETSTART:XORAX,AXMOVDS,AXMOVAX,DS:16H*4MOVOLD_INT,AX;保存偏移部分MOVAX,DS:16H*4+2MOVOLD_INT+2,AX;保存段值CLIMOVWORDPTRDS:16H*4,OFFSETNEW16HMOVDS:16H*4+2,CSSTIMOVDX,OFFSETSTART+15SHRDX,4ADDDX,10HMOVAL,0MOVAH,31HINT21HCODEENDSSTACKSEGMENTUSE16STACKDB200DUP(0)STACKENDSENDSTA

11、RT3.2.4實驗步驟1. 使用編輯程序EDIT.EXE錄入源程序renwu63,編譯,鏈接。2. 觀察提示信息,若出錯,則用編輯程序修改錯誤,修改后再重新編譯。3. 執(zhí)行該程序輸入a/A,觀察是否輸出b/B;輸入b/B,觀察是否輸出a/A。3.2.5實驗記錄實驗環(huán)境條件:16M內(nèi)存;WINDOWSXP命令行窗口;EDIT.EXE2.0;MASM.EXE6.0;LINK.EXE5.2;TD.EXE5.0。在鍵盤鍵入a/A,發(fā)現(xiàn)屏幕回顯b/B;在鍵盤鍵入b/B,發(fā)現(xiàn)屏幕回顯a/A,證明程序編寫得準確無誤當輸入ababAB,輸出:0Cou.iajndJis%>noisnrcnuuGJaant

12、CR>HfiSMCon>|MCibillltvDriverCojiirrightCC>HicrosoftCorp1殆1.fillrightsreserutsdInokiny=HL.EKE/I.zZaxcrornHuS?,AvnHHhn也CR>naaanbloirU*lbalori6.況CnpyrifflilCOHirnspfrCurji1991,ftll-rihitwrrsrrwierf.Avvtfimblliiy=rv«kuu.63.«icviE:>linkKBNVUbJ.OBJnirosoftCR>Se<TmentedlExec

13、utableLinkerUetsidiii034Mlay241?¥1CoplightCC>MlcrosioftCorp1984-19,91Allerved.HunFilaHENNUb3.oxsJ=LltFlit-tifeLul.iidjjJ:LihmrinnI.lihlsDefinit:iDnFiloEmul.<deE"E*S>ri&nw«&J通過編寫代碼發(fā)現(xiàn),將舊的中斷程序的偏移地址與首地址保存下來后,可有有兩種方式調(diào)用舊的中斷程序:Jmpdwordptrold_int;Calldwordptrold_int;前一種方式,可直接

14、結束新的(不返回至)中斷程序;后一種方式,可返回至新的中斷程序。3.3任務33.3.1設計思想及存儲單元分配1號系統(tǒng)功能調(diào)用讀入字符,將用戶輸入轉化為數(shù)字,作為信息的偏移地址。然后調(diào)用in指令,從指定端口取出數(shù)據(jù)即可。3.3.2流程圖開始.一號功能調(diào)用輸入字符轉化成數(shù)字INAX,D溢入AX輸出A敬據(jù)結束3.3.3源程序程序名renwu64.386datasegmentuse16bufdb2dataendsstacksegmentuse16stackdb200dup(0)stackendscodesegmentuse16assumeds:data,ss:stack,cs:codestart:mo

15、vax,datamovds,axlopa:movah,1int21hsubal,30hout70h,alinal,71hmovah,alandal,0fhshrah,4;讀入輸入;轉化成十進制09;取出信息;轉化為ascll碼addax,3030hxchgah,almovbx,axleasi,bufmovwordptrsi+1,bxmovdl,0ah;輸出換行movah,2int21hmovdl,0dhmovah,2int21hmovdl,bl;輸出信息movah,2int21hmovdl,bhmovah,2int21hmovdl,0ah;輸出換行movah,2int21hmovdl,0dh1. movah,2int21hjmplopa;循環(huán)movah,4chint21hcodeendsendstart3.3.4實驗步驟錄入源程序renwu64,編譯,鏈接。2. 觀察提示信息,若出錯,則用編輯程序修改錯誤,修改后再重新編譯。3. 執(zhí)行該程序,0''9',然后觀察屏幕輸出信息,驗證是否正確。3.3.5實驗記錄實驗環(huán)境條件:16M內(nèi)存;WINDOWSXP命令行窗口;EDIT.EXE2.0;MASM.EXE6.0;LINK.EXE5.2;TD.EXE5.0。1. 取出的信息按照BCD編碼進行壓縮,分為兩部分,分別存儲在AL,AH。比

溫馨提示

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

評論

0/150

提交評論