九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

[詳細講解]匯編語言 完全數(shù) 課程設計報告書

上傳人:r****d 文檔編號:135305309 上傳時間:2022-08-15 格式:DOC 頁數(shù):12 大?。?8KB
收藏 版權申訴 舉報 下載
[詳細講解]匯編語言 完全數(shù) 課程設計報告書_第1頁
第1頁 / 共12頁
[詳細講解]匯編語言 完全數(shù) 課程設計報告書_第2頁
第2頁 / 共12頁
[詳細講解]匯編語言 完全數(shù) 課程設計報告書_第3頁
第3頁 / 共12頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《[詳細講解]匯編語言 完全數(shù) 課程設計報告書》由會員分享,可在線閱讀,更多相關《[詳細講解]匯編語言 完全數(shù) 課程設計報告書(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、課程設計任務書學生姓名 王 麗 專業(yè)班級 軟件0302班 指導老師 陳天祥 工作單位 武漢理工大學 題 目:打印完全數(shù)一個數(shù),若約數(shù)(不含它本身)的和恰好等于它本身就稱為完全數(shù) 初始條件:理論:學完匯編課程,掌握匯編語言的使用。實踐:計算機實驗室提供計算機及軟件環(huán)境。如果自己有計算機可以在其上進行設計。要求完成的主要任務:1. 本次課程設計著重于理論設計,同時培養(yǎng)動手能力。要求運用自己所學知識進行設計實現(xiàn),體現(xiàn)自己的知識掌握水平。所作設計需進行論證,一方面是從理論上進行推理驗證,另一方面是實驗論證。2. 閱讀有關的參考資料,熟悉開發(fā)工具,運用軟件工程設計方法,進行系統(tǒng)總體分析與設計, 規(guī)劃出系

2、統(tǒng)的總體機構,每個功能的分布情況,以形成系統(tǒng)的框架設計。3. 程序用匯編語言開發(fā)完成, 嚴禁抄襲(發(fā)現(xiàn)后抄襲者和被抄襲者一律不及格)。4.完成整個程序的設計及調試、測試工作后,應提供相應的課程設計報告書及程序總體分析與算法設計和源程序代碼等。5課程設計報告書內容:(1) 設計題目 (2) 設計要求 (3) 設計思路及程序清單 (5) 運行結果 (6) 心得體會6要求按格式規(guī)范撰寫課程設計報告文檔, 文檔中包括系統(tǒng)結構圖,代碼設計說明以及各功能模塊程序的設計說明和各功能選項的使用要求及條件,各輸入輸出數(shù)據(jù)的約束條件及代碼的使用等。7課程設計報告格式應盡可能規(guī)范,易讀易懂,說明問題;學生自己排版、

3、打印全部課程設計報告書內容;學生要按指定時間上交課程設計報告書。時間安排:1、12月26日至12月27日 接受課程設計, 閱讀有關的參考資料,熟悉開發(fā)工具,運用軟件工程設計方法,對設計題目進行總體分析與算法設計。.2、12月28日至12月29日 編寫程序, 到實驗室進行程序調試。3、12月30日至12月31日 繼續(xù)到實驗室進行程序調試、完善。撰寫課程設計報告書,到實驗室進行編緝排版, 交課程設計報告書。指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日1. 設計題目 打印完全數(shù)2. 設計要求用匯編程序MASM,編寫一個程序,打印10000以內的完全數(shù)。若一個數(shù)的約數(shù)(不含它本身)

4、的和恰好等于它本身,則該數(shù)是完全數(shù)。用循環(huán)除法(除數(shù)從2到被檢測數(shù))循環(huán)判斷210000的數(shù)是否是完全數(shù)。根據(jù)題目,運用所學的匯編知識和程序設計知識,完善設計思路,盡量使程序完整,具有模塊化,易懂;熟悉匯編程序環(huán)境,掌握匯編命令和匯編語言,增強動手能力;增強獨立解決問題的能力。3. 設計思路3.1原始條件及參數(shù):被除數(shù)以雙字為單位,高16位保存在DX中,低16位保存在AX中,初始值為2;檢測范圍用n 來限定除數(shù)以字位單位,用count表示,保存在BX中,初始值為2約數(shù)和保存在CX中,初始值為13.2算法設計及流程圖:3.2.1 主程序算法及流程圖:初始條件:設i為被除數(shù),j為除數(shù),t為余數(shù),c

5、為約數(shù)和Int i=2 ; /被除數(shù)從2開始循環(huán)體:While (i=10000) /求10000以內的完全數(shù) int j=2 , c=1; /除數(shù)從2開始,約數(shù)和初始為1While ( jn1cx , 2countnax , 0dxax/bxdx, bx=ax Print i cx=axdx=0cx+bxcx ,Inc countNNN結束Inc n n =100003.2.2 print子程序算法及流程圖初始條件:被除數(shù)保存在AX中,將除數(shù)設置為10 將BX,CX壓入堆棧,保護現(xiàn)場循 環(huán) 體:被除數(shù)除以10, 將余數(shù)壓入堆棧,堆棧中數(shù)目加1 繼續(xù)除以10,直到被除數(shù)不可以再除 彈出堆棧中的

6、內容退 出:Exit 初始值:nax將bx,cx壓入堆棧,保存數(shù)據(jù)0ahcx,0dx0dxdiv cx將dx 壓入堆棧bx +1bxcmp ax,0ax=0dx以ASCII碼形式輸出結束NY4. 程序清單data segment n dw 10000 ;求10000以內的完數(shù) count dw ? ;作為除數(shù)data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov n,2 ;從2開始判斷是否視完數(shù)l1: mov count,2 ;cx保留約數(shù)和,初始值為1 mov cx,1 ;bx作為除數(shù),從2開始

7、l2: mov ax,n push ax ;保存現(xiàn)場,保留ax的值 mov dx,0 ;被除數(shù)的高16位置0 div bx cmp dx,0 jnz l3 ;dx保存余數(shù),若余數(shù)不為0,則轉向l3,繼續(xù)除下一個除數(shù) add cx,bx ;若余數(shù)為0,則把除數(shù)相加l3: inc count ;除數(shù)加1 pop ax ;ax出棧 cmp ax,count jnz l2 ;比較被除數(shù)和除數(shù),若相等,則轉向l2, cmp n,cx jnz l4 ;比較約數(shù)和與被除數(shù)是否相等,若相等,轉向l4,測試下一個數(shù) mov dx,0 mov ax,n call print ;調用子程序,打印完數(shù),每顯示一個完數(shù)

8、,緊跟一個空格 mov dl, mov ah,02h int 21hl4: inc n ;測試210000的完數(shù)cmp n,10000 jnz l1 mov ah,4ch int 21h print proc ;打印子程序push cx ;保護現(xiàn)場 push bx mov cx,0ah ;cx作除數(shù),以10為基數(shù) mov bx,0 ;bx作計數(shù)器,計算壓入堆棧的完數(shù)個數(shù) print_l1: mov dx,0 div cx push dx ;將余數(shù)壓入堆棧保留 inc bx ;壓入數(shù)目增加1 cmp ax,0 jnz print_l1 ;反復調用print_11,直到被除數(shù)不能再除 print_

9、l2: pop dx ;循環(huán)彈出余數(shù) add dl,30h ;余數(shù)以ASCII碼的表示 mov ah,02h int 21h ;輸出調用 dec bx ;堆棧中數(shù)的個數(shù)減1 jnz print_l2 ;彈出堆棧中所有的數(shù) pop bx ;還原現(xiàn)場 pop cx retprint endp ;子程序結束code ends end start ;程序結束 5. 運行結果該程序是:查找10000以內的完全數(shù),文件名為wanshu.asm,執(zhí)行結果如下:6. 心得體會在程序設計的過程中,我體會到了一些程序設計的基本方法和設計技巧,這些有助于拓寬我的解題思路,一定程度上幫助我解決設計上存在的問題。在此過

10、程中,除數(shù),被除數(shù),約數(shù)和的初始值的定義至關重要。由于本程序要反復除以除數(shù),并把余數(shù)與0比較,把約數(shù)進行相加,因此應該盡量控制程序作除法運算的次數(shù),達到最快的運行速度。在此程序中,我把除數(shù)的初始值設置為2,約數(shù)和的初始值設置為1,避免了被除數(shù)屢次除以1以及約數(shù)屢次從1開始相加。每測試一個數(shù)字,除數(shù)都從2開始,循環(huán)除,直至達到被除數(shù)本身(根據(jù)題目要求,除數(shù)達到”被除數(shù)/2”即可滿足循環(huán)條件)。這影響了程序的運行速度,是這個程序的一個缺陷。編寫程序要注意格式的規(guī)范性。在此過程中,我的程序出現(xiàn)了前后不對應的情況,系統(tǒng)提示程序沒有結束,經(jīng)過檢查才發(fā)現(xiàn),最后缺少一個結束語句。匯編的每一段都應該有開始和結

11、束的標志;同時,使用匯編的語句時要注意簡潔和清晰,當一種操作可以用不同的語句表示時(如loop 相當于dec 和jnz兩個語句的組合),要比較不同代碼的優(yōu)缺點,被選擇使用的語句應該能表現(xiàn)程序的結構性。由于要求打印10000以內的完數(shù),理論上除數(shù)至少應該到達5000,用8位二進制表示此數(shù)是遠遠不夠的。但如果除數(shù)用16位表示,被除數(shù)將占用32位。受到機器及運行環(huán)境的限制,無法使用386以上機型中的EBX,EAX,ECX,EDX等寄存器,因此,我采用DX,AX分別保存被除數(shù)的高16位和低16位,對于除法運算的結果,使用系統(tǒng)默認處理。商保存在AX中,余數(shù)保存在DX中;同時,利用累加器CX的特殊功能,用

12、其保存約數(shù)和,以方便計算。在編寫程序的過程中,我明顯的感覺到寄存器不夠用。因此,我利用堆棧保護現(xiàn)場,保存相關的數(shù)據(jù)。雖然入棧,出棧的操作頻繁,可能會一定程度上延緩了程序的執(zhí)行速度,但它解決了寄存器數(shù)量上的限制。另外,由于除法計算的余數(shù)和商分別保存到DX和AX中,而AX在后續(xù)的程序中要使用到,因此要著重注意對AX的數(shù)據(jù)保存。AX既要用來存放被除數(shù),也需要存放除法所得的商,因此,我設置了變量n,通過”mov ax, n ” 語句可以把待檢測的數(shù)在需要時臨時送入AX,沖掉AX內原來的值。另外,我還設置了變量count,用寄存器BX保存除數(shù),利用count的自增來實現(xiàn)除數(shù)的改變,通過 ” mov bx

13、, count “語句把除數(shù)送入BX。變量與堆棧聯(lián)合使用,可以方便的改變和保存所需要的數(shù)據(jù),使程序簡單易懂。在程序編譯的過程中,遇到了一些令我措手不及的錯誤.由于初次遇到此類問題,我花費了大量的時間閱讀代碼,瀏覽程序,并查找課本和資料,找出指令的差別尤其是中斷指令部分的差別.6.2.1 結束命令錯誤 最初的編譯,遇到該問題,仔細檢查源代碼,才發(fā)現(xiàn)l4段的退出部分出現(xiàn)問題.我將顯示命令 ” mov ah, 09h int 21h ” 誤當作結束命令.改為 ” mov ah, 4ch int 21h “ 后,順利結束了該程序,也解決了運行時出現(xiàn)的該問題。6.2.2 除數(shù)溢出錯誤除數(shù)溢出問題是本次課

14、程設計中我遇到的最困難的問題.開始時我把除數(shù)定義在2“被除數(shù)/2”方案一:“被除數(shù)/2”用右移一位AX實現(xiàn)當AX中為1時,右移一位則AX為0,除數(shù)為0 , 出現(xiàn)邏輯錯誤;當AX為奇數(shù)時,右移一位則結果不精確,運行結果同樣出現(xiàn)錯誤.方案二:“被除數(shù)/2”用除2的除法實現(xiàn)由于程序由兩層循環(huán)嵌套組成,又調用了一個輸出完全數(shù)的子程序,寄存器在各段中使用頻繁,數(shù)據(jù)的保存和恢復頻繁,容易破壞程序的條理性.而增加一次除法大大增加了寄存器的負荷,因此該方案也不是一種好的方案.于是,我把除數(shù)定義在2被除數(shù)的范圍內,解決了除數(shù)溢出的問題和寄存器的限制,但同時也給程序的計算增加了“被除數(shù)/2”的復雜度。 我設計和編

15、寫的程序完成了題目的要求,可以查找出任意正數(shù)范圍內的完全數(shù),但它存在兩個不足:第一: 現(xiàn)在的程序,如果要修改完全數(shù)的查找范圍,就必須在源程序中改動,重新定義n的值.但如果在程序之初給出提示,讓用戶輸入所要查找的范圍,并把該數(shù)賦值給n,從而通過n重新定義被除數(shù)就更完善了.第二: 考慮到寄存器數(shù)量上的限制和程序的可讀性和條理性的要求,我擴大了除數(shù)的范圍,使除數(shù)不再溢出.但這在一定程度上延遲了程序的執(zhí)行速度.如果能找出協(xié)調這二者的方法,程序就更完善了.在本次的課程設計過程中,我最大的收獲就是學到了不少新的知識,同時可以把自己學到的匯編語言的知識和以前學的程序設計的知識應用到實踐中, 熟悉了開發(fā)環(huán)境

16、,提高了自己的動手能力, 并順利地完成了此次的任務.課程設計讓我從中得到莫大的信心,鼓勵,快樂和成就感.編程過程中,我遇到了一些困難.這時,我通過上網(wǎng)查詢和去圖書館查找資料解決問題,有效地利用網(wǎng)絡資源和學校圖書資源,同時也了解了更多的知識獲取的途徑,擴大了自己的知識面.遇到問題時,多數(shù)情況下我是自己獨立解決的,這鍛煉我獨立思考問題和獨立解決問題的能力;如果自己通過查找資料無法解決,我就向老師和同學尋求幫助,不但學到了新的,更完善解決問題的方法,還學會了與人溝通,與人交流.我認識到有時候,其他人的一點提示,就會令自己茅塞頓開,得到靈感.因此,在作課程設計時,不要吝惜自己的思路和想法,盡可能多的與

17、大家的交流.許多時候,我們都能從中得到進步,得到提示,甚至得到更好的方案.同時,我也發(fā)現(xiàn)了自己的一些問題.例如,編寫程序不夠規(guī)范,總是在出現(xiàn)問題時,才意識到格式和編程習慣的重要性,然后手忙腳亂的去修改,給自己的自信和成就感帶來很大的挑戰(zhàn).另外,為了圖方便,我把在實驗室和寢室修改過的程序直接運行,結果卻不能導入MASM環(huán)境,不能出現(xiàn)編譯,連接和運行的結果,經(jīng)過同學的提示,我才知道在進行程序的編譯前,要將程序在EDIT下打開.由此,我意識到,許多工作都像這樣,要一步一步的來,不能耍小聰明,圖省事.本次課程設計,對我?guī)椭艽?它提高了我的理論知識和和實踐動手能力;提高了我獨立思考問題和解決問題的能力;同時,增強了我與人探討問題,交流思路的意識;此外,它還讓我發(fā)現(xiàn)了自己在編程習慣上的許多不足,對以后的編寫程序和設計解題思路有很大的啟發(fā).在以后的學習和實踐中,我會不斷督促自己,不斷提高,不斷進步.

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!