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

下載本文檔

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

文檔簡介

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

2、 </p><p>  學(xué) 號: </p><p>  指導(dǎo)教師: </p><p><b>  1設(shè)計(jì)主要任務(wù)</b></p><p>  這個(gè)程序主要是用來顯示系統(tǒng)

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

4、1設(shè)計(jì)任務(wù)與目標(biāo)</p><p>  任務(wù):對學(xué)生掌握知識的深度、運(yùn)用理論去處理問題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書面及口頭表達(dá)能力進(jìn)行考核。</p><p>  匯編語言程序設(shè)計(jì)課程設(shè)計(jì)是在教學(xué)實(shí)踐基礎(chǔ)上進(jìn)行的一次大型實(shí)驗(yàn),也是對該課程所學(xué)理論知識的深化和提高。因此,要求學(xué)生能綜合應(yīng)用所學(xué)知識,設(shè)計(jì)與制造出具有較復(fù)雜功能的應(yīng)用系統(tǒng),并且在實(shí)驗(yàn)的基本技能方面上進(jìn)行一次全面的訓(xùn)練。<

5、/p><p>  培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識獨(dú)立完成匯編程序課題的能力。使學(xué)生能夠較全面地鞏固和應(yīng)用課堂中所學(xué)的基本理論和程序設(shè)計(jì)方法,能夠較熟練地完成匯編語言程序的設(shè)計(jì)和調(diào)試。</p><p>  提高學(xué)生對工作認(rèn)真負(fù)責(zé)、一絲不茍,對同學(xué)團(tuán)結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。培養(yǎng)學(xué)

6、生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來檢驗(yàn)理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。</p><p>  目標(biāo):用“時(shí):分:秒”(均為兩位)的形式連續(xù)顯示系統(tǒng)時(shí)間。利用BIOS的INT 1AH的2號系統(tǒng)功能調(diào)用,將計(jì)算機(jī)系統(tǒng)的時(shí)間參數(shù)(BCD碼)送入寄存器,將用BCD碼表示的時(shí)、分、秒轉(zhuǎn)換成ASCII碼并進(jìn)行顯示。</p><p><b>  2 設(shè)計(jì)方案<

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

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

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

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

11、其中主要對主程序和宏清屏命令進(jìn)行了設(shè)計(jì)和編碼,下面將分別對它們進(jìn)行簡要說明。</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 ;設(shè)置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 ;顯示數(shù)據(jù)段的內(nèi)容</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 ;不相等轉(zhuǎn)L1</

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

21、lt;p>  JNE L2 ;不相等轉(zhuǎn)L2</p><p>  CALL TIMEDISPLAY ;相等調(diào)用TIMEDISPLAY</p><p>  JMP EXIT1 </p><p

22、>  L2: CMP AL,51H ;與Q比較</p><p>  JE EXIT ;相等轉(zhuǎn)EXIT</p><p>  SHOW INPUTER ;顯示輸入錯(cuò)誤</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 ;結(jié)束</p><p>  INT 21H </p><p>  MAIN ENDP

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

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

27、b>  4 子程序設(shè)計(jì)</b></p><p>  4.1 DATE子程序流程圖</p><p>  4.2 TIME子程序流程圖</p><p><b>  5 調(diào)試</b></p><p>  (1)、運(yùn)行環(huán)境 (軟、硬件環(huán)境):</p><p>  硬件:8086以上CPU

28、,內(nèi)存256M以上。</p><p>  軟件:WINDOWS操作系統(tǒng),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. 顯示時(shí)間如圖6-3</p><p><b>  圖 6-3</b></p><p>  4.錯(cuò)誤輸入如圖6-4</p><p><b>  圖 6-4</

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

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

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

33、本流程,修改一些程序就可以實(shí)現(xiàn)這個(gè)時(shí)鐘的基本功能,添加一些程序就可以實(shí)現(xiàn)這個(gè)時(shí)鐘的附加功能。不可否認(rèn),本程序存在不少缺點(diǎn)和不足,但通過這次作業(yè)的卻找出了自己在學(xué)習(xí)上的不足,對以后的工作也有指導(dǎo)作用。我相信在以后的學(xué)習(xí)中會克服這些不足,達(dá)到熟練掌握匯編語言的目的!</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定義數(shù)據(jù)段</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設(shè)置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顯示數(shù)據(jù)段的內(nèi)容</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不相等轉(zhuǎn)L1</p><p>  CALL DATEDISPLAY ;57相等調(diào)用DATADISPLAY</p><p>  JMP EXIT1 ;58</p&g

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

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

58、/p><p>  SHOW INPUTER ;65顯示輸入錯(cuò)誤</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結(jié)束</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取當(dāng)前系統(tǒng)日期</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,余數(shù)送DX</p><p>  ADD DL, 30H ;83余數(shù)與30H相加變?yōu)樽址腁SCII碼</p><p>  MOV [SI], DL ;84余數(shù)送入SI所指向的字節(jié)區(qū)</

65、p><p>  DEC SI ;85SI減一</p><p>  LOOP TAB ;86循環(huán)</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,余數(shù)

67、送AL</p><p>  ADD AX, 3030H ;91轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼</p><p>  SUB SI, 4 ;92使SI指向日的第一位</p><p>  MOV [SI], AX ;93(AX)送SI

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

69、lt;/p><p>  ADD AX, 3030H ;97轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼</p><p>  SUB SI, 5 ;98使SI指向月的第一位</p><p>  MOV [SI], AX ;99(AX)送SI所

70、指向的字節(jié)區(qū)</p><p>  SHOW DATEDIS ;100顯示日期</p><p>  RET ;101調(diào)用后返回</p><p>  ;***********************時(shí)間顯示子程序***********************

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時(shí)間調(diào)用返回</p><p>  CODE ENDS ;124</p><p>  END BEGIN

溫馨提示

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

評論

0/150

提交評論