匯編語言課程設(shè)計----顯示系統(tǒng)當(dāng)前時間與日期_第1頁
已閱讀1頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計說明書</b></p><p>  課程名稱: 匯編語言 </p><p>  班級: 姓名: _ _ </p><p>  學(xué)號:__ <

2、;/p><p>  設(shè)計題目: 顯示系統(tǒng)當(dāng)前時間與日期 _ </p><p>  設(shè)計時間: 2009-06-21 至 2009-07-02 </p><p>  指導(dǎo)教師: _ _ _ </p><p>  評 語:_____________________

3、____________</p><p>  _________________________________________</p><p>  _________________________________________</p><p>  _________________________________________</p><

4、p>  _________________________________________</p><p>  評閱成績:__ __評閱教師:____________</p><p><b>  一、課程設(shè)計目的</b></p><p>  進(jìn)行程序設(shè)計方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計的基本知識和基本方法,通過實際

5、動手能力的培養(yǎng),進(jìn)一步熟悉匯編語言的結(jié)構(gòu)和使用方法,達(dá)到能獨立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。</p><p><b>  二、課程設(shè)計要求</b></p><p>  1.要求編寫并調(diào)試通過一個小型軟件,實現(xiàn)對軟件或硬件的操作。</p><p>  2.遵循模塊化、結(jié)構(gòu)化的程序設(shè)計方法。</p><p>

6、  3.要求程序必須正確。</p><p>  4.程序簡明易懂,多運用輸入輸出提示,出錯信息及必要的注釋。</p><p>  5.要求程序結(jié)構(gòu)合理,語句使用得當(dāng)。</p><p>  6.適當(dāng)追求編程技巧和程序運行效率。</p><p><b>  三、課程設(shè)計題目:</b></p><p>

7、  題目:顯示系統(tǒng)當(dāng)前時間與日期</p><p>  要求設(shè)計界面提示信息為:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,從鍵盤鍵入“D”,可顯示系統(tǒng)日期。從鍵盤輸入“T”,可顯示系統(tǒng)時間。從鍵盤輸入“Q”,退出程序。利用DOS的系統(tǒng)功能調(diào)用的2AH和2CH功能調(diào)用,讀取系統(tǒng)日期和時間。將日期和時間轉(zhuǎn)換為相應(yīng)的ASCII碼字符,顯示在屏幕上。</p>&

8、lt;p><b>  四、課題分析</b></p><p>  這個題目是顯示系統(tǒng)當(dāng)前時間與日期,這就需要用DOS的2A號功能---取系統(tǒng)日期和2C號功能---取系統(tǒng)時間,以及BIOS的06號功能---清屏或上卷,02號功能---制光標(biāo)位置。此題目主要是將時間,日期轉(zhuǎn)換為相應(yīng)的ASCII碼,并顯示出來。</p><p><b>  五、流程圖:<

9、/b></p><p><b>  六、程序源代碼:</b></p><p>  CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 ;1宏定義,設(shè)置七個參數(shù)</p><p>  MOV AH,06H ;2 AH=

10、06屏幕初始化或上卷指定的行</p><p>  MOV AL,00H ;3 清屏</p><p>  MOV BH,79H ;4 卷入行屬性</p><p>  MOV CH,OP1

11、 ;5 左上角行號</p><p>  MOV CL,OP2 ;6 左上角列號</p><p>  MOV DH,OP3 ;7 右上角行號</p><p>  M

12、OV DL,OP4 ;8 右上角列號</p><p>  INT 10H ;9 調(diào)用BIOS功能 【見43行】</p><p>  MOV AH,02H

13、 ;10 制定光標(biāo)位置</p><p>  MOV BH,00H ;11 第0頁</p><p>  MOV DH,00H ;12 第0行</p><p>  MOV DL,00H

14、 ;13 第0列</p><p>  INT 10H ;14</p><p>  ENDM ;15</p><p>  STACK SEGMENT

15、 ;16定義堆棧段</p><p>  DB 200 DUP(0) ;17</p><p>  STACK ENDS ;18</p><p>  

16、DATA SEGMENT ;19 定義數(shù)據(jù)段</p><p>  WELCOME DB 'WELCOME YOU TO COME HERE!$' ;20 提示界面</p><p>  INF01 DB 0DH,0AH,'THIS IS A DISPLAY PROGAME

17、!$' ;21</p><p>  INF02 DB 0DH,0AH,'D:DISPLAY SYSTEM DATE;$' ;22</p><p>  INF03 DB 0DH,0AH,'T:DISPLAY SYSTEM TIME;$' ;23</p><p>  INF04 DB 0DH,0A

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

19、 ;26</p><p>  DATEDIS DB ' 00 - 00 - 0000',0AH,'$' ;27 顯示DATE</p><p>  TIMEDIS DB ' 00 ',3AH,' 00 ',3AH,' 00 ',0AH,'$' ;28 顯示TI

20、ME </p><p>  【3A冒號 0A換行 OD回車】</p><p>  DATA ENDS ;29</p><p>  CODE SEGMENT ;30 代碼段</p><p>

21、  ASSUME CS:CODE,DS:DATA,SS:STACK ;31</p><p>  START: ;32</p><p>  MAIN PROC FAR ;33 </p>

22、<p>  MOV AH,00H ;34 AH=0設(shè)置顯示模式</p><p>  MOV AL,03H ;35 設(shè)置80*25圖形顯示</p><p>  INT 10H

23、 ;36</p><p>  CLEAR_SCREEN 00H,00H,19H,50H ;37 調(diào)用宏定義</p><p>  MOV AX,DATA ;38</p><p>  MOV DS,AX

24、 ;39</p><p>  MOV AX,STACK ;40</p><p>  MOV SS,AX ;41</p><p>  SHOW MACRO

25、b ;42---46 顯示宏定義</p><p>  LEA DX,b ;43</p><p>  MOV AH,9 ;44 </p>&l

26、t;p>  INT 21H ;45</p><p>  ENDM ;46</p><p>  SHOW WELCOME ;47---52

27、調(diào)用宏定義,顯示字符串的內(nèi)容</p><p>  SHOW INF01 ;48</p><p>  SHOW INF02 ;49</p><p>  SHOW INF03

28、 ;50</p><p>  SHOW INF04 ;51</p><p>  SHOW INF05 ;52</p><p><b>  INPUT: </b

29、></p><p>  MOV AH,01 ;53 鍵盤輸入并回寫</p><p>  INT 21H ;54</p><p>  CMP AL,44H

30、 ;55 與D比較</p><p>  JNE L1 ;56 不相等轉(zhuǎn)L1</p><p>  CALL DATEDISPLAY ;57 相等調(diào)用日期顯示子程序</p><p>  

31、JMP EXIT1 ;58 繼續(xù)輸入字母</p><p><b>  L1: </b></p><p>  CMP AL,54H ;59 與T比較</p><p>  JNE L2

32、 ;60 不相等轉(zhuǎn)L2</p><p>  CALL TIMEDISPLAY ;61 相等調(diào)用時間顯示子程序</p><p>  JMP EXIT1 ;62 繼續(xù)

33、輸入字母</p><p><b>  L2: </b></p><p>  CMP AL,51H ;63 與Q比較</p><p>  JE EXIT ;64 相等轉(zhuǎn)EXIT&l

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

35、 ;67</p><p><b>  EXIT1: </b></p><p>  SHOW INF05 ;68 顯示輸入提示</p><p>  JMP INPUT

36、 ;69</p><p><b>  EXIT: </b></p><p>  MOV AH,4CH ;70 結(jié)束</p><p>  INT 21H ;71</p&g

37、t;<p>  MAIN ENDP ;72</p><p>  DATEDISPLAY PROC NEAR ;73 日期顯示子程序</p><p>  MOV AH,2AH

38、 ;74 取當(dāng)前系統(tǒng)日期</p><p>  INT 21H ;75</p><p>  MOV AX,CX ;76 送年份入AX作為被除數(shù) 【年份存在CX中】</p><p>  MOV BX

39、,10 ;77 (BX)=10</p><p>  LEA SI,DATEDIS + 14 ;78 使SI指向年的最后一位 【從0開始數(shù)】</p><p>  MOV CX,4

40、 ;79 (CX)=4 年的位數(shù),循環(huán)4次</p><p>  PUSH DX ;80 DX入棧,保存月日</p><p><b>  TAB: </b></p><p>  XOR DX, DX

41、 ;81 DX清零,存余數(shù)</p><p>  DIV BX ;82 (DX,AX)/BX,商送AX,余數(shù)送DX</p><p>  ADD DL, 30H ;83 余數(shù)與30H相加變?yōu)樽址腁SCII碼

42、 </p><p>  MOV [SI], DL ;84 余數(shù)送入SI所指向的字節(jié)區(qū)</p><p>  DEC SI ;85 SI減一</p><p>  LOOP TAB

43、 ;86 循環(huán)4次 </p><p>  【年的ASCII碼轉(zhuǎn)換】</p><p>  POP DX ;87 DX還原</p><p>  MOV AL, DL

44、 ;88 日送AL 【日存在DL中】</p><p>  XOR AH, AH ;89 AH清零</p><p>  DIV BL ;90 AX/BL,商送AL,余數(shù)送AH</p><p> 

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

46、 ;93 (AX)送SI所指向的字節(jié)區(qū)</p><p>  MOV AL, DH ;94 月送AL 【月存在DH中】</p><p>  XOR AH, AH ;95 AH清零</p><p> 

47、 DIV BL ;96 AX/BL, 商送AL,余數(shù)送AH</p><p>  ADD AX, 3030H ;97 轉(zhuǎn)變?yōu)閿?shù)字字符的ASCII碼</p><p>  SUB SI, 5

48、 ;98 使SI指向月的第一位</p><p>  MOV [SI], AX ;99 (AX)送SI所指向的字節(jié)區(qū)</p><p>  SHOW DATEDIS ;100 顯示日期</p><p

49、><b>  RET </b></p><p>  DATEDISPLAY ENDP ;101 調(diào)用后返回</p><p>  TIMEDISPLAY PROC NEAR ;102 時間顯示子程序</p><p> 

50、 MOV AH,2CH ;103</p><p>  INT 21H ;104</p><p>  MOV BX,10 ;105</p>

51、<p>  LEA DI,TIMEDIS ;106</p><p>  MOV AL,CH ;107 CH存時</p><p>  XOR AH,AH

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

53、 ;111</p><p>  MOV AL,CL ;112 CL存分</p><p>  XOR AH,AH ;113</p><p>  DIV BL

54、 ;114</p><p>  ADD AX,3030H ;115</p><p>  MOV [DI+6],AX ;116</p><p>  MOV AL,DH

55、 ;117 DH存秒</p><p>  XOR AH,AH ;118</p><p>  DIV BL ;119</p><p&

56、gt;  ADD AX,3030H ;120</p><p>  MOV [DI+11],AX ;121</p><p>  SHOW TIMEDIS ;122</p&

57、gt;<p><b>  RET </b></p><p>  TIMEDISPLAY ENDP ;123 時間調(diào)用返回</p><p>  CODE ENDS ;124</p><p&

58、gt;  END START ;125</p><p><b>  七、結(jié)果顯示</b></p><p>  八、感想、收獲及體會</p><p>  剛開始拿到這個程序的時候,首先想到應(yīng)該是從鍵盤輸入的這個字符跟大寫字母T,D,Q分別比較,如果和哪個字母的ASCI

59、I碼相等,就調(diào)用與此字母相應(yīng)的子程序,顯示日期,時間或者直接退出。</p><p>  在程序的開始,就已經(jīng)先定義了清屏上卷宏定義,制定了光標(biāo)位置??紤]到程序中多次要顯示字符串,所以將顯示字符串也作為一個宏定義,避免了代碼冗長,程序羅嗦,不清晰的麻煩。而在整個程序中,我們只有兩個子程序,日期顯示子程序和時間顯示子程序。</p><p>  在編寫日期顯示子程序時,先取CX中存的系統(tǒng)當(dāng)前日期

60、,存在AX中,作為被除數(shù),除以10,給各位加上30H,變?yōu)樗腁SCII碼。使存日月的DX入棧,以保護(hù)日月。指針指向DATEDIS字符串的最后一位,即年的最后一位,循環(huán)4次,將年的ASCII碼依次放入字符串 DATEDIS ' 00-00-0000' 的‘0000’位,隨后DX出棧還原。取DL中存的日,放入AL中,將高位AH清零,AX作為被除數(shù),重復(fù)轉(zhuǎn)換ASCII碼的步驟,指針減4,指向字符串 DATEDIS 

61、9; 00 - 00 - 0000'的日的第一位,將轉(zhuǎn)換后的日的ASCII碼放進(jìn)‘00’位。接著取DH中的月,重復(fù)日的步驟,直到將月放進(jìn)字符串。然后調(diào)用顯示宏定義,將轉(zhuǎn)換后的日期顯示出來。</p><p>  在顯示月的子程序中,在AX除以BL之后,即執(zhí)行DIV BL,其商送AL,余數(shù)送AH,如6月存放與DH中,除以BL之后,商為0,余數(shù)為6。分別存放在AL和AH之中,加上3030H之后,AX中的內(nèi)容為3

62、630H。由于定義DATEDIS為字節(jié)型,故存放時30H存放在低字節(jié),36H存放在高位字節(jié),顯示時,‘0’字符在第一個顯示,‘6’字符在第二個顯示,才會顯示‘06’。所以,SI指針應(yīng)指向第一個‘0’,即第一個字節(jié)空間。同理,顯示日和時間的時候也需要注意出現(xiàn)這種情況。</p><p>  在顯示完日期,時間后,若要退出系統(tǒng),則只能按Q退出,按其他鍵不起用。</p><p>  做這個程序的過

63、程中,我加深了對某些指令的理解,如push,pop,jmp指令。本次實驗,我覺得最大的收獲便是慢慢學(xué)會了獨立思考問題及解決問題,并且最終將自己的想法通過程序代碼來實現(xiàn),我感覺這是對自我的一種突破。乍一看到這個題目,感覺挺簡單啊,不就是用一個字符和規(guī)定的三個字符相比較,分別調(diào)用子程序么?可是真正在編寫程序的過程中,才發(fā)現(xiàn)想的容易,寫起來卻是另一會事,正如杜甫所說的“書到用時方恨少,事非經(jīng)過不知難?!逼鋵崒τ谶@種情況,我們極容易犯眼高手低的

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論