課程設(shè)計報告---數(shù)字顯示電子鐘_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  課程 微機(jī)原理與接口技術(shù) </p><p>  題目 數(shù)字顯示電子鐘 </p><p>  系 別 物理與電子工程學(xué)院 </p><p><b>

2、;  目 錄</b></p><p>  第一章 前 言1</p><p>  第二章 題目要求與方案論證2</p><p>  2.1 題目要求2</p><p><b>  2.2設(shè)計目的2</b></p><p><b>  2.3方案論證2</b

3、></p><p>  2.3.1 思路2</p><p>  2.3.2程序設(shè)計原理3</p><p>  2.3.3 用到的DOS系統(tǒng)功能3</p><p>  2.3.4 用到的BIOS系統(tǒng)功能4</p><p>  第三章 方案設(shè)計6</p><p><b> 

4、 3.1 流程圖6</b></p><p>  3.2程序代碼設(shè)計8</p><p>  3.2.1主程序模塊的設(shè)計8</p><p>  3.2.2 日期顯示子程序模塊9</p><p>  3.2.3 時間顯示子程序模塊12</p><p>  3.2.4 界面顯示模塊13</p>

5、;<p>  第四章 結(jié)果與分析16</p><p>  4.1調(diào)試過程16</p><p><b>  4.2 結(jié)果16</b></p><p><b>  4.3分析18</b></p><p>  第五章 總結(jié)與體會19</p><p>&l

6、t;b>  參考文獻(xiàn)20</b></p><p><b>  附錄21</b></p><p><b>  第一章 前 言</b></p><p>  作為最基本的編程語言之一,匯編語言的重要性勿庸置疑,因為它能夠完成許多其它語言所無法完成的功能。尤其在和硬件關(guān)系非常密切的程序或要提高運(yùn)算速度的程序

7、,即使是 C 語言也會有些力不從心,而匯編語言則能夠很好揚(yáng)長避短,最大限度地發(fā)揮硬件的性能。最重要的是微機(jī)原理和接口技術(shù)是一門實踐性強(qiáng)的學(xué)科,不但要求有較高的理論水平,而且還要求有實際的動手能力,其中很多的原量、規(guī)則、現(xiàn)象等僅僅靠學(xué)習(xí)教科書是無法完全掌握的,必須通過實踐才能比較直觀和深刻的理解。 </p><p>  本課程設(shè)計的主要目的是提高實踐能力,包括提高匯編等語言的編程能力及對接口等硬件的理解分析能力和設(shè)

8、計接口電路的能力,在進(jìn)行課程設(shè)計的過程中,可以讓學(xué)生體驗分析問題、提出解決方案、通過編程等手段實現(xiàn)解決方案、不斷調(diào)試最終達(dá)到設(shè)計要求的全過程,從而幫助學(xué)生系統(tǒng)地掌握微機(jī)原理的接口技術(shù)的相關(guān)知識,達(dá)到將知識融會貫通的目的。</p><p>  本次課程設(shè)計我們組做的是數(shù)字顯示電子鐘,要求和系統(tǒng)時鐘一致。由于水平有限,該設(shè)計還存在了很多的不足,希望各位讀者的夠指出改正。</p><p>  第

9、二章 題目要求與方案論證</p><p><b>  2.1 題目要求</b></p><p>  數(shù)字顯示電子鐘: 利用微機(jī)現(xiàn)有資源,編寫程序在PC屏幕上顯示運(yùn)行的時鐘,要求和系統(tǒng)時鐘一致。</p><p><b>  2.2設(shè)計目的</b></p><p>  通過一個學(xué)期對《微機(jī)原理及接口

10、技術(shù)》學(xué)習(xí),掌握的知識還停留在理論的上。但是這是一門實踐性較強(qiáng)的課程,讓學(xué)生在學(xué)完該課程之后,通過本課程設(shè)計環(huán)節(jié)教學(xué),加深學(xué)生對“微機(jī)原理與接口技術(shù)”、“匯編語言"等課程知識的掌握與綜合運(yùn)用,,使學(xué)生將課堂所學(xué)的知識和實踐有機(jī)結(jié)合起來,初步掌握計算機(jī)應(yīng)用系統(tǒng)設(shè)計的步驟和接口設(shè)計的方法,提高分析和解決實際問題的能力。</p><p>  通過設(shè)計實踐,培養(yǎng)學(xué)生查閱專業(yè)資料,工具書或參考書,了解有關(guān)工業(yè)標(biāo)準(zhǔn)

11、,掌握現(xiàn)代設(shè)計手段和軟件工具,并能以圖紙和說明書表達(dá)設(shè)計思想和結(jié)果的能力。</p><p>  通過設(shè)計,不但要培養(yǎng)和提高學(xué)生解決工程具體問題,動腦動手的技術(shù)工作能力,而且還要逐步建立科學(xué)正確的設(shè)計和科研思想,培養(yǎng)良好的設(shè)計習(xí)慣,牢固樹立實事求是和嚴(yán)肅認(rèn)真的工作態(tài)度。提高學(xué)生的創(chuàng)新意識及動手操作能力,為后續(xù)各門計算機(jī)課程的學(xué)習(xí),以及畢業(yè)后從事微機(jī)硬件及軟件開發(fā)打下基礎(chǔ),積累初步的經(jīng)驗。</p>&l

12、t;p><b>  2.3方案論證</b></p><p><b>  2.3.1 思路</b></p><p>  先建立顯示界面,再根據(jù)鍵盤輸入的字符判斷是顯示日期還是時間,然后調(diào)用DOS系統(tǒng)2AH(或2CH)號功能分別將系統(tǒng)的日期(或時間)取出,接著把時間(或日期)轉(zhuǎn)換成ASCII碼并存到指定的系統(tǒng)內(nèi)存區(qū)中,最后調(diào)用BIOS 中斷10

13、的13號功能將其在屏幕上顯示出來。</p><p>  2.3.2程序設(shè)計原理</p><p>  首先利用調(diào)用BIOS的中斷10的0號功能創(chuàng)建顯示窗口,選擇適當(dāng)?shù)谋尘昂颓熬暗龋蛊聊伙@示更加完美。在數(shù)據(jù)段開辟兩個顯示緩沖區(qū),分別用來存儲系統(tǒng)時間及日期。根據(jù)鍵盤輸入的字符顯示相應(yīng)的內(nèi)容。假如輸入的是T,則進(jìn)入時間顯示子程序,調(diào)用DOS中斷21H的2CH號系統(tǒng)功能返回系統(tǒng)時間,再調(diào)用字符轉(zhuǎn)換

14、成ASCII碼的子程序分別將二進(jìn)制小時數(shù)、分鐘數(shù)、秒數(shù)轉(zhuǎn)換成ASCII碼并存入顯示緩沖區(qū),方便時間顯示時的調(diào)用。調(diào)用BIOS的中斷10的13號功能,定位光標(biāo)的開始位置,結(jié)合著將時間顯示在我們預(yù)先定義好的位置上。由于獲取了的系統(tǒng)時間不會自動刷新,而我們要設(shè)計成刷新的方式來不斷獲取系統(tǒng)的時間,故需調(diào)用BIOS的中斷16的1號功能,這樣才能形成會跳動的電子鐘,將不間斷地顯示時間。假如輸入的是D,則進(jìn)入日期顯示子程序,調(diào)用DOS中斷21H的2A

15、H號系統(tǒng)功能返回系統(tǒng)日期,再調(diào)用字符轉(zhuǎn)換成ASCII碼的子程序分別將二進(jìn)制年數(shù)、月數(shù)、日數(shù)轉(zhuǎn)換成ASCII碼并存入顯示緩沖區(qū),方便年月日顯示時的調(diào)用。調(diào)用BIOS的中斷10的13號功能,定位光標(biāo)的開始位置,結(jié)合著將日期顯示在我們預(yù)先定義好的位置上。由于獲取了的系統(tǒng)日期</p><p>  2.3.3 用到的DOS系統(tǒng)功能</p><p><b>  A:中斷21H:</b&

16、gt;</p><p>  1)鍵盤輸入單字符——1號功能的調(diào)用</p><p>  調(diào)用格式:MOV AH,1</p><p>  INT 21H</p><p>  功能:調(diào)用無入口參數(shù),執(zhí)行時系統(tǒng)首先等待鍵盤輸入,待程序員按下任何一鍵,系統(tǒng)先檢查是否是Ctrl-Break鍵。如果是則退出,否則將鍵入的字符ASCII碼置入寄存器

17、,并在屏幕上顯示該字符。</p><p>  2)取日期——2AH號系統(tǒng)功能調(diào)用</p><p>  入口參數(shù):AH=2AH</p><p>  出口參數(shù):CX=年份(1980~2099)</p><p>  DH=月份(1~12)</p><p>  DL=日(1~31)</p><p>  

18、AL=星期(0~6,0代表星期天)</p><p>  功能:調(diào)用取出由DOS保持的年、月、日及星期。CX、DH、 DL、AL中都是二進(jìn)制數(shù),要想在屏幕上顯示出來必須變成ASCII碼才行。</p><p>  3)取時間——2CH號系統(tǒng)功能調(diào)用</p><p>  入口參數(shù):AH=2CH</p><p>  出口參數(shù):CH=小時(0~23)&

19、lt;/p><p>  CL=分鐘(0~59)</p><p>  DH=秒(0~59)</p><p>  DL=1/100秒(0~99)</p><p>  功能:調(diào)用取出由DOS保存的時間。CX與DX中都是二進(jìn)制數(shù),要想在屏幕上顯示出來必須變成ASCII碼才行。</p><p>  4)返回操作系統(tǒng)——4CH號系統(tǒng)功

20、能調(diào)用</p><p>  調(diào)用格式:MOV AH,4CH</p><p>  INT 21H</p><p>  功能:調(diào)用無入口參數(shù),執(zhí)行結(jié)果是結(jié)束當(dāng)前正在執(zhí)行的程序,并返回DOS操作系統(tǒng)。</p><p>  2.3.4 用到的BIOS系統(tǒng)功能</p><p><b>  A:中斷10H:&l

21、t;/b></p><p>  1)設(shè)置顯示方式——0號功能調(diào)用入口參數(shù) AL = 顯示方式值</p><p>  00 40×25 黑白文本方式 </p><p>  01 40×25 彩色文本方式 </p><p>  02 80&#

22、215;25 黑白文本方式 </p><p>  03 80×25 彩色文本方式 </p><p>  04 320×320 彩色圖形方式 </p><p>  功能:無出口參數(shù),將顯示方式設(shè)置為指定形式</p><p>  2

23、)置光標(biāo)位置——2號功能調(diào)用 入口參數(shù) DH = 行號</p><p><b>  DL = 列號</b></p><p><b>  BH = 頁號</b></p><p>  功能:無出口參數(shù), 將光標(biāo)設(shè)置在指定的位置 </p><p>  3)顯示字符串——13號功能調(diào)用</

24、p><p>  ES:BP=串地址 </p><p><b>  CX=申長度 </b></p><p>  DH,DL=起始行,列 </p><p><b>  BH=頁號</b></p><p>  AL=0,BL=屬性 串:char,char,…

25、 </p><p>  AL=1,BL=屬性 串:char,char,…</p><p><b>  AL=2</b></p><p>  串:char,char,char,attr,…</p><p><b>  AL=3</b></p><p>  串:char,

26、char,char,attr,…</p><p>  功能:顯示字符串并設(shè)置顯示的屬性</p><p><b>  B:中斷16H:</b></p><p>  1)讀鍵盤緩沖區(qū)字節(jié)——1號功能調(diào)用調(diào)用格式:MOV AH, 01H    INT 16H</p><p>  功能:用來查詢鍵盤緩沖區(qū),對鍵盤掃描但

27、不等待,并設(shè)置ZF標(biāo)志。若有按鍵操作(即鍵盤緩沖區(qū)不空),則ZF=0,AL中存放的是輸入的ASCII碼,AH中存放輸入字符的擴(kuò)展碼。若無鍵按下,則標(biāo)志位ZF=1。</p><p><b>  第三章 方案設(shè)計</b></p><p><b>  3.1 流程圖</b></p><p>  圖1:主程序流程圖

28、 圖2:顯示時間子程序流程圖</p><p>  圖3:顯示時間子程序流程圖</p><p><b>  3.2程序代碼設(shè)計</b></p><p>  根據(jù)設(shè)計思路及流程圖,設(shè)計系統(tǒng)為主-子程序結(jié)構(gòu),通過子程序調(diào)用和嵌套完成對時間、日期的顯示。因此自然分成三個部分——主程序、日期顯示子程序、時間顯示子程序。另外界面顯

29、示在本程序占較大比例故作一獨立模塊單獨設(shè)計。</p><p>  于是,程序代碼的設(shè)計共分四個主要的模塊進(jìn)行——主程序模塊、日期顯示子程序模塊、時間顯示子程序和界面顯示模塊。</p><p>  3.2.1主程序模塊的設(shè)計</p><p>  根據(jù)設(shè)計思路本程序主要實現(xiàn)從鍵盤輸入“D”可顯示系統(tǒng)當(dāng)前日期及星期幾;輸入“T”可顯示系統(tǒng)當(dāng)前時間;輸入“Q”返回操作系統(tǒng)。

30、主程序模塊主要完成對鍵盤鍵入字符判別及分別調(diào)用日期顯示子程序和時間顯示子程序。依次要求設(shè)計如下代碼:</p><p>  CODE SEGMENT ;代碼段 </p><p>  ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK</p><p>  START:MOVAX,DATA ;裝填數(shù)據(jù)段

31、、附加段</p><p><b>  MOVDS,AX</b></p><p><b>  MOVES,AX</b></p><p><b>  ·</b></p><p><b>  ·</b></p><p&

32、gt;<b>  ·</b></p><p>  INT 21H</p><p>  MOVAH,1 ;從鍵盤輸入單字符</p><p>  INT 21H</p><p>  CMPAL,44H ;AL='D'?</p>&l

33、t;p>  JNE SHIJIAN</p><p>  CALL DATE ;顯示日期</p><p>  SHIJIAN:CMPAL,54H ;AL='T'?</p><p>  JNE EXIT</p><p>  CALL TIME ;顯

34、示時間</p><p>  EXIT:CMPAL,51H</p><p>  JNE START</p><p>  MOVAH,4CH ;返回DOS狀態(tài)</p><p>  INT 21H</p><p>  CODE ENDS</p><p><b>

35、  ENDSTART</b></p><p>  本段成程序完成當(dāng)鍵盤鍵入“D”時調(diào)用日期顯示子程序DATE,鍵入“T”時調(diào)用時間顯示子程序TIME。字符判斷程序包含在一循環(huán)內(nèi)可實現(xiàn)字符的連續(xù)判別。</p><p>  3.2.2 日期顯示子程序模塊</p><p>  日期顯示子程序模塊設(shè)計功能為實時調(diào)用系統(tǒng)日期并將日期信息轉(zhuǎn)化為ASCII碼存入日期

36、緩存顯示之。</p><p>  系統(tǒng)日期調(diào)用應(yīng)用2AH號系統(tǒng)功能。將年、月、日及星期存入CX、DH、 DL、AL。其都是二進(jìn)制數(shù),要想在屏幕上顯示出來必須變成ASCII碼才行。</p><p>  為此首先編寫一個將二進(jìn)制轉(zhuǎn)換為ASCII碼并存入日期緩存的子程序BCDASC1:</p><p>  BCDASC1PROC NEAR;日期數(shù)值轉(zhuǎn)換成ASCII

37、碼字符子程序</p><p><b>  PUSH BX</b></p><p><b>  CBW</b></p><p>  MOV BL,10</p><p><b>  DIV BL</b></p><p>  ADD AL,'

38、;0'</p><p><b>  INC SI</b></p><p>  ADD AH,'0'</p><p>  MOV WORD PTR DBUFFER1[SI],AX</p><p><b>  INC SI</b></p><p&g

39、t;<b>  POP BX</b></p><p><b>  RET</b></p><p>  BCDASC1ENDP</p><p>  調(diào)用此子程序可使日期顯示子程序大為簡化。</p><p>  顯示日期時,年、月、日得顯示只需將其轉(zhuǎn)存AL調(diào)用BCDASC1即可。但年的顯示需將其高

40、兩位,低兩位分開調(diào)用BCDASC1。</p><p><b>  如年的顯示:</b></p><p>  MOV AX,CX;將年的高兩位,低兩位分開</p><p>  MOV BX,100</p><p><b>  DIV BL</b></p><

41、p>  MOV BL,AH</p><p>  CALLBCDASC1;年份高兩位轉(zhuǎn)換成ASCII存入緩存</p><p>  MOV AL,BL</p><p>  CALLBCDASC1;年份低兩位轉(zhuǎn)換成ASCII存入緩存</p><p>  在調(diào)用BCDASC1時注意日期緩存指針SI的變化,通過這種方法

42、依次將年份高兩位、年份低兩位、月份、日期存入日期緩存DBUFFER1。</p><p>  星期顯示時,考慮到星期的表達(dá)有別于年、月、日。年、月、日可直接用數(shù)字表示,而星期習(xí)慣用英文縮寫表示。這樣星期顯示單獨編程。首先在數(shù)據(jù)段定義星期字符串:</p><p>  DBUFFER2DB 'Sun.Mon.Tue.Wed.Thu.Fri.Sat.'</p>&l

43、t;p>  根據(jù)AL值對星期字符串指針DI做偏移找到星期顯示地址。由于寄存器有限需先將AX保存如DI內(nèi)。星期實現(xiàn)代碼:</p><p>  MOV AX,DI;恢復(fù)AX</p><p>  XOR AH,AH;偏移星期地址</p><p>  SHL AL,1</p><p>  SHL AL,1

44、 </p><p>  LEA DI,DBUFFER2</p><p>  ADD DI,AX</p><p>  實現(xiàn)找到星期顯示地址。</p><p>  完成后應(yīng)用INT 10H的13號功能將年、月、日及星期顯示與銀幕制定位置。代碼如下:</p><p>  MOV BP, 串地址</

45、p><p>  MOV DX,制定位置</p><p>  MOV CX,串長</p><p>  MOV BX,004EH</p><p>  MOV AX,1301H</p><p><b>  INT 10H</b></p><p>  此段可將字符串安制定長

46、度,制定顏色,制定位置顯示與銀幕。</p><p>  以上程序段均包含于如下循環(huán)中:</p><p>  DATE PROCNEAR;顯示日期子程序</p><p>  DISPLAY: MOV AH,2AH ;取日期,CX:年份;DH:月</p><p>  ;份; DL:日期;AL:星期</p

47、><p>  INT 21H</p><p><b>  ·</b></p><p><b>  ·</b></p><p><b>  ·</b></p><p>  MOV AH,02H ;設(shè)置光標(biāo)位置位03

48、*00</p><p>  MOV DX,0300H</p><p><b>  MOV BH,0</b></p><p><b>  INT 10H</b></p><p>  CALL DELAY ;調(diào)用延時程序</p><p>  MOV AH,0

49、1H ;讀鍵盤緩沖區(qū)字符到AL寄存器</p><p><b>  INT 16H</b></p><p>  JE DISPLAY ;鍵盤緩沖區(qū)AL不變跳至DISPLAY循環(huán)</p><p>  JMP START</p><p><b>  RET</b></

50、p><p>  DATEENDP</p><p>  此循環(huán)可保時間信息連續(xù)刷新直到鍵盤鍵入字符。</p><p>  3.2.3 時間顯示子程序模塊</p><p>  此模塊與日期顯示模塊類似,同樣有二進(jìn)制轉(zhuǎn)換為ASCII碼并存入時間緩存的子程序BCDASC,和外循環(huán)結(jié)構(gòu)。具體程序如下:</p><p>  TIM

51、E PROCNEAR ;顯示時間子程序</p><p>  DISPLAY1: MOV SI,0</p><p>  MOV BX,100</p><p><b>  DIV BL</b></p><p>  MOV AH,2CH ;取時間,CH:小時;CL:分;DH:秒

52、</p><p><b>  INT 21H</b></p><p>  MOV AL,CH</p><p>  CALL BCDASC ;小時轉(zhuǎn)換成ASCII存入時間緩存</p><p><b>  INC SI</b></p><p>  MOV

53、AL,CL</p><p>  CALL BCDASC ;分鐘轉(zhuǎn)換成ASCII存入時間緩存</p><p><b>  INC SI</b></p><p>  MOV AL,DH</p><p>  CALL BCDASC ;秒轉(zhuǎn)換成ASCII存入時間緩存</p><p&g

54、t;  MOV BP,OFFSETDBUFFER;系統(tǒng)時間為黃色</p><p>  MOVDX,0D0DH</p><p><b>  MOVCX,20</b></p><p>  MOVBX,004EH</p><p>  MOVAX,1301H</p><p>  INT

55、 10H</p><p>  MOVAH,02H ;設(shè)置光標(biāo)位置</p><p>  MOVDX,0300H</p><p><b>  MOVBH,0</b></p><p>  INT 10H</p><p>  CALL DELAY ;調(diào)用延時程序&l

56、t;/p><p>  MOVAH,01H;讀鍵盤緩沖區(qū)字符到AL寄存器</p><p>  INT 16H</p><p>  JE DISPLAY1;鍵盤緩沖區(qū)AL不變跳至DISPLAY循環(huán)</p><p>  JMP START</p><p>  MOV AX,4C00H<

57、/p><p><b>  INT 21H</b></p><p><b>  RET</b></p><p><b>  TIME ENDP</b></p><p>  此部分程序完成對系統(tǒng)時間的調(diào)用并顯示并能實時刷新時間。</p><p>  3.2.

58、4 界面顯示模塊</p><p>  為了使顯示界面更加友好將界面設(shè)計成如下樣式:</p><p><b>  圖4 顯示界面</b></p><p>  以上界面的實現(xiàn)通過如下程序?qū)崿F(xiàn):</p><p>  DATA SEGMENT ;數(shù)據(jù)段</p><p>  SPACED

59、B 1000DUP('') ;定義25*40個空格</p><p>  PATTERNDB 3 DUP('*'),0C9H,26 DUP(0CDH),0BBH,3DUP('*')</p><p><b>  ;定義顯示區(qū)圖形</b></p><p>  DB 3 DU

60、P('*'),0BAH,1DUP('DATE:'),21DUP(20H),0BAH, 3 DUP(' *')</p><p>  DB 3 DUP('*'),0BAH,1DUP('TIME:'),21DUP(20H),0BAH, 3 DUP(' *')</p><p>  DB 3

61、DUP('*'),0BAH,1DUP('WEEK:'),21DUP(20H),0BAH, 3 DUP(' *')</p><p>  DB 3 DUP('*'),0C8H,26 DUP(0CDH),0BCH,3DUP('*')</p><p>  DBUFFERDB ' ',7 D

62、UP(':'),12 DUP(' ');時間緩沖區(qū)</p><p>  DBUFFER1DB ' ',10DUP('/'),9 DUP(' ');日期緩沖區(qū)</p><p>  DBUFFER2DB 'Sun.Mon.Tue.Wed.Thu.Fri.Sat.';星期緩存區(qū)&l

63、t;/p><p>  STR DB 0DH,0AH,'PLEASE INPUT DATE(D) ORTIME(T)OR QUIT(Q),$'</p><p><b>  ;提示信息</b></p><p><b>  ·</b></p><p><b>  &#

64、183;</b></p><p><b>  ·</b></p><p>  MOVAX,0001H ;設(shè)置顯示方式為彩色文本方式</p><p>  INT 10H</p><p>  MOVAX,DATA ;裝填數(shù)據(jù)段、附加段</p>

65、<p><b>  MOVDS,AX</b></p><p><b>  MOVES,AX</b></p><p>  MOVBP,OFFSETSPACE ;顯示25*40空格</p><p>  MOVDX,0B00H ;起示位置是0B行00列</p><p&

66、gt;  MOVCX,1000 ;串長為1000</p><p>  MOVBX,0040H ;文本底色為紅色</p><p>  MOVAX,1300H</p><p>  INT 10H</p><p>  MOVBP,OFFSETPATTERN ;顯示矩形條</p>&l

67、t;p>  MOVDX,0B00H ;起示位置是0B行00列</p><p>  MOVCX,200 ;串長為1000</p><p>  MOVBX,003EH ;設(shè)置矩形條為黃色</p><p>  MOVAX,1301H</p><p><b>  INT 10H&

68、lt;/b></p><p>  LEA DX,STR;顯示提示信息</p><p><b>  MOVAH,9</b></p><p><b>  ···</b></p><p>  顯示界面主要通擴(kuò)展ASCII碼特殊字符的排列來實現(xiàn)。并用INT

69、10H的13號功能顯示。</p><p><b>  第四章 結(jié)果與分析</b></p><p><b>  4.1調(diào)試過程</b></p><p>  1)編譯源文件,命名為SHIZHONG.ASM,并保存于D盤</p><p>  2)鍵入命令MASM D:\SHIZHONG.ASM生成一個OB

70、J文件,檢查源程序中的錯誤,并改正。</p><p>  3)鍵入連接命令LINK D:\ SHIZHONG.OBJ,再次鍵入HULILNGWEI回車,即可顯示結(jié)果。</p><p><b>  4.2 結(jié)果</b></p><p> ?、伲寒?dāng)鍵盤輸入T時結(jié)果如下:</p><p>  圖 5輸入T時界面顯示</p

71、><p> ?、冢寒?dāng)鍵盤輸入D時結(jié)果如下:</p><p>  圖 6 輸入D時界面顯示</p><p> ?、郏寒?dāng)鍵盤輸入Q時結(jié)果如下:</p><p>  圖 7 輸入Q時界面顯示</p><p><b>  4.3分析</b></p><p>  經(jīng)驗證,當(dāng)從鍵盤輸入T時

72、,電子鐘只顯示時間,且與PC機(jī)系統(tǒng)時間保持一致,隨PC機(jī)變化而變化;當(dāng)從鍵盤輸入D時,電子鐘只顯示日期和星期,且與PC機(jī)系統(tǒng)保持一致;當(dāng)從鍵盤輸入Q時,返回DOS系統(tǒng)。當(dāng)不停地鍵入字符D或T時,電子鐘可以不停的刷新。</p><p>  綜上所述,本次課程設(shè)計基本達(dá)到課題要求,實現(xiàn)了和系統(tǒng)時鐘一致。此外,我們在此基礎(chǔ)上加以拓展,首先是創(chuàng)建了華麗的顯示見面,其次是實現(xiàn)了查詢功能,最后是我們所設(shè)計的數(shù)字顯示電子鐘還可

73、以顯示星期。</p><p>  總的來說,本次設(shè)計還是比較成功的。</p><p>  第五章 總結(jié)與體會</p><p>  很快兩個星期的課程設(shè)計就結(jié)束了,在本次實踐中我們學(xué)到了很多寶貴的知識和經(jīng)驗。本次課程設(shè)計并不是一帆風(fēng)順的,期間-我們遇到過一些問題,有過喜悅,也有過失落,曾一度熱情高漲,也曾一度情緒低落,從開始時滿富盛激情到最后汗水背后的復(fù)雜心情,點點

74、滴滴無不令我們回味無長。</p><p>  通過近兩周的課程設(shè)計,課程設(shè)計的基本目的達(dá)到了,我懂得了理論與實際相結(jié)合的重要性,只有把所學(xué)的理論知識與實踐相結(jié)合起來,才能提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。</p>&

75、lt;p>  我想說,設(shè)計確實有些辛苦,但苦中也有樂,在如今單一的理論學(xué)習(xí)中,很少有機(jī)會能有實踐的機(jī)會,但我們可以,而且設(shè)計也是一個團(tuán)隊的任務(wù),一起的工作可以讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,大學(xué)里一年的相處還趕不上這十來天的合作,我感覺我和同學(xué)們之間的距離更加近了;我想說,確實很累,但當(dāng)我們看到自己所做的成果時,心中也不免產(chǎn)生興奮。也許有人不喜歡這類的工作,也許有人認(rèn)為設(shè)計的工作有些枯燥,但我們認(rèn)為無論

76、干什么,只要人生活的有意義就可。</p><p>  這個時代不歡迎孤獨的英雄,因為一個人的能力畢竟有限,惟有善于合作的團(tuán)隊才能發(fā)揮出最大的能量。在這次課程設(shè)計中,我真正體會到了合作的重要性。在這次程序設(shè)計中我們四個人在一起,從要實現(xiàn)的功能到流程圖的繪制,從程序的編寫到程序的檢查,從程序的調(diào)試到實驗報告的寫作,其間每一個過程都凝聚了我們組的力量。在遇到棘手的問題時,我們總是一起討論,一起把問題解決。 </p

77、><p>  這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多專業(yè)知識問題,最后在老師和同學(xué)的幫助下,終于游逆而解。同時,在別人的身上我們學(xué)也到很多實用的知識,在此對給過我?guī)椭睦蠋熀透魑煌瑢W(xué)表示衷心的感謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  朱金鈞,麻新旗. 微型計算機(jī)原理及應(yīng)用技術(shù)(第二版).機(jī)械工業(yè)出版社,200

78、5</p><p>  楊立,趙丑民,曲鳳娟.微型計算機(jī)原理與接口技術(shù)學(xué)習(xí)與實驗指導(dǎo)(第一版).中國水利水電出版社,2008</p><p><b>  附錄</b></p><p><b>  程序源代碼:</b></p><p>  STACKSEGMENTSTACK

79、 ;堆棧段</p><p>  DW200DUP(?)</p><p>  STACKENDS</p><p>  DATA SEGMENT ;數(shù)據(jù)段</p><p>  SPACEDB 1000DUP('')

80、 ;定義25*40個空格</p><p>  PATTERNDB 3 DUP('*'),0C9H,26 DUP(0CDH),0BBH,3DUP('*');定義顯示區(qū)圖形</p><p>  DB 3 DUP('*'),0BAH,1DUP('DATE:'),21DUP(20H),0BAH, 3 DUP(

81、9; *')</p><p>  DB 3 DUP('*'),0BAH,1DUP('TIME:'),21DUP(20H),0BAH, 3 DUP(' *')</p><p>  DB 3 DUP('*'),0BAH,1DUP('WEEK:'),21DUP(20H),0BAH, 3 DUP(&

82、#39; *')</p><p>  DB 3 DUP('*'),0C8H,26 DUP(0CDH),0BCH,3DUP('*')</p><p>  DBUFFERDB ' ',7 DUP(':'),12 DUP(' ');時間緩沖區(qū)</p><p>  

83、DBUFFER1DB ' ',10DUP('/'),9 DUP(' ');日期緩沖區(qū)</p><p>  DBUFFER2DB 'Sun.Mon.Tue.Wed.Thu.Fri.Sat.';星期緩存區(qū)</p><p>  STRDB 0DH,0AH,'PLEASE INPUT DAT

84、E(D) ORTIME(T)OR QUIT(Q),$'</p><p><b>  ;提示信息</b></p><p><b>  DATA ENDS</b></p><p>  CODE SEGMENT ;代碼段</p><p>  ASSUMECS:CODE

85、,DS:DATA,ES:DATA,SS:STACK</p><p>  START:MOVAX,DATA ;裝填數(shù)據(jù)段、附加段</p><p><b>  MOVDS,AX</b></p><p><b>  MOVES,AX</b></p><p>  MOV

86、AX,0001H ;設(shè)置顯示方式為彩色文本方式</p><p>  INT 10H</p><p>  MOVBP,OFFSETSPACE ;顯示25*40空格</p><p>  MOVDX,0B00H ;起示位置是0B行00列</p><p>  MOVCX,1000

87、 ;串長為1000</p><p>  MOVBX,0040H ;文本底色為紅色</p><p>  MOVAX,1300H</p><p>  INT 10H</p><p>  MOVBP,OFFSETPATTERN ;顯示矩形條</p><p>  MOVD

88、X,0B00H ;起示位置是0B行00列</p><p>  MOVCX,200 ;串長為200</p><p>  MOVBX,003EH ;設(shè)置矩形條為黃色</p><p>  MOVAX,1301H</p><p><b>  INT 10H</b><

89、;/p><p>  LEA DX,STR ;顯示提示信息</p><p><b>  MOVAH,9</b></p><p>  INT 21H</p><p>  MOVAH,1 ;從鍵盤輸入單字符</p><p>  INT 21H<

90、/p><p>  CMPAL,44H;AL='D'?</p><p>  JNE SHIJIAN</p><p>  CALL DATE;顯示日期</p><p>  SHIJIAN:CMPAL,54H ;AL='T'?</p><p

91、>  JNE EXIT</p><p>  CALL TIME;顯示時間</p><p>  EXIT: CMPAL,51H</p><p>  JNE START</p><p>  MOVAH,4CH ;返回DOS狀態(tài)</p><p>  INT 21

92、H</p><p>  DATE PROCNEAR;顯示日期子程序</p><p>  DISPLAY: MOV AH,2AH;取日期,CX:年份;DH:月份;DL:日期;AL:星期</p><p>  INT 21H</p><p>  MOV DI,AX;保存AL</p>

93、<p>  MOV SI,0;SI日期緩存區(qū)指針</p><p>  MOV AX,CX</p><p>  MOV BX,100</p><p><b>  DIV BL</b></p><p>  MOV BL,AH</p><p>  CALL

94、BCDASC1;年份高兩位轉(zhuǎn)換成ASCII存入緩存</p><p>  MOV AL,BL</p><p>  CALLBCDASC1;年份低兩位轉(zhuǎn)換成ASCII存入緩存</p><p><b>  INC SI</b></p><p>  MOV AL,DH</p>&

95、lt;p>  CALLBCDASC1;月份轉(zhuǎn)換成ASCII存入緩存</p><p><b>  INC SI</b></p><p>  MOV AL,DL</p><p>  CALLBCDASC1;日期轉(zhuǎn)換成ASCII存入緩存</p><p>  MOV BP,OFFSET

96、 DBUFFER1;系統(tǒng)日期為黃色</p><p>  MOV DX,0C0DH</p><p>  MOV CX,20</p><p>  MOV BX,004EH</p><p>  MOV AX,1301H</p><p>  INT 10H</p><p

97、>  MOV AX,DI;恢復(fù)AX</p><p>  XOR AH,AH;偏移星期地址</p><p>  SHL AL,1</p><p>  SHL AL,1 </p><p>  LEA DI,DBUFFER2</p><p>  ADD DI,AX

98、</p><p>  MOV BP,DI;系統(tǒng)星期為黃色</p><p>  MOV DX,0E0DH</p><p><b>  MOV CX,4</b></p><p>  MOV BX,004EH</p><p>  MOV AX,1301H</p>

99、<p><b>  INT 10H</b></p><p>  MOV AH,02H;設(shè)置光標(biāo)位置位03*00</p><p>  MOV DX,0300H</p><p><b>  MOV BH,0</b></p><p><b>  INT 1

100、0H</b></p><p>  CALL DELAY;調(diào)用延時程序</p><p>  MOV AH,01H;讀鍵盤緩沖區(qū)字符到AL寄存器</p><p><b>  INT 16H</b></p><p>  JE DISPLAY;鍵盤緩沖區(qū)AL不變跳至DIS

101、PLAY循環(huán)</p><p>  JMP START</p><p>  MOV AX,4C00H</p><p><b>  INT 21H</b></p><p><b>  RET</b></p><p>  DATEENDP</p&g

102、t;<p>  TIME PROCNEAR;顯示時間子程序</p><p>  DISPLAY1: MOV SI,0</p><p>  MOV AH,2CH;取時間,CH:小時;CL:分鐘;DH:秒;DL:1/100秒</p><p>  INT 21H</p><p>  MOV AL,C

103、H</p><p>  CALL BCDASC ;小時轉(zhuǎn)換成ASCII存入時間緩存</p><p><b>  INC SI</b></p><p>  MOV AL,CL</p><p>  CALL BCDASC;分鐘轉(zhuǎn)換成ASCII存入時間緩存</p><p

104、><b>  INC SI</b></p><p>  MOV AL,DH</p><p>  CALL BCDASC;秒轉(zhuǎn)換成ASCII存入時間緩存</p><p>  MOV BP,OFFSETDBUFFER;系統(tǒng)時間為黃色</p><p>  MOVDX,0D0DH<

105、/p><p><b>  MOVCX,20</b></p><p>  MOVBX,004EH</p><p>  MOVAX,1301H</p><p>  INT 10H</p><p>  MOVAH,02H;設(shè)置光標(biāo)位置</p><p>  

106、MOVDX,0300H</p><p><b>  MOVBH,0</b></p><p>  INT 10H</p><p>  CALL DELAY;調(diào)用延時程序</p><p>  MOVAH,01H;讀鍵盤緩沖區(qū)字符到AL寄存器</p><p>  I

107、NT 16H</p><p>  JE DISPLAY1;鍵盤緩沖區(qū)AL不變跳至DISPLAY循環(huán)</p><p>  JMP START</p><p>  MOV AX,4C00H</p><p><b>  INT 21H</b></p><p><b&g

108、t;  RET</b></p><p><b>  TIME ENDP</b></p><p>  DELAYPROC NEAR;延時子程序</p><p>  MOVBX,0018H</p><p>  RE:MOVCX,0FFFFH</p><p>  R

109、EA:LOOP REA</p><p><b>  DECBX</b></p><p><b>  JNZ RE </b></p><p><b>  RET</b></p><p>  DELAYENDP</p><p>  BCDASC

110、 PROCNEAR;時間數(shù)值轉(zhuǎn)換成ASCII碼字符子程序</p><p><b>  PUSH BX</b></p><p><b>  CBW</b></p><p><b>  MOVBL,10</b></p><p><b>  DIV B

111、L</b></p><p>  ADDAL,'0'</p><p>  INC SI</p><p>  ADDAH,'0'</p><p>  MOVWORD PTR DBUFFER[SI],AX</p><p>  INC SI</p>

112、<p>  POP BX</p><p><b>  RET</b></p><p>  BCDASC ENDP</p><p>  BCDASC1PROC NEAR;日期數(shù)值轉(zhuǎn)換成ASCII碼字符子程序</p><p><b>  PUSH BX</b><

113、/p><p><b>  CBW</b></p><p>  MOV BL,10</p><p><b>  DIV BL</b></p><p>  ADD AL,'0'</p><p><b>  INC SI</b><

114、;/p><p>  ADD AH,'0'</p><p>  MOV WORD PTR DBUFFER1[SI],AX</p><p><b>  INC SI</b></p><p><b>  POP BX</b></p><p><b>

溫馨提示

  • 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

提交評論