2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《匯編語言》課程設計報告</p><p>  題 目: </p><p>  院 (系): </p><p>  班 級: </p><p>  姓 名:

2、 </p><p>  學 號: </p><p>  指導教師: </p><p><b>  1設計主要任務</b></p><p>  這個程序主要是用來顯示系統

3、時間的程序。在這個程序中,主程序首先設置顯示方式,取系統時間后將時間保存,繼續設置顯示方式,利用BIOS的INT 1AH的2號系統功能調用,將計算機系統的時間參數(BCD碼)送入寄存器,將用BCD碼表示的時、分、秒轉換成ASCII碼并進行顯示。讀字符串到al中進行判斷是否為結束,然后進行顯示時間。后又重新取系統時間。 然后進行一系列的判斷是否有進位。有則進行進位操作,否則重新取系統時間。</p><p>  1.

4、1設計任務與目標</p><p>  任務:對學生掌握知識的深度、運用理論去處理問題的能力、實驗能力、課程設計能力、書面及口頭表達能力進行考核。</p><p>  匯編語言程序設計課程設計是在教學實踐基礎上進行的一次大型實驗,也是對該課程所學理論知識的深化和提高。因此,要求學生能綜合應用所學知識,設計與制造出具有較復雜功能的應用系統,并且在實驗的基本技能方面上進行一次全面的訓練。<

5、/p><p>  培養學生綜合運用所學知識獨立完成匯編程序課題的能力。使學生能夠較全面地鞏固和應用課堂中所學的基本理論和程序設計方法,能夠較熟練地完成匯編語言程序的設計和調試。</p><p>  提高學生對工作認真負責、一絲不茍,對同學團結友愛,協作攻關的基本素質。培養學生從資料文獻、科學實驗中獲得知識的能力,提高學生從別人經驗中找到解決問題的新途徑的悟性,初步培養工程意識和創新能力。培養學

6、生勇于探索、嚴謹推理、實事求是、有錯必改,用實踐來檢驗理論,全方位考慮問題等科學技術人員應具有的素質。</p><p>  目標:用“時:分:秒”(均為兩位)的形式連續顯示系統時間。利用BIOS的INT 1AH的2號系統功能調用,將計算機系統的時間參數(BCD碼)送入寄存器,將用BCD碼表示的時、分、秒轉換成ASCII碼并進行顯示。</p><p><b>  2 設計方案<

7、;/b></p><p> ?。?)在DOS環境下完成,先利用BIOS功能調用中顯示器驅動程序的00H類型調用,設置顯示器的顯示模式為80*25彩色。</p><p> ?。?)在屏幕中央顯示提示信息(提示用戶輸入“D”或“T”或“Q”)。</p><p> ?。?)然后對用戶輸入的字母進行判斷,利用分支程序分別調用不同的子程序。兩個子程序的功能分別是顯示當前

8、日期(用2AH的DOS功能調用來取日期),顯示當前時間(用2CH的DOS功能調用來取時間)。 </p><p>  必須用到的DOS功能調用:</p><p>  取當前系統日期:功能號為2AH,返回值送入CX,DX寄存器中。</p><p>  取當前系統時間:功能號為2CH,返回值送入CX,DX寄存器中。</p><p>  例如:20

9、09年5月31日運行的程序中,</p><p>  使用2AH的DOS功能調用后,得到CX=07D9H, DX=051FH</p><p>  其中,CX中的數據為2009D,即年份。</p><p>  DX中的數據中可分析得:DH=05H=05D,即月份。</p><p>  DL=1FH=31D,即日期號。</p>&l

10、t;p>  最后應將數據轉換為其字符對應的ASCII碼,</p><p>  即32H,30H,30H,39H, 2DH,30H,35H,2DH,33H,31H 再顯示在屏幕上。</p><p>  即顯示出: 2009-5-31</p><p><b>  3 主程序設計</b></p><p>  

11、其中主要對主程序和宏清屏命令進行了設計和編碼,下面將分別對它們進行簡要說明。</p><p><b>  主程序:</b></p><p>  CODE SEGMENT ;代碼段</p><p>  ASSUME CS:CODE,DS:DATA,SS:STACK

12、 </p><p>  MAIN PROC FAR </p><p>  BEGIN: </p><p>  MOV AH,0 ;設置40*2

13、5圖形顯示</p><p>  MOV AL,3 </p><p>  INT 10H </p><p>  CLEAR_SCREEN 00H,00H,19H,50H </p><p>

14、  MOV AX,DATA </p><p>  MOV DS,AX </p><p>  MOV AX,STACK </p><p>  MOV SS,AX

15、 </p><p>  ;*******************顯示宏定義*************************</p><p>  SHOW MACRO b </p><p>  LEA DX,b <

16、;/p><p>  MOV AH,9 </p><p>  INT 21H </p><p>  ENDM </p><p>  SHOW

17、WELCOME ;顯示數據段的內容</p><p>  SHOW INF01 </p><p>  SHOW INF02 </p><p>  SHOW INF03

18、 </p><p>  SHOW INF04 </p><p>  SHOW INF05</p><p>  SHOW INF06 </p><p>  INPUT: MOV AH,01

19、 ;鍵盤輸入并回寫</p><p>  INT 21H </p><p>  CMP AL,44H ;與D比較</p><p>  JNE L1 ;不相等轉L1</

20、p><p>  CALL DATEDISPLAY ;相等調用DATADISPLAY</p><p>  JMP EXIT1 </p><p>  L1: CMP AL,54H ;與T比較</p>&

21、lt;p>  JNE L2 ;不相等轉L2</p><p>  CALL TIMEDISPLAY ;相等調用TIMEDISPLAY</p><p>  JMP EXIT1 </p><p

22、>  L2: CMP AL,51H ;與Q比較</p><p>  JE EXIT ;相等轉EXIT</p><p>  SHOW INPUTER ;顯示輸入錯誤</p><p&g

23、t;  SHOW INF05 ;顯示輸入提示</p><p>  JMP INPUT </p><p>  EXIT1: SHOW INF06 ;顯示輸入提示</p><p>  JMP INPUT

24、 ;</p><p>  EXIT: MOV AH,4CH ;結束</p><p>  INT 21H </p><p>  MAIN ENDP

25、</p><p>  主程序主要實現與用戶的交互,首先程序會提示用戶想要進行什么操作。是顯示DATE,TIME還是退出。這里對應的給用戶提供的選項是“D”、“T”和“Q”。當用戶輸入他們的選項之后,主程序要判斷用戶的輸入調用相應的功能模塊來滿足用戶的要求。我們假設用戶輸入字符為X,那么首先我們將X與“D”比較。如果相同則程序調用DATE_DISPLAY模塊為用戶顯示日期。若不為“D”則要繼續與“T”想比較。相等則

26、調用TIME_DISPLAY模塊,不等則繼續與“Q”相比較。相等則正常退出,不等則說明用戶輸入非法字符主程序返回到選擇界面用戶可以繼續選擇。</p><p>  特別說明:匯編語言的選擇結構不同于C語言的選擇結構,程序設計過程中要特別小心。避免將造成潛在的BUG.</p><p><b>  3.1主程序流程圖</b></p><p><

27、b>  4 子程序設計</b></p><p>  4.1 DATE子程序流程圖</p><p>  4.2 TIME子程序流程圖</p><p><b>  5 調試</b></p><p>  (1)、運行環境 (軟、硬件環境):</p><p>  硬件:8086以上CPU

28、,內存256M以上。</p><p>  軟件:WINDOWS操作系統,MASM,LINK匯編編譯鏈接軟件。</p><p><b>  (2)、程序界面:</b></p><p>  1.提示界面 如圖6-1</p><p><b>  圖6-1</b></p><p> 

29、 2.顯示日期如圖6-2</p><p><b>  圖6-2</b></p><p>  3. 顯示時間如圖6-3</p><p><b>  圖 6-3</b></p><p>  4.錯誤輸入如圖6-4</p><p><b>  圖 6-4</

30、b></p><p>  1)編譯源文件,命名為jie3.ASM ;2)采用命令格式。MASM jie3.ASM將生成一個OBJ文件,檢查源程序中的錯誤,并改正。3)鍵入連接命令:LINK jie3.OBJ,再次鍵入jie3回車,即可顯示結果。4)時間在運行中出現了不準確性,對程序的循環次調整后,時間能正常運行。</p><p><b>  6 設計總結</b>

31、</p><p>  通過對這一鬧鐘程序的制作,使我對匯編語言的基本知識的使用更加熟練,同時也增加了我對匯編語言的一些認識,在作業完成過程中通過和同學的交流,也增加了合作的技巧。通過查閱以下資料也學到了一些課本上沒有的東西,拓寬了自己的知識面,增加了學好匯編語言的信心。 </p><p>  這不是第一次用匯編語言來設計一個小程序,平時做了很多實驗,寫了很多小程序。但這次是一個綜合的程序,

32、平時的很多程序都用到了,例如在程序中用到了不少的子程序,宏,這些子程序的設計是固定的,因此可以直接從指導資料中調用,大多只需要修改幾個參數就可以,這大大方便了我們的設計,為我們節省了很多的時間。</p><p>  在這次課程設計中,我真正體會到了合作的重要性,遇到很多問題時,當我看書查資料不能解決時,這是去找同學討論一下,收獲很大,可以使很多問題迎刃而解,直到問題最終解決。從資料中,我們可以看出這個時鐘程序的基

33、本流程,修改一些程序就可以實現這個時鐘的基本功能,添加一些程序就可以實現這個時鐘的附加功能。不可否認,本程序存在不少缺點和不足,但通過這次作業的卻找出了自己在學習上的不足,對以后的工作也有指導作用。我相信在以后的學習中會克服這些不足,達到熟練掌握匯編語言的目的!</p><p><b>  7 程序清單</b></p><p><b>  程序代碼:<

34、/b></p><p> ??;************************清屏宏定義**********************</p><p>  CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 ;1 </p><p>  MOV AH,06H

35、 ;2</p><p>  MOV AL,00H ;3</p><p>  MOV BH,79H ;4</p><p>  MOV CH,OP1

36、 ;5</p><p>  MOV CL,OP2 ;6</p><p>  MOV DH,OP3 ;7</p><p>  MOV DL,OP4

37、 ;8</p><p>  INT 10H ;9</p><p>  MOV AH,02H ;10</p><p>  MOV BH,00H

38、 ;11</p><p>  MOV DH,00H ;12</p><p>  MOV DL,00H ;13</p><p>  INT 10H

39、 ;14</p><p>  ENDM ;15</p><p>  STACK SEGMENT STACK ;16定義堆棧段</p><p>  DB 200 DUP(0)

40、 ;17</p><p>  STACK ENDS ;18</p><p>  DATA SEGMENT ;19定義數據段</p><p>  WELCOME DB 'WELCOME YOU TO COME

41、 HERE!$' ;20提示界面</p><p>  INF01 DB 0DH,0AH,'THIS IS A DISPLAY PROGAME!$' ;21</p><p>  INF02 DB 0DH,0AH,'PLEASE INPUT "D" "T" OR "Q" TO

42、SHOW DATA TIME OR EXIT!$'</p><p>  INF03 DB 0DH,0AH,'D:DISPLAY SYSTEM DATE;$' ;22</p><p>  INF04 DB 0DH,0AH,'T:DISPLAY SYSTEM TIME;$' ;23</p><p

43、>  INF05 DB 0DH,0AH,'Q:QUIT.$' ;24</p><p>  INF06 DB 0DH,0AH,'PLEASE INPUT THE CHAR:$' ;25</p><p>  INPUTER DB 0DH,0AH,'INPUT ERROR!$&

44、#39; ;26</p><p>  DATEDIS DB ' 00 - 00 - 0000',0AH,'$' ;27顯示DATE</p><p>  TIMEDIS DB ' 00 ',3AH,' 00 ',3AH,' 00 '

45、,0AH,'$' ;28顯示TIME</p><p>  DATA ENDS ;29</p><p>  CODE SEGMENT ;30代碼段</p><p>  

46、ASSUME CS:CODE,DS:DATA,SS:STACK ;31</p><p> ??;****************************主程序**************************</p><p>  MAIN PROC FAR ;32</p>

47、<p>  BEGIN: ;33</p><p>  MOV AH,0 ;34設置40*25圖形顯示</p><p>  MOV AL,3 ;35</p&g

48、t;<p>  INT 10H ;36</p><p>  CLEAR_SCREEN 00H,00H,19H,50H ;37</p><p>  MOV AX,DATA ;38</p><p> 

49、 MOV DS,AX ;39</p><p>  MOV AX,STACK ;40</p><p>  MOV SS,AX ;41</p><p>  ;***************

50、*********顯示宏定義*************************</p><p>  SHOW MACRO b ;42</p><p>  LEA DX,b ;43</p><p>  MOV AH,9

51、 ;44</p><p>  INT 21H ;45</p><p>  ENDM ;46</p><p>  SHOW WELCOME

52、 ;47顯示數據段的內容</p><p>  SHOW INF01 ;48</p><p>  SHOW INF02 ;49</p><p>  SHOW INF03 ;50&l

53、t;/p><p>  SHOW INF04 ;51</p><p>  SHOW INF05 ;52</p><p>  SHOW INF06 ;53</p>

54、<p>  INPUT: MOV AH,01 ;53鍵盤輸入并回寫</p><p>  INT 21H ;54</p><p>  CMP AL,44H ;55與D比較</p>

55、<p>  JNE L1 ;56不相等轉L1</p><p>  CALL DATEDISPLAY ;57相等調用DATADISPLAY</p><p>  JMP EXIT1 ;58</p&g

56、t;<p>  L1: CMP AL,54H ;59與T比較</p><p>  JNE L2 ;60不相等轉L2</p><p>  CALL TIMEDISPLAY ;61相等調用TIMEDISP

57、LAY</p><p>  JMP EXIT1 ;62</p><p>  L2: CMP AL,51H ;63與Q比較</p><p>  JE EXIT ;64相等轉EXIT<

58、/p><p>  SHOW INPUTER ;65顯示輸入錯誤</p><p>  SHOW INF05 ;66顯示輸入提示</p><p>  JMP INPUT ;67</p>&

59、lt;p>  EXIT1: SHOW INF05 ;68顯示輸入提示</p><p>  JMP INPUT ;69</p><p>  EXIT: MOV AH,4CH ;70結束</p>

60、<p>  INT 21H ;71</p><p>  MAIN ENDP ;72</p><p>  ;********************日期顯示子程序**************************</p><p

61、>  DATEDISPLAY PROC NEAR ;73</p><p>  MOV AH,2AH ;74取當前系統日期</p><p>  INT 21H ;75</p><p>  M

62、OV AX, CX ;76送年份入AX</p><p>  MOV BX, 10 ;77 (BX)=10</p><p>  LEA SI, DATEDIS + 14 ;78使SI指向年的最后一位</p>&

63、lt;p>  MOV CX, 4 ;79(CX)=4</p><p>  PUSH DX ;80保存月日</p><p>  TAB: XOR DX, DX ;81DX清零</p&g

64、t;<p>  DIV BX ;82(DX,AX)/BX,商送AX,余數送DX</p><p>  ADD DL, 30H ;83余數與30H相加變為字符的ASCII碼</p><p>  MOV [SI], DL ;84余數送入SI所指向的字節區</

65、p><p>  DEC SI ;85SI減一</p><p>  LOOP TAB ;86循環</p><p>  POP DX ;87DX還原<

66、;/p><p>  MOV AL, DL ;88日送AL</p><p>  XOR AH, AH ;89AH清零</p><p>  DIV BL ;90AX/BL,商送AH,余數

67、送AL</p><p>  ADD AX, 3030H ;91轉變為數字字符的ASCII碼</p><p>  SUB SI, 4 ;92使SI指向日的第一位</p><p>  MOV [SI], AX ;93(AX)送SI

68、所指向的字節區</p><p>  MOV AL, DH ;94月送AL</p><p>  XOR AH, AH ;95AH清零</p><p>  DIV BL ;96AX/BL, 商送AH,余數送AL&

69、lt;/p><p>  ADD AX, 3030H ;97轉變為數字字符的ASCII碼</p><p>  SUB SI, 5 ;98使SI指向月的第一位</p><p>  MOV [SI], AX ;99(AX)送SI所

70、指向的字節區</p><p>  SHOW DATEDIS ;100顯示日期</p><p>  RET ;101調用后返回</p><p>  ;***********************時間顯示子程序***********************

71、</p><p>  TIMEDISPLAY PROC NEAR ;102</p><p>  MOV AH,2CH ;103</p><p>  INT 21H ;104</p><p>  MOV B

72、X,10 ;105</p><p>  LEA DI,TIMEDIS ;106</p><p>  MOV AL,CH ;107</p><p>  XOR AH,AH

73、 ;108</p><p>  DIV BL ;109</p><p>  ADD AX,3030H ;110</p><p>  MOV [DI+1],AX ;111</p><

74、p>  MOV AL,CL ;112</p><p>  XOR AH,AH ;113</p><p>  DIV BL ;114</p><p>  ADD AX,3030H

75、 ;115</p><p>  MOV [DI+6],AX ;116</p><p>  MOV AL,DH ;117</p><p>  XOR AH,AH ;118</p

76、><p>  DIV BL ;119</p><p>  ADD AX,3030H ;120</p><p>  MOV [DI+11],AX ;121</p><p>  SHOW TIME

77、DIS ;122</p><p>  RET ;123時間調用返回</p><p>  CODE ENDS ;124</p><p>  END BEGIN

溫馨提示

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

評論

0/150

提交評論