計算比賽成績_匯編語言課程設計報告書_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  一、設計內(nèi)容與設計要求</p><p>  1.設計內(nèi)容:通過本周的課程設計,學生能夠鞏固所學的基礎知識,并能夠使學生更加熟練運用匯編程序設計語言來掌握綜合匯編程序設計的方法和過程,以及為設計其它應用軟件提供幫助,進而提高學生的軟件設計能力。</p><p>  1、編制一計算比賽成績的程序,要求完成以下功能:</p><p> ?。?) 9名

2、評委,每個評委給分范圍為0~10(整數(shù));</p><p>  (2) 9名評委給分中,去掉一個最高分和一個最低分,剩余7名評委的平均分即為參賽者的得分(精確到小數(shù)點二位);</p><p>  (3) 將得分在光標位置處顯示出來。</p><p>  2、編制一程序,要求接收從鍵盤輸入的一個班的學生成績,并存放于30字的grade數(shù)組中,各數(shù)據(jù)的格式為:</

3、p><p>  學號,成績1,成績2,…,成績5</p><p>  然后根據(jù)grade中的學生成績,把學生名次填入rank數(shù)據(jù)組中,并顯示出來,格式為:</p><p><b>  學號,名次</b></p><p>  3、利用INT 1CH(大約每秒中斷18.2次)編寫一個中斷駐留程序,要求在屏幕的右上角顯示計算機中當

4、前系統(tǒng)時間,顯示格式為</p><p>  時:分:秒:1/100秒</p><p>  4、輸入一個菱形的兩條對角線長,在屏幕上用‘*’號畫出一個彩色的菱形。</p><p>  5、設置圖形方式并顯示彩條,要求:</p><p>  選擇背景色為藍色,調(diào)色板為0,然后每行顯示一種顏色,每四行重復一次,一直到整個屏幕都顯示出彩條</p

5、><p><b>  2.設計要求:</b></p><p>  掌握結構化程序設計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)驗。</p><p>  設計正確,方案合理。</p><p>  界面友好,使用方便。</p><p>  程序精

6、煉,結構清晰。</p><p>  設計報告5000字以上,含程序設計說明,用戶使用說明,源程序清單及程序框圖。</p><p><b>  上機演示。</b></p><p>  按學號順序選課題號,并在規(guī)定的時間內(nèi)獨自完成相關課題的匯編源程序編寫、調(diào)整和運行。源程序及編譯生成各文件均保存在軟盤中;</p><p> 

7、 按本任務書的要求,按附錄的要求編寫《課程設計報告》(Word文檔格式)。并用A4的復印紙打印并裝訂; </p><p><b>  二、進度安排</b></p><p><b>  第 1 周: </b></p><p>  星期1 </p><p>  星期2

8、 </p><p>  星期3 </p><p>  星期4 </p><p><b>  附:</b></p><p>  課程設計報告裝訂順序:封面、任務書、目錄、正文、評分、附件(A4大小的圖紙及程序清單)。 </p><p&g

9、t;  正文的格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為22。</p><p>  正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(xiàn)(至少要有一個主要模塊的流程圖);四、程序調(diào)試;五、總結;六、附件(所有程序的原代碼,要求對程序寫出必要的注釋)。</p><p>  正文總字數(shù)要求在5000字以上(不含程序原代碼

10、)。</p><p><b>  目錄</b></p><p><b>  一、題目1</b></p><p>  二、程序總體設計方案、思路1</p><p>  1.1.總體設計方案1</p><p>  1.2.設計思路1</p><

11、p>  三、程序設計框圖2</p><p>  四、源程序清單3</p><p>  五、程序調(diào)試結果7</p><p><b>  六、設計總結7</b></p><p><b>  題目</b></p><p>  編制一計算比賽成績的程序,要求完成

12、以下功能:</p><p>  (1) 9名評委,每個評委給分范圍為0~10(整數(shù));</p><p> ?。?) 9名評委給分中,去掉一個最高分和一個最低分,剩余7名評委的平均分即為參賽者的得分(精確到小數(shù)點二位);</p><p>  (3) 將得分在光標位置處顯示出來。</p><p>  程序總體設計方案、思路</p>

13、<p><b>  總體設計方案</b></p><p>  通過讀取依次從鍵盤輸入的9個兩位的十進制數(shù)得分,將得分保存在字符串中,然后用冒泡法將9個數(shù)的位置按大小重新排列并輸出,再將中間的7個數(shù)累加起來除以7,即得到去掉最高分和最低分之后的平均分,最后設置光標位置到平均分處。</p><p><b>  設計思路</b></p&

14、gt;<p>  通過記錄鍵盤,將ASCII碼轉化為二進制數(shù)寸入長度為9的字符串中,此部分使用用循環(huán)結構。若輸入的兩位數(shù)的首位,即十位,非0或非1,則提示錯誤并要求重復輸入,若輸入的個位數(shù)非0~9中的數(shù),則提示錯誤并要求重復輸入。</p><p>  用冒泡法重排9個數(shù),使得第1和第9個數(shù)分別為最大數(shù)和最小數(shù),并在屏幕中依次顯示出來。然后用循環(huán)語句求出9個數(shù)中中間的7個數(shù)的和,即總得分,若總得分為7

15、0分,則直接輸出平均分:10.00分。若小于70分則將總得分除以7,得到的商作為平均分的個位數(shù),輸出一個小數(shù)點,將余數(shù)乘以10再除以7,如此循環(huán)3次,后兩次不輸出小數(shù)點,得到精確到小數(shù)點后兩位的平均的分數(shù),再將平均分輸出。最后改變光標位置為平均得分處。</p><p><b>  程序設計框圖</b></p><p><b>  YES</b>&

16、lt;/p><p><b>  NO</b></p><p><b>  源程序清單</b></p><p>  DATA SEGMENT</p><p>  BUF DB 10 DUP(0)</p><p>  STRING1 DB 'Please enter the

17、 score '</p><p>  NUMBER DB 31H,': ','$'</p><p>  STRING2 DB 0AH,'The ranged scores are:','$'</p><p>  STRING3 DB 'After removing the highest

18、 and lowest score, the average score is: ','$'</p><p>  ERROR DB 'ERROR',0AH,0DH,'$'</p><p><b>  DATA ENDS</b></p><p>  CODE SEGMENT</p>

19、;<p>  ASSUME CS:CODE,DS:DATA</p><p>  START: MOV AX,DATA</p><p><b>  MOV DS,AX</b></p><p>  XOR SI,SI;SI置0</p><p>  MOV CX,9;9個數(shù)</p><p>

20、;<b>  INPUT:</b></p><p>  LEA DX,STRING1</p><p>  MOV AH,9 </p><p><b>  INT 21H</b></p><p><b>  MOV AH,1</b></p><p&

21、gt;  INT 21H;輸入得分的十位到AL</p><p>  CMP AL,'0'</p><p>  JB ER ;AL<0小于則跳到ER</p><p>  CMP AL,'1'</p><p>  JA ER ;AL>1則跳到ER</p><p>  SU

22、B AL,30H</p><p><b>  MOV DL,10</b></p><p>  MUL DL;十位乘以10</p><p>  MOV DX,AX;DX存十位數(shù)</p><p><b>  MOV AH,1</b></p><p>  INT 21H;輸入得分的

23、個位到AL</p><p>  CMP AL,'0'</p><p>  JB ER ;AL<0小于則跳到ER</p><p>  CMP AL,'9'</p><p>  JA ER ;AL>10則跳到ER</p><p>  SUB AL,30H</p>&

24、lt;p>  ADD AL,DL;個位十位相加到AL</p><p>  MOV BUF[SI],AL</p><p><b>  INC SI</b></p><p>  INC NUMBER</p><p>  MOV DL,0AH;換行</p><p><b>  MOV A

25、H,2</b></p><p><b>  INT 21H</b></p><p>  MOV DL,0DH;回車</p><p><b>  INT 21H</b></p><p>  LOOP INPUT;循環(huán)輸入9次</p><p>  JMP RANGE_

26、0;轉入排序</p><p><b>  ER:</b></p><p>  ;輸入錯誤后返回重新輸入</p><p>  LEA DX,ERROR</p><p><b>  MOV AH,9</b></p><p><b>  INT 21H</b>

27、</p><p><b>  JMP INPUT</b></p><p>  RANGE_0: </p><p><b>  MOV BX,1</b></p><p><b>  MOV CX,9</b></p><p><b>  XO

28、R DI,DI</b></p><p>  RANGE: MOV AL,BUF[DI]</p><p>  CMP AL,BUF[DI+1]</p><p>  JAE NEXT_1</p><p>  XCHG BUF[DI+1],AL</p><p>  MOV BUF[DI],AL</p>

29、;<p><b>  MOV BX,0</b></p><p>  NEXT_1: INC DI</p><p>  LOOP RANGE</p><p><b>  CMP BX,0</b></p><p>  JE RANGE_0</p><p><

30、;b>  ;冒泡法排列得分</b></p><p>  LEA DX,STRING2</p><p><b>  MOV AH,9</b></p><p><b>  INT 21H</b></p><p><b>  MOV CX,9</b></p&g

31、t;<p>  XOR SI,SI;SI清零</p><p><b>  MOV AH,2</b></p><p>  RANGE_OUTPUT:</p><p>  ; 輸出排序后的得分 </p><p>  MOV DL,BUF[SI]</p><p>  A

32、DD DL,30H</p><p>  CMP DL,39H;判斷是否是10分</p><p><b>  JA TENS_1</b></p><p>  JBE TENS_0</p><p><b>  TENS_1: </b></p><p>  ;十位數(shù)為1,則輸出&#

33、39;10'</p><p><b>  MOV BX,1</b></p><p>  MOV DL,'1'</p><p><b>  INT 21H</b></p><p>  MOV DL,'0'</p><p><b>

34、;  INT 21H</b></p><p><b>  INC SI</b></p><p>  MOV DL,','</p><p><b>  INT 21H</b></p><p>  JMP NEXT_2</p><p><b>

35、;  TENS_0:</b></p><p>  ;十位數(shù)為0,則按原得分輸出</p><p><b>  INT 21H</b></p><p><b>  INC SI</b></p><p>  MOV DL,','</p><p><

36、b>  INT 21H</b></p><p><b>  NEXT_2:</b></p><p>  LOOP RANGE_OUTPUT</p><p><b>  MOV AH,2</b></p><p>  MOV DL,0AH;換行</p><p>

37、<b>  INT 21H</b></p><p>  MOV DL,0AH;換行</p><p><b>  INT 21H</b></p><p>  MOV DL,0DH;回車</p><p><b>  INT 21H</b></p><p> 

38、 LEA DX,STRING3</p><p><b>  MOV AH,9H</b></p><p><b>  INT 21H</b></p><p>  MOV CX,7;累加中間7個數(shù)字</p><p><b>  XOR AX,AX</b></p>&l

39、t;p><b>  DEC SI</b></p><p><b>  SUM:</b></p><p><b>  ;求7個分數(shù)的和</b></p><p><b>  DEC SI</b></p><p>  ADD AL,BUF[SI]</

40、p><p><b>  LOOP SUM</b></p><p>  CMP AL,46H</p><p>  JAE FULL_MARK</p><p>  JMP N_FULL_MARK</p><p>  FULL_MARK:</p><p><b>  ;滿分

41、時</b></p><p><b>  MOV AH,2H</b></p><p>  MOV DL,'1'</p><p><b>  INT 21H</b></p><p>  MOV DL,'0'</p><p><b

42、>  INT 21H</b></p><p>  MOV DL,'.'</p><p><b>  INT 21H</b></p><p>  MOV DL,'0'</p><p><b>  INT 21H</b></p><p

43、>  MOV DL,'0'</p><p><b>  INT 21H</b></p><p>  JMP ENDING</p><p>  N_FULL_MARK:</p><p><b>  ;非滿分時</b></p><p><b>  

44、MOV CX,2</b></p><p>  MOV BH,1;小數(shù)點只出現(xiàn)1次</p><p><b>  DIVISION:</b></p><p><b>  MOV BL,7</b></p><p>  DIV BL;除以7</p><p><b&g

45、t;  PUSH AX</b></p><p>  ADD AL,30H</p><p>  MOV DL,AL </p><p><b>  MOV AH,2</b></p><p><b>  INT 21H</b></p><p><b>  CM

46、P BH,0</b></p><p><b>  JE DOT</b></p><p>  MOV DL,'.'</p><p><b>  MOV BX,0</b></p><p>  DOT: INT 21H</p><p><b&

47、gt;  POP AX</b></p><p>  MOV AL,AH;余數(shù)存入AL</p><p><b>  MOV DL,10</b></p><p>  MUL DL;余數(shù)乘以10,結果存入AX</p><p>  LOOP DIVISION</p><p><b>

48、  ENDING:</b></p><p><b>  MOV AH,02</b></p><p><b>  MOV BH,0</b></p><p>  MOV DX,0C46H</p><p>  INT 10H;設置光標位置</p><p><b&g

49、t;  MOV AH,1</b></p><p><b>  INT 21H</b></p><p>  CODE ENDS</p><p><b>  END START</b></p><p><b>  程序調(diào)試結果</b></p><

50、;p><b>  設計總結</b></p><p>  通過課程幾天的課程設計,學到了諸多上課學不到的知識,特別是體會到了匯編語言與高級程序語言編程的不同,起初非常不適宜匯編語言的編程,高級程序語言中的基本功能,入多重循環(huán)和套嵌,在匯編語言看來缺是相當復雜的,還有數(shù)字的輸入和輸出都要經(jīng)過ASCII碼與二進制的轉換,數(shù)據(jù)的定義少得可憐,這些特性都讓起初的我感到寸步難行。但是進過進一步的上

51、機操作和學習,匯編語言開始變得明朗起來。</p><p>  此次程序設計雖然收獲不小,也留有許多遺憾,如程序沒有能夠對輸入得分大于10分的錯誤操作做出提示,結果的平均分的百分位在某些時候存在誤差,有可能是因為程序中數(shù)據(jù)是以字節(jié)形式存儲的,字符長度太短導致誤差,也有可能是因為求小數(shù)的方法導致的。</p><p>  總的來說這次課程設計雖然遇到了一些比較麻煩的問題,但還算比較順利,經(jīng)過一些

溫馨提示

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

評論

0/150

提交評論