版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言課程設(shè)計顯示系統(tǒng)當(dāng)前時間與日期
- 匯編語言課程設(shè)計---系統(tǒng)時間顯示
- 《匯編語言》課程設(shè)計報告顯示系統(tǒng)時間
- 匯編語言課程設(shè)計報告---顯示系統(tǒng)時間
- 匯編語言課程設(shè)計--用匯編語言實現(xiàn)顯示系統(tǒng)時間的程序
- 匯編語言課程設(shè)計《定時顯示系統(tǒng)》
- 匯編語言課程設(shè)計_提取系統(tǒng)時間
- 匯編課程設(shè)計---顯示系統(tǒng)日期時間程序設(shè)計
- 匯編課程設(shè)計---顯示系統(tǒng)日期時間程序設(shè)計1
- 匯編課程設(shè)計---顯示系統(tǒng)日期時間程序設(shè)計1
- 匯編語言課程設(shè)計
- 匯編語言課程設(shè)計
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計--“霓虹燈”的模擬顯示
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計安排
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計報告a
- 匯編課程設(shè)計報告-系統(tǒng)時間顯示
- 匯編課程設(shè)計報告---顯示系統(tǒng)時間
評論
0/150
提交評論