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