版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、遼 寧 工 業(yè) 大 學 微機原理與匯編技術 課程設計(論文)題目: 求兩個數的公約數 院(系): 電子與信息工程學院 專業(yè)班級: 計算機科學與技術 學 號: 100401018 學生姓名: 鄭杭 指導教師: 郭延鋒 教師職稱: 副教授 起止時間: 13-07-01至13-07-05 課程設計(論文)任務及評語院(系):電子與信息工程學院 教研室:計算機科學與技術學 號100401018學生姓名鄭杭專業(yè)班級計算機101課程設計(論文)題目求2個100以內的整數的公約數和平方差課程設計(論文)任務主要設計內容:(1)輸入兩個小于 100的十進制正整數。 (2)求出這兩個數的所有
2、公約數。 (3)求出這兩個數的平方差,若是負的要輸出負號。 (4)數據的輸入和結果的輸出都要有必要的提示,且提示獨占一行。 (5)要使用到子程序。要求:1、根據題目要求,拿出總體設計方案,查找相關資料,解決設計中的技術難點,并畫出程序流程圖。針對題目的具體要求,根據前期的設計方案,實時編碼,同時編寫相應文檔。完成編碼后,根據題目要求測試程序是否合格,同時優(yōu)化程序,歸納文檔資料,按要求書寫課程設計報告。2、認真獨立完成所規(guī)定的設計內容(4000字左右),嚴禁相互抄襲;3、撰寫、打印設計說明書一份。指導教師評語及成績平時成績: 論文質量: 答 辯: 總成績 : 指導教
3、師簽字: 年 月 日目 錄第1章 前言11.1 背景11.2 基本功能要求2第2章 程序設計32.1 題目的基本內容32.2 系統(tǒng)流程圖32.3 課程設計的具體內容說明42.4 課程設計中關鍵內容的分析設計說明5第3章 課程設計總結11參考文獻12第1章 前言1.1 背景匯編語言是很多相關課程(如數據結構、操作系統(tǒng)、微機原理等)的重要基礎。其實僅從課程關系的角度討論匯編語言的重要性未免片面,概括地說,如果你想從事計算機科學方面的工作的話,匯編語言的基礎是必不可缺的。原因很簡單,我們的工作平臺、研究對象都是機器,匯編語言是人和計算機溝通的最直接的方式,它描述了機器最終所要執(zhí)行的指令序列。想深入研
4、究英國文化,不會英語行嗎?匯編語言是和具體的微處理器相聯(lián)系的,每一種微處理器的匯編語言都不一樣,只能通過一種常用的、結構簡潔的微處理器的匯編語言來進行學習,從而達到學習匯編的兩個最根本的目的:充分獲得底層編程的體驗,深刻理解機器運行程序的機理。這兩個目的達到了,其他目的也就自然而然地達到了。舉例來說,你在學習操作系統(tǒng)等課程時,對許多問題就會有很通透的理解。匯編語言是計算機能夠提供給用戶使用的最快而又最有效的語言,也是能夠利用計算機所有硬件特性并能直接控制硬件的唯一語言。因而,對程序的空間和時間的要求很高的場合,匯編語言的應用是必不可少的。至于很多需要直接控制硬件的應用場合,則更是非用匯編語言不
5、可了。隨著科學技術迅速發(fā)展,理工科大學生不僅需要掌握計算機方面的基本理論知識,而且還需要掌握基本的實驗技能及一定的科學研究能力。通過課程設計,使學生鞏固和加深微型計算機原理理論知識,通過實踐進一步加強學生獨立分析問題和解決問題的能力、綜合設計及創(chuàng)新能力的培養(yǎng),同時注意培養(yǎng)學生實事求是、嚴肅認真的科學作風和良好的實驗習慣,為今后工作打下良好的基礎。鑒于匯編語言的廣泛用途及其在當代計算機界的重要作用,本人利用學的知識,在同學門的幫助下,花費大量時間,完成了求公約數和平方差的設計。1.2 基本功能要求本程序是利用匯編語言,實現(xiàn)求兩個數的公約數和平方差,先輸入兩個數字到寄存器BX,CX,然后調用子程序
6、求出最大公約數,求出最大公約數的所有約數,求出兩個數的平方差,最后輸出結果其系統(tǒng)組成框圖如圖1.1所示。 輸入兩個100以內的數字求平方差求公約數圖1.2 系統(tǒng)總體框圖 輸出結果第2章 程序設計2.1 題目的基本內容設計題目:求兩個數的公約數具體要求:(1)輸入兩個小于 100的十進制正整數。 (2)求出這兩個數的所有公約數。 (3)求出這兩個數的平方差,若是負的要輸出負號。 (4)計算兩個數各占和的百分比,并且按照“ %”的格式輸出(小數點后保留兩位)。 (5)數據的輸入和結果的輸出都要有必要的提示,且提示獨占一行。 (6
7、)要使用到子程序。2.2 系統(tǒng)流程圖N開始輸入m和n r=m % nr=0m=n;n=r 輸出n結束Y圖2.2 系統(tǒng)流程圖2.3 課程設計的具體內容說明算法描述: 輸入m 和n; 求m除以n的余數r; 若r等于0,則n為最大公約數,算法結束; 否則執(zhí)行第步; 將n的值放在m中,將r的值放在n中; 重新執(zhí)行第步。連續(xù)整數檢測算法描述各個算法時間復雜度和運算速度:程序設計思想:先用輾轉法求出兩個數的最大公約數,再求出最大公約數的所有約數用輾轉相除法求最大公約數算法: 先用小的一個數除大的一個數, 得第一個余數; l再用第一個余數除小的一個數, 得第二個余數; 又用第二個余數除第一個余數, 得第三個
8、余數; l這樣逐次用后一個數去除前一個 余數,直到余數是0為止。那么, 最后一個除數就是所求的最大公 約數(如果最后的除數是1,那么 原來的兩個數是互質數)。2.4 課程設計中關鍵內容的分析設計說明DATA SEGMENTBUFF DB 0DH,0AH,'$'IN_MSG1 DB 'PLEASE ENTER A NUMBER:',0DH,0AH,'$'定義輸出提示IN_MSG2 DB 'PLEASE ENTER ANOTHER NUMBER:',0DH,0AH,'$'OUT_MSG DB 'THE COMM
9、ON NUMBER(S) IS(ARE):',0DH,0AH,'$'PF DB 'PING FANG CHA:',0DH,0AH,'$'LOAD DB 'PRESS ANY KEY TO CONTINUE$' X DW 0 Y DW 0 Z DW 0 C DB 0H S DB 6 DUP(0H),'$' CTRL DB 0DH,0AH,'$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX
10、,OFFSET IN_MSG1 ; 提示輸入第一個數據CALL DISPMSGCALL READSID ; 輸入第一個數據MOV BX,AX;第一個數據存到BXMOV X,BX;第一個數據存到XMOV AX,OFFSET IN_MSG2 ; 提示輸入第二個數據CALL DISPMSGCALL READSID ; 輸入第二個數據MOV CX,AX ; 保存到CXMOV Y,CX;保存到YCALL AGAIN;調用子程序MOV AX,OFFSET OUT_MSGCALL DISPMSGMOV AX,CXCALL DISPSIDAGAIN PROC;聲明子程序,求最大公約數CMP BX,CXJNL
11、FRONTXCHG BX,CXFRONT: XOR DX,DXMOV AX,BXDIV CXCMP DX,0JZ EQUALMOV BX,CXMOV CX,DXJMP FRONTEQUAL: RETAGAIN ENDPDISPMSG PROC;聲明子程序,求約數MOV DX,AXMOV AH,9INT 21HRETDISPMSG ENDPREADSID PROCMOV AH,1INT 21HMOV DH,ALSUB DH,30HMOV AH,1INT 21HCMP AL,0DH;將AL與ODH(回車鍵的ASCII碼)作比較JZ DONE1 ;相等的時候跳轉到DONE1SUB AL,30H;做減
12、法運算SHL DH,1MOV DL,DH;將DH中的內容送到DLSHL DH,1;邏輯左移動指令SHL DH,1ADD DH,DL;加法指令,DH=DH+DLADD DH,AL;加法指令,DH=DH+ALDONE1:MOV CL,DHMOV DX,OFFSET BUFFMOV AH,9INT 21HMOV AL,CLXOR AH,AHRETREADSID ENDPDISPSID:MOV BL,AL;BL=ALMOV BH,1;BH=1L1:MOV AL,BLXOR AH,AH;將AH清零DIV BHCMP AH,0JNZ NEXTMOV AL,BH;AL=BHAAMMOV CX,AX ADD
13、CH,30H;CH=CH+30HMOV DL,CH;DL=CHMOV AH,2;AH=2INT 21HADD CL,30H;CL=CL+30HMOV DL,CL;DL=CLMOV AH,2;輸出DL中的內容INT 21HMOV DX,OFFSET BUFF;將BUFF的首地址給DXMOV AH,9INT 21HNEXT:INC BH;BH+1CMP BL,BH;BL與BH做比較JL DONE;跳轉到JLJMP L1;跳轉到L1DONE:MOV AX,OFFSET PF; ;將PF的首地址給AXCALL DISPMSGCALL PFCPFC PROC;聲明子程序,求平方差 WORK: MOV A
14、L,BYTE PTR X MUL AL MOV Z,AX MOV AL,BYTE PTR Y MUL AL CMP Z,AX JB INT1 SUB Z,AX JMP INT2INT1: SUB AX,Z MOV Z,AX MOV C,'-'INT2: MOV CX,5H MOV DI,4H MOV BX,0AH MOV AX,ZWORK2: MOV DX,0 DIV BX ADD DL,30H MOV SDI,DL DEC DI CMP AX,0H JZ W2EXIT LOOP WORK2W2EXIT: MOV AL,C MOV SDI,AL MOV DX,OFFSET CT
15、RL MOV AH,09H INT 21H MOV DI,0WORK3: INC DI CMP SDI,0H JZ WORK3 LEA DX,SDI MOV AH,09H INT 21H MOV AH,4CH;返回DOS INT 21HRETPFC ENDPMOV AH,4CH;返回DOSINT 21HCODE ENDS;代碼段結束標志END START;程序結束標志運行結果:圖2.4 運行結果 圖第3章 課程設計總結 首先要對這個問題進行分析,選擇你所想用的算法,使這個程序能鍵盤輸入自己想求的兩個數,回車結束,即可看到該算法求出的公約數。對這次試驗,我只能用一些簡單的代碼進行編程,由于我的編
16、程水平有限,我所用的代碼也很簡單,在算法中,存在一個問題有待改進,那就是輸入的兩個數之后,第一次只能求出公約數,再輸入一次才能求出平方差,而且,平方差輸出前面沒有提示。先用輾轉法求出兩個數的最大公約數,再求出最大公約數的所有約數并顯示,先用小的一個數除大的一個數, 得第一個余數; l再用第一個余數除小的一個數, 得第二個余數; 又用第二個余數除第一個余數, 得第三個余數; l這樣逐次用后一個數去除前一個 余數,直到余數是0為止。那么, 最后一個除數就是所求的最大公 約數(如果最后的除數是1,那么 原來的兩個數是互質數)。然后所求出的最大公約數的約數都是這兩個數的公約數。實驗中充分熟悉了輾轉相除
17、法。 從這次實驗中,我復習了匯編語言代碼,同時也通過輾轉算法解決了求解出最大公約數這個問題。之前也嘗試過其他算法,從這個試驗的結果我了解到了算法的優(yōu)與劣的差別,雖然得到的是同樣的結果,但是需要的時間和資源卻相差很大,這提示我們在以后寫算法的時候要找出最優(yōu)算法??梢妳R編語言編程的人來說是多么的重要,在以后寫程序過程中要時刻提醒自己找最優(yōu)算法,當然得先學會分析。在以后的學習中我要學會多實踐、多分析,在不停的改正錯誤中提高自己。參考文獻1 方立友.微機原理與匯編語言實用教程,北京:清華大學出版社,20072 朱定華.微機原理、匯編與接口技術(第2版),北京:清華大學出版社,20103 周杰英.微機原
18、理、匯編語言與接口技術,北京:人民郵電出版社,20114 錢曉捷.16/32位微機原理、匯編語言及接口技術(第3版),北京:機械工業(yè)出版社, 20115 姜蓉.微機原理匯編語言及接口技術.西安:西安交通大學出版社,2006 源文件代碼:DATA SEGMENTBUFF DB 0DH,0AH,'$'IN_MSG1 DB 'PLEASE ENTER A NUMBER:',0DH,0AH,'$'IN_MSG2 DB 'PLEASE ENTER ANOTHER NUMBER:',0DH,0AH,'$'OUT_MSG DB
19、'THE COMMON NUMBER(S) IS(ARE):',0DH,0AH,'$'PF DB 'PING FANG CHA:',0DH,0AH,'$'LOAD DB 'PRESS ANY KEY TO CONTINUE$' x dw 0 y dw 0 z dw 0 c db 0h s db 6 dup(0h),'$' ctrl db 0dh,0ah,'$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMO
20、V DS,AXMOV AX,OFFSET IN_MSG1 ; 提示輸入第一個數據CALL DISPMSGCALL READSID ; 輸入第一個數據MOV BX,AXMOV x,BXMOV AX,OFFSET IN_MSG2 ; 提示輸入第二個數據CALL DISPMSGCALL READSID ; 輸入第二個數據MOV CX,AX ; 保存到CXMOV y,CXCALL AGAIN MOV AX,OFFSET OUT_MSGCALL DISPMSGMOV AX,CXCALL DISPSIDAGAIN PROCCMP BX,CXJNL FRONTXCHG BX,CXFRONT: XOR DX,
21、DXMOV AX,BXDIV CXCMP DX,0JZ EQUALMOV BX,CXMOV CX,DXJMP FRONTEQUAL: RETAGAIN ENDPDISPMSG PROCMOV DX,AXMOV AH,9INT 21HRETDISPMSG ENDPREADSID PROCMOV AH,1INT 21HMOV DH,ALSUB DH,30HMOV AH,1INT 21HCMP AL,0DHJZ DONE1SUB AL,30HSHL DH,1MOV DL,DHSHL DH,1SHL DH,1ADD DH,DLADD DH,ALDONE1:MOV CL,DHMOV DX,OFFSET BUFFMOV AH,9INT 21HMOV AL,CLXOR AH,AHRETREADSID ENDPDISPSID:MOV BL,ALMOV BH,1L1:MOV AL,BLXOR AH,AHDIV BHCMP AH,0JNZ NEXTMOV AL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國能建葛洲壩集團黨群工作部主任崗位招聘1人備考題庫帶答案詳解
- 2026年昆明市五華區(qū)龍翔街道社區(qū)衛(wèi)生服務中心工作人員招聘備考題庫(3人)及完整答案詳解
- 2025福建廈門外代國際貨運有限公司海峽快線單證業(yè)務員崗社會招聘1人備考題庫及一套答案詳解
- 2026廣東深圳南山區(qū)朗麓家園第一幼兒園招聘1人備考題庫附答案詳解
- 2025山東青島農業(yè)大學海都學院博士人才招聘備考題庫及答案詳解(考點梳理)
- 2025年蕪湖市鏡湖區(qū)改制企業(yè)管理辦公室公開招聘工作人員2名備考題庫及參考答案詳解
- 2025陜西西安市經開第三學校教師招聘備考題庫及答案詳解(奪冠系列)
- 2025鄭州鄭上新城建設發(fā)展集團有限公司招聘工作人員5人備考題庫及1套完整答案詳解
- 醫(yī)療機構患者滿意度調查與提升方案
- 醫(yī)院保安崗位服務規(guī)范與實施方案
- 綜合門診部管理制度
- 定制手機采購合同協(xié)議
- 數據治理實施方案
- 煤磨動火作業(yè)施工方案
- 工程施工及安全管理制度
- 電梯井道腳手架搭設方案
- 虛擬電廠解決方案
- 嗜酸性粒細胞與哮喘發(fā)病關系的研究進展
- 《陸上風電場工程可行性研究報告編制規(guī)程》(NB/T 31105-2016)
- 京瓷哲學手冊樣本
- 五年級簡便計算100題
評論
0/150
提交評論