




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、岸中科技大孚課程實驗報告課程名稱:匯編語言程序設(shè)計實驗實驗名稱:實驗四子程序的設(shè)計與調(diào)用,模塊化程序設(shè)計實驗時間:2016-4-12,14:00-17:30實驗地點:南一樓804室73號實驗臺指導(dǎo)教師:張勇專業(yè)班級:計算機科學(xué)與技術(shù)201409班學(xué)號:U201414813姓名:唐禮威同組學(xué)生:魯凱報告日期:2016年4月18日原創(chuàng)性聲明本人鄭重聲明:本報告的內(nèi)容由本人獨立完成,有關(guān)觀點、方法、數(shù)據(jù)和文獻(xiàn)等的引用已經(jīng)在文中指出。除文中已經(jīng)注明引用的內(nèi)容外,本報告不包含任何其他個人或集體已經(jīng)公開發(fā)表的作品或成果,不存在剽竊、抄襲行為。特此聲明!學(xué)生簽名:日期:成績評定頭駟兀成質(zhì)重倚分(70分)(實
2、驗步驟清晰詳細(xì)深入,實驗記錄真實完整等)報告撰寫質(zhì)量得分(30分)(報告規(guī)范、完整、通順、詳實等)總成績(100分)指導(dǎo)教師簽字:日期:匯編語言程序設(shè)計實驗報告1 實驗?zāi)康呐c要求12 實驗內(nèi)容13 實驗過程23.1 任務(wù)123.1.1 設(shè)計思想及存儲單元分配23.1.2 流程圖33.1.3 源程序43.1.4 實驗步驟123.1.5 實驗記錄124 體會14參考文獻(xiàn)15匯編語言程序設(shè)計實驗報告1實驗?zāi)康呐c要求(1)掌握子程序設(shè)計的方法與技巧,熟悉子程序的參數(shù)傳遞方法和調(diào)用原理;(2)掌握宏指令、模塊化程序的設(shè)計方法;(3)掌握較大規(guī)模程序的合作開發(fā)與調(diào)試方法。2實驗內(nèi)容進一步修改與增強實驗二的
3、學(xué)生成績查詢程序的功能,具體要求如下:(1)程序執(zhí)行時首先顯示一個功能菜單:選才¥1=錄入學(xué)生姓名和各科考試成績,2=計算平均分,3=成績排序,4=輸出成績單,5=程序退出。提示:由于學(xué)生姓名和成績是通過程序錄入的,因此,定義學(xué)生成績表緩沖區(qū)時,初始值都可以置零。為避免錄入成績的時間過程太長,假定學(xué)生人數(shù)在5人左右,具體人數(shù)自行決定。(2)2人一組,一人負(fù)責(zé)包括菜單顯示、程序退出在內(nèi)的主程序,以及菜單中的功能1和2;另一人負(fù)責(zé)菜單中的功能3和4。各自匯編自己的模塊,然后連接生成一個程序。注意,在每個模塊的開始,注明編寫者的名字以及同組同學(xué)的名字。(3)錄入學(xué)生姓名和各科考試成績時,首
4、先顯示錄入的是第幾個學(xué)生的信息,然后分別在提示之后輸入姓名和各科成績(可以借鑒書上十進制轉(zhuǎn)二進制的子程序F10T2)。所有學(xué)生信息錄入完畢后回到菜單顯示的位置。姓名及考試成績的存放、平均分的計算,按照實驗二的要求。(4)排序的基本要求是按照平均成績從高到低排序,也可以考慮按照指定課程的成績排序。輸出成績單的基本要求是按照排序的結(jié)果依次顯示每個學(xué)生的姓名和平均成績,也可以考慮按照指定課程、指定進制的形式顯示(可以借鑒書上二進制轉(zhuǎn)十進制的子程序F2T10)。提示:可以采用一個一維數(shù)組記錄每個學(xué)生成績的排序名次,這樣就可以避免在排序算法里交換成績表中的具體信息了。(5)將9號和10號DOS系統(tǒng)功能調(diào)
5、用定義成宏指令并調(diào)用。上述任務(wù)中,重要操作環(huán)節(jié)(納入到學(xué)生自己寫的實驗步驟中)提示:匯編語言程序設(shè)計實驗報告本次實驗中需要學(xué)生嘗試體會的操作可分為以下幾種:1 .在TD中跟蹤到子程序內(nèi)部有幾種方法?在TD中觀察子程序調(diào)用和返回時堆棧的變化。2 .注意觀察FAR、NEAR類型子程序的RET指令的機器碼有何不同?觀察FAR類型子程序被調(diào)用時堆棧的變化情況。3 .通過把一個模塊拆成多個模塊或反之,體會子程序和模塊化程序設(shè)計的方法,體會模塊調(diào)用關(guān)系圖、子程序功能說明、輸入/輸出說明在程序設(shè)計中的作用。4 .觀察不同模塊的可合并段合并后變量偏移地址的變化情況。觀察不同段在內(nèi)存里的放置次序0體會模塊間段的
6、定義及其對應(yīng)的裝配方法。5 .在編程中使用不同的子程序參數(shù)傳遞方法來編寫同一個子程序。6 .觀察模塊間的參數(shù)的傳遞方法,包括公共符號的定義和外部符號的引用,若符號名不一致或類型不一致會有什么現(xiàn)象發(fā)生?7 .通過TD觀察宏指令在執(zhí)行程序中的替換和擴展,解釋宏和子程序的調(diào)用有何不同。8 .如何使菜單和成績單顯示得更漂亮一點?3實驗過程3.1 任務(wù)13.1.1 設(shè)計思想及存儲單元分配任務(wù)主要是實現(xiàn)主菜單和功能一、功能二。主菜單很簡單,就是重復(fù)多次使用9號調(diào)用輸出菜單欄,然后1號調(diào)用輸入1、2、3、4、5,選擇要實現(xiàn)的功能。子程序1:寄存器分配:CL:輸入姓名字符串長度CH:計數(shù):每個學(xué)生3次輸入成績
7、SI:循環(huán)錄入姓名和成績時SI每+1實現(xiàn)BUF段14個字節(jié)的跳躍BX:計數(shù):+1在INPUT_N和INPUT_S和BUF段中實現(xiàn)后移AX:存放姓名的字符和成績的字符DX:在將輸入成績字符轉(zhuǎn)換為實際成績時存放成績子程序2:寄存器分配:BX:+1實現(xiàn)尋找成績所在的字節(jié)SI:每+1實現(xiàn)一個學(xué)生到另一個學(xué)生的跳躍匯編語言程序設(shè)計實驗報告AX:存放3門課相加后的成績CX:CL:3門課成績CX:4個學(xué)生3.1.2 流程圖子程序1:開始NN把成績放入BUF段循環(huán)3次將字符串轉(zhuǎn)化為真實成績N=0?結(jié)束匯編語言程序設(shè)計實驗報告子程序2:開始0->SI0->AX0->BX3->CL4-&g
8、t;CH0->SS*14->SICL=0?AX/3->ALAL->BUFSI+13BUFBX+SI+10->DLAL+DL->ALBX+CL-S+CH-3.1.3源程序;主程序;編寫者:唐禮威;同組同學(xué):魯凱;功能:定義數(shù)據(jù)段,打印功能菜單PUBLICBUFPUBLICNEXTRNSORT:NEAREXTRNPRINT:NEAR.386STACKSEGMENTUSE16STACK匯編語言程序設(shè)計實驗報告DB200DUP(0)STACKENDSDATASEGMENTUSE16PUBLICBUFDB10DUP(0)DB?,?,?,?DB10DUP(0)DB?,?
9、,?,?DB10DUP(0)DB?,?,?,?DB10DUP(0)DB?,?,?,?NDW0SDW0TIP1DB'Pleasemakethechoice:$'TIP2DB'1inputname$'TIP3DB'2calculatescore$'TIP4DB'3sortingorder$'TIP5DB'4print$'TIP6DB'5exit$'INPUT_NDB12DB?DB10DUP(0)INPUT_SDB6DB?DB4DUP(0)DATAENDSCODESEGMENTUSE16PUBLICASS
10、UMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXNINEMACROA;宏定義9號調(diào)用LEADX,A匯編語言程序設(shè)計實驗報告MOVAH,9INT21HENDMMENU:NINETIP1;輸出菜單MOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HNINETIP2MOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HNINETIP3MOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HNINETIP4MOVDL,0AHMOVAH,2INT21
11、HMOVDL,0DHMOVAH,2INT21HNINETIP5MOVDL,0AHMOVAH,2匯編語言程序設(shè)計實驗報告INT21HMOVDL,0DHMOVAH,2INT21HNINETIP6MOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVAH,1INT21H;MOVDL,0AH;MOVAH,2;INT21H;MOVDL,0DH;MOVAH,2;INT21HCMPAL,31HJZL1CMPAL,32HJZL2CMPAL,33HJZL3CMPAL,34HJZL4CMPAL,35HJZOVERJMPMENUOVER:MOVAH,4CHINT21H匯編語言
12、程序設(shè)計實驗報告L1:CALLLOPA1JMPMENUL2:CALLLOPA2JMPMENUL3:CALLSORTJMPMENUL4:CALLPRINTJMPMENU;子程序1;編寫者:唐禮威;同組同學(xué):魯凱;功能:輸入4個學(xué)生的姓名和成績;寄存器分配:CL:輸入姓名字符串長度;CH:計數(shù):每個學(xué)生3次輸入成績;SI:循環(huán)錄入姓名和成績時SI每+1實現(xiàn)BUF段14個字節(jié)的跳躍;BX:計數(shù):+1在INPUT_N和INPUT_S和BUF段中實現(xiàn)后移;AX:存放姓名的字符和成績的字符;DX:在將輸入成績字符轉(zhuǎn)換為實際成績時存放成績LOPA1PROCNEARTENMACROB;宏定義10號調(diào)用LEAD
13、X,BMOVAH,10INT21HENDMMOVSI,0LOOP1A:MOVBX,0TENINPUT_NMOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2匯編語言程序設(shè)計實驗報告INT21HMOVCL,INPUT_N1NEXT_N:PUSHAXMOVAX,NIMULAX,14MOVSI,AXPOPAXMOVAL,INPUT_N2+BXMOVBX+SI,ALINCBXDECCL;把每個字符放入BUF段JNZNEXT_NMOVCH,0;三門課的成績SCORE:MOVBX,0TENINPUT_SMOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2IN
14、T21HMOVDL,100MOVDH,0MOVCL,INPUT_S1;輸入成績長度,輸入3位數(shù)進行轉(zhuǎn)換NEXT_S:;把輸入的字符串轉(zhuǎn)為10進制成績PUSHAXMOVAX,NIMULAX,14MOVSI,AXPOPAXMOVAL,INPUT_S2+BX匯編語言程序設(shè)計實驗報告SUBAL,30IMULDL;(AL)*DL->AXADDDH,ALINCBXPUSHAXPUSHBXXORAX,AXMOVAL,DL;(DL)->ALMOVBL,10;IDIVBL;(AX)/10->ALMOVDL,AL;(AL)->DLPOPBXPOPAXDECCLJNZNEXT_S;成績的3個
15、字符進行轉(zhuǎn)換ADDBL,CHMOVBX+SI+7,DH;把成績放入BUF10INCCHCMPCH,3JNZSCORE;循環(huán)3次輸入成績INCNCMPN,4;循環(huán)輸入4個人的信息JNZLOOP1ARETLOPA1ENDP;子程序2;編寫者:唐禮威;同組同學(xué):魯凱;功能:計算4個學(xué)生的平均成績10匯編語言程序設(shè)計實驗報告;寄存器分配:BX:+1實現(xiàn)尋找成績所在的字節(jié);SI:每+1實現(xiàn)一個學(xué)生到另一個學(xué)生的跳躍;AX:存放3門課相加后的成績;CX:CL:3門課成績CX:4個學(xué)生LOPA2PROCNEARMOVMOVSI,0CH,4NEXT2:MOVAX,0MOVBX,0MOVCL,3PUSHAXMO
16、VAX,SIMULAX,14MOVSI,AXPOPAXNEXT1:MOVDL,BUFBX+SI+10ADDAL,DLINCBXDECCLJNZNEXT1MOVCL,3IDIVCLMOVBUFSI+13,ALINCSDECCHJNZNEXT2RET;三門課成績相加LOPA2ENDPCODEENDSENDSTART11匯編語言程序設(shè)計實驗報告3.1.4實驗步驟1 .在TD中跟蹤到子程序內(nèi)部我使用的方法是當(dāng)程序運行至子程序入口時,直接按f7進入到子程序。如要進入子程序1:當(dāng)程序運行至如圖入口時,按下f7如圖,按下f7后進入子程序1執(zhí)行語句MOVSI,02 .公共符號的定義和外部符號的引用,若符號名不
17、一致或類型不一致,會發(fā)生報錯,當(dāng)我程序中的公共符號和同組同學(xué)的外部符號符號名不一致或類型不一致時,會發(fā)生報錯3 .如圖是第一次使用宏定義的9號調(diào)用在TD中的語句,可見宏指令的展開只是按宏定義的語句替換和展開的。說明宏調(diào)用是在匯編時展開的,而子程序是在程序執(zhí)行時由CALL指令調(diào)用的,換言之,在匯編后生成的obj文件中,子程序的定義依然存在,而宏定義卻不復(fù)存在。cs:0BFI5noucs:0008B409VT1OUah,0?cs:0000CD21int214 .為了程序的美觀,在輸出菜單時,采取多次輸出的辦法,另外在每次10號調(diào)用輸入后都輸出一個回車換行符,這樣可以使程序盡量美觀。3.1.5實驗記
18、錄(包括實驗條件、輸入/輸出、錯誤和修改等信息的記錄)1、實驗環(huán)境條件:P31GHz,256M內(nèi)存;WINDOWS2000命令行窗口;EDIT.EXE2.0;MASM.EXE6.0;LINK.EXE5.2;TD.EXE5.0。2、一開始10號功能調(diào)用后面忘了加上回車換行,導(dǎo)致輸入的總是會被不斷覆蓋,也就不能正12匯編語言程序設(shè)計實驗報告常顯示,在后面加上MOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21H就能夠正常顯示了3、當(dāng)每輸入下一個學(xué)生時要在BUF段中+14,一開始想當(dāng)然直接讓SI+,然后14*SI+BX+10尋址,在TD中觀察發(fā)現(xiàn)輸入的成績每次都只有一個,后來仔細(xì)檢查代碼,發(fā)現(xiàn)問題。后來想用一個寄存器從0加到4時發(fā)現(xiàn)寄存器不夠了(Oo。)于是就定義了一個字節(jié)的N,讓N從1加到4,先PUSHAX,N*14->AX,再(AX)->SI,POPAX就能實現(xiàn)該功能4、尋址方式也出了一點小問題,不過很快就解決了,這里就不一一列出了。最后運行的結(jié)果如下(由于算法:輸入3個字符的ascll碼減去30再乘相應(yīng)的位數(shù),輸入成績都要輸3位)在TD數(shù)據(jù)段中觀察實驗結(jié)果與輸入的姓名成績、計算的平均成績相符合再輸入2實現(xiàn)計算平均成績的功能,并回到主程序顯示MENU菜單提示下一步操作Uq口口也thechoicer*iiwutnan
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 后勤聘用合同范本
- 發(fā)行書分銷合同范本
- 雙方種植土地合同范本
- 供面合同范例
- 委托擔(dān)保保證合同范本
- 公司業(yè)務(wù)合同范本
- 臺球店員工合同范本
- 保潔修理員合同范例
- 農(nóng)村場地出售合同范本
- 合同范本樣板格式
- 人教版數(shù)學(xué)五年級下冊 全冊各單元教材解析
- 給水排水管道工程質(zhì)量通病以及防治
- 偏癱臨床路徑流程
- 計算機視覺全套課件
- GB-T 9251-2022 氣瓶水壓試驗方法(高清版)
- 基于單片機的電子廣告牌設(shè)計畢業(yè)設(shè)計論文
- 中國聯(lián)通IMS接口規(guī)范 第三分冊:Sh接口 V1.0
- 判斷抽樣(課堂PPT)
- 簡明疼痛評估量表(BPI)
- 通用橫版企業(yè)報價單模板
- 中國移動B-BOSS系統(tǒng)總體結(jié)構(gòu)
評論
0/150
提交評論