




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學 號: 課 程 設 計課程名稱 匯編語言程序設計設計題目求fibonacci數列前n項學 院計算機科學與技術專 業(yè)計算機科學與技術班 級姓 名指導教師楊榮英2011年12月30日課程設計任務書學生姓名: 專業(yè)班級: 指導教師: 楊榮英 工作單位: 計算機科學與技術學院 題目: 求fibonacci數列前n項初始條件:理論:完成了匯編語言程序設計課程,對微機系統(tǒng)結構和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設計的基本方法和技巧。實踐:完成了匯編語言程序設計的4個實驗,熟悉了匯編語言程序的設計環(huán)境并掌握了匯編語言程序的調試方法。要求完成的主要任務: (包括課程設計工作量及其技術要求
2、,以及說明書撰寫等具體要求)進一步理解和掌握較復雜程序的設計方法,掌握子程序結構的設計和友好用戶界面的設計。具體的設計任務及要求:1) 輸入要求輸出的項數n;2) 在屏幕上輸出fibonacci數列的前n項;3) 程序采用子程序結構,結構清晰;4) 友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。在完成設計任務后,按要求撰寫課程設計說明書;對課程設計說明書的具體要求請見課程設計指導書。閱讀資料:1)ibmpc匯編語言程序設計實驗教程實驗2.42)ibmpc匯編語言程序設計(第2版)例6.11時間安排:設計安排一周:周1、周2:完成系統(tǒng)分析及設計。周3、周4:完成程序調試,和驗收。周5:撰寫
3、課程設計報告。指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日1. 設計題目求fibonacci數列前n項2. 設計要求2.1設計說明本程序主要是實現計算fibonacci數列的前n項并且顯示在屏幕上,因此在程序運行中,首先要把fibonacci數列的前n項計算出來,這里的n有用戶輸入,計算機得到n值后會計算出數列,然后后程序會把得到的前n項顯示在屏幕上。2.2功能要求首先,我們需要輸入要求的fibonacci數列的項數。然后,系統(tǒng)把fibonacci數列前n項顯示在屏幕上。本程序采用數組來存儲fibonacci數列前n項。2.3原始條件及參數2.2.1首先,我是先輸入要求的f
4、ibonacci數列的項數,如下圖:1,1,2,3,5,8是輸入6后求得的fibonacci數列的前6項,最后通過屏幕打印出來。2.2.2參數在這個程序中,主要一個數組存放數據。3. 設計思路3.1設計方案及基本流程3.1.1在開始編程時,對于fibonacci數列的實現,我們想到了數組,即用數組來存放數列,數組的項長短是由輸入的n決定的,而不是事前計算好很長的項,然后由n的大小來打印。3.1.2其次,在計算fibonacci數列的項的時候要考慮周到,當輸入1或2的時候計算機也要能正確的顯示。3.1.3計算好數列的前n項后要正確的顯示在屏幕上,這里用逗號把各項分開,看的時候能夠比較明了和清楚。
5、3.2程序框圖建立fibonacci數列的前n項并且打印到屏幕上。開始保護堆棧,設置段寄存器為當前值輸出提示文字并輸入n值n>2?屏幕打印數組值結束yn調用計算fibonacci數列子程序。利用公式f(n)=f(n-1)+f(n-2),計算的結果直接存入數據段的數組屏幕打印數組的前n 項置數組前2項為(1,1)4. 程序清單以下為完整的源程序。datareasegmentstring1db'please input the number: ',13,10,'$'string2db13,10,'here is:',13,10,'$
6、39;bufferdb4db?db4 dup(?)numberdb?mulfactdb1feidb254 dup(?)datareaendscodeareasegmentmainprocfarassumecs:codearea,ds:datareastart:pushdssubax,axpushaxmovax,datareamovds,axleadx,string1movah,09int21hleadx,buffermovah,0ahint21hcallconvertnummoval,numberleadx,string2movah,09int21hcallinit;moval,buffer+
7、1;andax,00ffh;movsi,axcalloutputfei;movfeisi+1,24h;leadx,fei;movah,09;int21hretmainendp;=convertnum proc nearpushbxmov si,buffer1and si,00ffhmov cx,simov mulfact,1mov bx,0next:mov al,buffersi+1;cmp al,'0'js exit;cmp al,'9'ja exitsub al,30hand ax,000fhmov dl,mulfactmul dladd bx,axmov
8、al,mulfactmov dl,10mul dlmov mulfact,axdec siloop nextmov number,blpopbxretconvertnumendp;=initprocnearmovcx,alandcx,00ffhandax,00ffhmovsi,1;andsi,00ffhmovfei+1,1movfei+2,1loop1:subcx,2cmpsi,cxjnbexitmovbl,0addbl,feisiaddbl,feisi+1movfeisi+2,blincsijmploop1exit:retinitendp;=outputfeiprocnearmovcl,nu
9、mberandcx,00ffhmovsi,0loop4:cmpsi,cxjzbreakmovax,feisi+1andax,00ffhcalloutputincsijmploop4break:retoutputfeiendp;=outputprocnearpushaxpushbxpushcxpushdxcmpax,100jlg2movbl,100divbladdal,30hmovbh,ahmovdl,almovah,2int21hmoval,bhcbwg2:cmpax,10jlg4movbl,10divblmovbh,ahaddal,30hmovdl,almovah,2int21hmoval,
10、bhcbwg4:addal,30hmovdl,almovah,2int21hmovdl,20hmovah,2int21hpopdxpopcxpopbxpopaxretoutputendpcodeareaendsendstart5. 運行結果運行的結果為fibonacci數列的前n項顯示在屏幕上,用逗號把各項分開。5. 1當輸入時,返回的結果。5. 2當輸入2時,返回的結果5. 3當輸入3時,返回的結果。5. 4當輸入12時,返回的結果。6. 心得體會6.1 自我評價經過幾天的努力工作,一個功能簡單的小系統(tǒng)終于完成了。雖然不是很復雜,但是仍然有很大的成就感。這個小系統(tǒng)基本上完成了課程設計的要求,
11、能進行fibonacci數列前n項的計算和顯示,但也有一些局限,比如說界面并不是很好看,今后在這方面還需要做相應的改進。這是我個人對系統(tǒng)做的一些簡單評價,也許還有更多的地方值得改進,希望老師給予指出,今后會改進的更好。6.2 心得體會及開發(fā)感悟終于完成一個完整的小程序,我感到十分高興。感悟很多。在程序的制作過程中,遇到了很多意想不到的困難,自己一個人解決起來有很大的困難,于是也少不了同學的幫助,深刻體會到開發(fā)程序不只是一兩個人就能很好的完成的,要大家互相幫助,共同探討問題,才能更好的解決困難。對于本程序(求fibonacci數列前n項),表面上看去似乎很簡單,但接下來遇到的困難就讓我不這么認為了。首先數列的保存我想到了數列,可是本數列的前兩項都是1,怎么樣是的輸入1或2時能夠正確的顯示呢?這個問題困饒了我很久,后來問了一位同學才得到了比較好的解決辦法。在輸入n值的時候首先判斷它和2的大小關系,如果大于2,則定義數列前兩項為1,且執(zhí)行f(n)=f(n-1)+f(n-2);如果n等于或小于2,則直接打印第一項或前兩項。最后,我覺得接到一個任務不能立刻就下手編程序,而是應該先規(guī)劃一下程序,仔細列出框架和一些關鍵細節(jié)的實現方法,然后在編程,盲目的編寫程序只會讓以后的工作很難展開,這些經驗必將對以后的學習起到重要的作用。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用設備運輸合同范本
- 叉車臨時用工合同范本
- 和店面解約合同范本
- 公寓酒水配送合同范本
- 吊裝車租用合同范本
- 供銷商品合同范本
- 五星級酒店安保合同范例
- 廚房家電預售合同范本
- 書購貨合同范本
- 發(fā)電玻璃租賃合同范本
- 2023年北京市中學生數學競賽高中一年級初賽試題解答
- GB/T 3452.5-2022液壓氣動用O形橡膠密封圈第5部分:彈性體材料規(guī)范
- GB/T 25844-2010工業(yè)用現場分析小屋成套系統(tǒng)
- GB/T 12785-2002潛水電泵試驗方法
- 營養(yǎng)基因組學課件
- 直腸惡性腫瘤護理查房實用版課件
- 《口腔內科護理》教學課件
- 幼兒園教師如何寫論文教學課件
- 動物性食品的食品安全課件
- 2021年常見降糖藥物一覽表
- 考研考博-英語-華東理工大學考試押題卷含答案詳解
評論
0/150
提交評論