求Fibonacci數(shù)程序設(shè)計(jì)_第1頁(yè)
求Fibonacci數(shù)程序設(shè)計(jì)_第2頁(yè)
求Fibonacci數(shù)程序設(shè)計(jì)_第3頁(yè)
求Fibonacci數(shù)程序設(shè)計(jì)_第4頁(yè)
求Fibonacci數(shù)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-作者xxxx-日期xxxx求Fibonacci數(shù)程序設(shè)計(jì)【精品文檔】學(xué) 號(hào)課 程 設(shè) 計(jì)題 目求Fibonacci數(shù)程序設(shè)計(jì)學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專業(yè)班級(jí)軟件工程0801班姓 名李翊華指導(dǎo)教師王 云 華2011年1月6日目錄1. 課程設(shè)計(jì)任務(wù)書12. 設(shè)計(jì)目的、內(nèi)容、時(shí)間2.2.2.23. 設(shè)計(jì)環(huán)境與工具24. 程序設(shè)計(jì)算法說(shuō)明25. 程序框圖36. 程序代碼47. 運(yùn)行結(jié)果記錄88. 設(shè)計(jì)結(jié)果測(cè)試、分析.119. 參考文獻(xiàn).1110. 評(píng)分表.12課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 李翊華 專業(yè)班級(jí): 軟件0801班 指導(dǎo)教師: 王云華 工作單位: 計(jì)算機(jī)學(xué)院 題 目: 求Fibonacci數(shù)程

2、序設(shè)計(jì) 初始條件:DOS操作系統(tǒng)。編輯,匯編,連接,調(diào)試工具:edit、masm、link、debug要求完成的主要任務(wù): 程序接受用戶鍵入的n值(1100),根據(jù)給定的n值(注意處理非法n值),計(jì)算Fibonacci數(shù)。由鍵盤輸入控制值,按“Q”鍵退出。課程設(shè)計(jì)報(bào)告書寫要求:1. 封面(使用教務(wù)處統(tǒng)一格式)2. 報(bào)告書目錄3. 課程設(shè)計(jì)任務(wù)書4. 設(shè)計(jì)目的、設(shè)計(jì)內(nèi)容、完成時(shí)間5. 設(shè)計(jì)環(huán)境與工具6. 程序設(shè)計(jì)算法說(shuō)明、框圖 7. 運(yùn)行結(jié)果記錄8. 設(shè)計(jì)結(jié)果測(cè)試、分析9. 參考文獻(xiàn)10. 其他11. 評(píng)分表12. 封底時(shí)間安排:課程設(shè)計(jì)時(shí)間為18周一周。指導(dǎo)教師簽名: 2011年 1 月 6日

3、系主任(或責(zé)任教師)簽名: 2011 年 1月 6日2. 設(shè)計(jì)目的、內(nèi)容、時(shí)間安排2.1設(shè)計(jì)目的:通過(guò)該課程設(shè)計(jì),熟悉計(jì)算機(jī)體系結(jié)構(gòu),DOS的操作系統(tǒng)的功能調(diào)用,能較為熟練的運(yùn)用匯編語(yǔ)言進(jìn)行程序的編寫。進(jìn)一步了解匯編語(yǔ)言控制計(jì)算機(jī)硬件的方法,提高應(yīng)用匯編語(yǔ)言編寫程序的能力。2.2設(shè)計(jì)內(nèi)容: 程序接受用戶鍵入的n值(1100),根據(jù)給定的n值(注意處理非法n值),計(jì)算Fibonacci數(shù)。由鍵盤輸入控制值,按“Q”鍵退出。2.3時(shí)間安排: 2011年1月1日7日 (第18周)地點(diǎn):鑒主10樓軟件實(shí)驗(yàn)室。3. 設(shè)計(jì)環(huán)境與工具DOS操作系統(tǒng)、文本編輯器、LINK.EXE、4. 程序設(shè)計(jì)算法說(shuō)明程序要

4、求計(jì)算Fibonacci數(shù)列的前n項(xiàng),并把第n項(xiàng)的結(jié)果顯示在屏幕上,因此在程序運(yùn)算過(guò)程中,主要的部分就是Fibonacci數(shù)列的前n項(xiàng)的值計(jì)算出來(lái),并且以十進(jìn)制的方式將第n項(xiàng)的值顯示在屏幕上。計(jì)算前n項(xiàng)的值輸入n的值后,先判斷是否是數(shù)值。如果是Q或q,則顯示已退出提示,退出程序。如果是其他字符,則顯示輸入錯(cuò)誤的信息,提示重新輸入。如果是數(shù)值,則進(jìn)入后面的計(jì)算步驟。將輸入的數(shù)值存入cx中,如果數(shù)值小于等于2,則直接輸出結(jié)果。否則,就以cx-2作為外循環(huán),把兩個(gè)數(shù)相加,將尾數(shù)與高位開(kāi)儲(chǔ)存,直至循環(huán)結(jié)束。4.2將轉(zhuǎn)化成十進(jìn)制在存儲(chǔ)時(shí),是將相加后的結(jié)果多次除以10后 ,余數(shù)和商數(shù)先后進(jìn)棧存儲(chǔ)。在輸出時(shí)

5、,要求以十進(jìn)制輸出。則先判斷高位是否為0,為0則出棧但不輸出,從下一位開(kāi)始依次輸出,并顯示。顯示結(jié)果就是要求的第n項(xiàng)的十進(jìn)制結(jié)果。5. 設(shè)計(jì)框圖主流程圖開(kāi)始初始化寄存器輸入數(shù)據(jù)將結(jié)果顯示輸出將數(shù)放到cx中顯示已退出提示提示輸入錯(cuò)誤al=Q?al=q?al=其他字母或符號(hào)?cx2YYNNYN外循環(huán)YN直接輸出結(jié)果結(jié)束外循環(huán)流程圖外循環(huán)si=0dl=xsi, dh=resultsi,內(nèi)循環(huán)次數(shù)=25resultsi=dh+dlxsi=dhdl>10YNNresultsi=resultsi-10d,si+1,xsi+1返回主程序內(nèi)循環(huán)完成?外循環(huán)完成?YYN6. 程序代碼datas segme

6、nt;此處輸入數(shù)據(jù)段代碼 result db 1d,24 dup(0) x db 1d,24 dup(0) mess1 db 0dh,0ah,'Please choose a data from 1 to 100:','$' mess2 db 0dh,0ah,'The result is:','$' mess3 db 0dh,0ah,'Press Q/q to exit.','$' flag dw messerror db 0dh,0ah,'Input error,please re-ent

7、er.','$' quit db 0dh,0ah,'You have typed Q/q to exit.','$' datas ends stacks segment ;此處輸入堆棧段代碼 dw 128 dup(?) stacks endscodes segment assume cs:codes,ds:datas,ss:stacks,es:datasstart: mov ax,datas ;ds寄存器設(shè)置到當(dāng)前的數(shù)據(jù)段 mov ds,ax mov es,ax mov ax,stacks ;ss寄存器設(shè)置到當(dāng)前堆棧段 mov ss,ax

8、 ;此處輸入代碼段代碼 reinput: push ax ;進(jìn)棧 push bx push cx push dx push si push di mov ah,09 ;顯示操作符 lea dx,mess3 int 21h lea dx,mess1 int 21h ;輸入規(guī)模n,并且轉(zhuǎn)換為十進(jìn)制數(shù) mov bx,0 input: mov ah,01 int 21h cmp al,'q' ;判斷輸入是否為q jz end_ ;跳轉(zhuǎn)到end_ cmp al,'Q' jz end_ cmp al,0dh jz cont cmp al,'0' ;輸入是否為

9、數(shù)字 jb error ;跳轉(zhuǎn)到error cmp al,':' jnb error sub al,30h cbw xchg ax,bx mov cx,10d mul cx xchg ax,bx add bx,ax jmp input error: ;提示出錯(cuò)信息 mov ah,09 lea dx,messerror int 21h jmp reinput ;跳轉(zhuǎn)回開(kāi)始狀態(tài) end_: ;提示已退出程序信息 mov ah,09 lea dx,quit int 21h mov ah,4ch int 21h ret cont: mov cx,bx ;輸入的數(shù)放到cx中 cmp cx

10、,2 jle print ;如果小于等于2,就直接輸出結(jié)果 sub cx,2 ;否則以cx-2作為外循環(huán),把兩個(gè)數(shù)相加 next: mov di,cx mov cx,25 mov si,0 adde: mov dl,xsi mov dh,resultsi add dl,dh ;將兩個(gè)存儲(chǔ)單元的數(shù)中進(jìn)行相加 mov resultsi,dl mov xsi,dh ;將上次的相加結(jié)果放入X中 cmp dl,10d jae great ;如果大于10D,則轉(zhuǎn)移 inc si jmp goon great: sub resultsi,10d ;將尾數(shù)存入本單元 inc si add xsi,1 ;高位加

11、1 goon: loop adde mov cx,di loop next print: lea dx,mess2 ;輸出顯示提示 mov ah,09 int 21h mov cx,25 mov si,24display1: cmp flag,0 ;標(biāo)志位判斷輸出的高位是否為0 jnz n2 cmp resultsi,0 jz n3 add flag,1 n2: mov dl,resultsi ;以十進(jìn)制輸出 add dl,30h mov ah,02h int 21h n3: dec si loop display1 mov flag,0 mov result0,1d mov x0,1d mo

12、v si,1 mov cx,24 initial: mov resultsi,0 mov xsi,0 add si,1 loop initial mov si,0 pop di ;出棧 pop si pop dx pop cx pop bx pop ax jmp reinput ;跳轉(zhuǎn)回開(kāi)始狀態(tài),進(jìn)行下一次計(jì)算 mov ah,4ch int 21h codes ends end start 7. 運(yùn)行結(jié)果記錄當(dāng)程序初始化時(shí),截圖如下:當(dāng)輸入1時(shí),截圖如下:當(dāng)輸入8時(shí),截圖如下:當(dāng)輸入20時(shí),截圖如下:當(dāng)輸入89時(shí),截圖如下:當(dāng)輸入其他字符(若輸入負(fù)數(shù),則要輸入符號(hào),所以可將負(fù)數(shù)歸結(jié)于其他符號(hào)一

13、類)時(shí):當(dāng)輸入Q/q鍵時(shí),截圖如下:8. 設(shè)計(jì)結(jié)果測(cè)試及分析在計(jì)算Fibonacci數(shù)列時(shí)需要循環(huán)相加,但首先要保證n的值是大于2的。在n的值為1或2的時(shí)候,f(n)=1。所以在進(jìn)行循環(huán)之前要先判斷n是否為1或2,將這兩種情況排除后才能利用公式f(n)=f(n-1)+f(n-2)進(jìn)行累加。這是在編寫這個(gè)程序中需要注意的很重要的一部分。經(jīng)過(guò)抽其中幾項(xiàng),以及Q/q鍵,其他字符的測(cè)試,本程序均能達(dá)到實(shí)驗(yàn)要求,得出正確的答案。經(jīng)過(guò)此次的課程設(shè)計(jì),我也學(xué)習(xí)到了匯編程序的知識(shí)。首先,在程序的制作過(guò)程中,遇到了很多意想不到的困難,自己一個(gè)人解決起來(lái)有難度,于是也少不了同學(xué)的幫助,深刻體會(huì)到開(kāi)發(fā)程序不只是一兩個(gè)人就能很好的完成的,要大家互相幫助,共同探討問(wèn)題,才能更好的解決困難。其次,編程過(guò)程中遇到了很多沒(méi)有學(xué)過(guò)但需要用到的內(nèi)容,怎樣將其變成自己掌握的內(nèi)容就很重要了,對(duì)知識(shí)的掌握應(yīng)該做到融會(huì)貫通。最后,我覺(jué)得接到一個(gè)任務(wù)不能立刻就下手編程序,應(yīng)該先理清楚思路,列出大概的框架,在需要注意的細(xì)節(jié)處做好標(biāo)記,寫出應(yīng)注意的問(wèn)題;然后再編程。多翻看書籍,盡量簡(jiǎn)練的句子寫出來(lái)。盲目的編寫程序只會(huì)讓以后的工作很難展開(kāi),這些經(jīng)驗(yàn)必將對(duì)以后的學(xué)習(xí)起到重要的作用。9. 參考文獻(xiàn)IBM PC匯編語(yǔ)言程序設(shè)計(jì) 沈美明 溫冬嬋 主編 清華大

溫馨提示

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

評(píng)論

0/150

提交評(píng)論