版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</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è)計(jì)目的2</b></p><p><b> 2.3方案論證2</b
3、></p><p> 2.3.1 思路2</p><p> 2.3.2程序設(shè)計(jì)原理3</p><p> 2.3.3 用到的DOS系統(tǒng)功能3</p><p> 2.3.4 用到的BIOS系統(tǒng)功能4</p><p> 第三章 方案設(shè)計(jì)6</p><p><b>
4、 3.1 流程圖6</b></p><p> 3.2程序代碼設(shè)計(jì)8</p><p> 3.2.1主程序模塊的設(shè)計(jì)8</p><p> 3.2.2 日期顯示子程序模塊9</p><p> 3.2.3 時(shí)間顯示子程序模塊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é)與體會(huì)19</p><p>&l
6、t;b> 參考文獻(xiàn)20</b></p><p><b> 附錄21</b></p><p><b> 第一章 前 言</b></p><p> 作為最基本的編程語言之一,匯編語言的重要性勿庸置疑,因?yàn)樗軌蛲瓿稍S多其它語言所無法完成的功能。尤其在和硬件關(guān)系非常密切的程序或要提高運(yùn)算速度的程序
7、,即使是 C 語言也會(huì)有些力不從心,而匯編語言則能夠很好揚(yáng)長避短,最大限度地發(fā)揮硬件的性能。最重要的是微機(jī)原理和接口技術(shù)是一門實(shí)踐性強(qiáng)的學(xué)科,不但要求有較高的理論水平,而且還要求有實(shí)際的動(dòng)手能力,其中很多的原量、規(guī)則、現(xiàn)象等僅僅靠學(xué)習(xí)教科書是無法完全掌握的,必須通過實(shí)踐才能比較直觀和深刻的理解。 </p><p> 本課程設(shè)計(jì)的主要目的是提高實(shí)踐能力,包括提高匯編等語言的編程能力及對(duì)接口等硬件的理解分析能力和設(shè)
8、計(jì)接口電路的能力,在進(jìn)行課程設(shè)計(jì)的過程中,可以讓學(xué)生體驗(yàn)分析問題、提出解決方案、通過編程等手段實(shí)現(xiàn)解決方案、不斷調(diào)試最終達(dá)到設(shè)計(jì)要求的全過程,從而幫助學(xué)生系統(tǒng)地掌握微機(jī)原理的接口技術(shù)的相關(guān)知識(shí),達(dá)到將知識(shí)融會(huì)貫通的目的。</p><p> 本次課程設(shè)計(jì)我們組做的是數(shù)字顯示電子鐘,要求和系統(tǒng)時(shí)鐘一致。由于水平有限,該設(shè)計(jì)還存在了很多的不足,希望各位讀者的夠指出改正。</p><p> 第
9、二章 題目要求與方案論證</p><p><b> 2.1 題目要求</b></p><p> 數(shù)字顯示電子鐘: 利用微機(jī)現(xiàn)有資源,編寫程序在PC屏幕上顯示運(yùn)行的時(shí)鐘,要求和系統(tǒng)時(shí)鐘一致。</p><p><b> 2.2設(shè)計(jì)目的</b></p><p> 通過一個(gè)學(xué)期對(duì)《微機(jī)原理及接口
10、技術(shù)》學(xué)習(xí),掌握的知識(shí)還停留在理論的上。但是這是一門實(shí)踐性較強(qiáng)的課程,讓學(xué)生在學(xué)完該課程之后,通過本課程設(shè)計(jì)環(huán)節(jié)教學(xué),加深學(xué)生對(duì)“微機(jī)原理與接口技術(shù)”、“匯編語言"等課程知識(shí)的掌握與綜合運(yùn)用,,使學(xué)生將課堂所學(xué)的知識(shí)和實(shí)踐有機(jī)結(jié)合起來,初步掌握計(jì)算機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的步驟和接口設(shè)計(jì)的方法,提高分析和解決實(shí)際問題的能力。</p><p> 通過設(shè)計(jì)實(shí)踐,培養(yǎng)學(xué)生查閱專業(yè)資料,工具書或參考書,了解有關(guān)工業(yè)標(biāo)準(zhǔn)
11、,掌握現(xiàn)代設(shè)計(jì)手段和軟件工具,并能以圖紙和說明書表達(dá)設(shè)計(jì)思想和結(jié)果的能力。</p><p> 通過設(shè)計(jì),不但要培養(yǎng)和提高學(xué)生解決工程具體問題,動(dòng)腦動(dòng)手的技術(shù)工作能力,而且還要逐步建立科學(xué)正確的設(shè)計(jì)和科研思想,培養(yǎng)良好的設(shè)計(jì)習(xí)慣,牢固樹立實(shí)事求是和嚴(yán)肅認(rèn)真的工作態(tài)度。提高學(xué)生的創(chuàng)新意識(shí)及動(dòng)手操作能力,為后續(xù)各門計(jì)算機(jī)課程的學(xué)習(xí),以及畢業(yè)后從事微機(jī)硬件及軟件開發(fā)打下基礎(chǔ),積累初步的經(jīng)驗(yàn)。</p>&l
12、t;p><b> 2.3方案論證</b></p><p><b> 2.3.1 思路</b></p><p> 先建立顯示界面,再根據(jù)鍵盤輸入的字符判斷是顯示日期還是時(shí)間,然后調(diào)用DOS系統(tǒng)2AH(或2CH)號(hào)功能分別將系統(tǒng)的日期(或時(shí)間)取出,接著把時(shí)間(或日期)轉(zhuǎn)換成ASCII碼并存到指定的系統(tǒng)內(nèi)存區(qū)中,最后調(diào)用BIOS 中斷10
13、的13號(hào)功能將其在屏幕上顯示出來。</p><p> 2.3.2程序設(shè)計(jì)原理</p><p> 首先利用調(diào)用BIOS的中斷10的0號(hào)功能創(chuàng)建顯示窗口,選擇適當(dāng)?shù)谋尘昂颓熬暗?,使屏幕顯示更加完美。在數(shù)據(jù)段開辟兩個(gè)顯示緩沖區(qū),分別用來存儲(chǔ)系統(tǒng)時(shí)間及日期。根據(jù)鍵盤輸入的字符顯示相應(yīng)的內(nèi)容。假如輸入的是T,則進(jìn)入時(shí)間顯示子程序,調(diào)用DOS中斷21H的2CH號(hào)系統(tǒng)功能返回系統(tǒng)時(shí)間,再調(diào)用字符轉(zhuǎn)換
14、成ASCII碼的子程序分別將二進(jìn)制小時(shí)數(shù)、分鐘數(shù)、秒數(shù)轉(zhuǎn)換成ASCII碼并存入顯示緩沖區(qū),方便時(shí)間顯示時(shí)的調(diào)用。調(diào)用BIOS的中斷10的13號(hào)功能,定位光標(biāo)的開始位置,結(jié)合著將時(shí)間顯示在我們預(yù)先定義好的位置上。由于獲取了的系統(tǒng)時(shí)間不會(huì)自動(dòng)刷新,而我們要設(shè)計(jì)成刷新的方式來不斷獲取系統(tǒng)的時(shí)間,故需調(diào)用BIOS的中斷16的1號(hào)功能,這樣才能形成會(huì)跳動(dòng)的電子鐘,將不間斷地顯示時(shí)間。假如輸入的是D,則進(jìn)入日期顯示子程序,調(diào)用DOS中斷21H的2A
15、H號(hào)系統(tǒng)功能返回系統(tǒng)日期,再調(diào)用字符轉(zhuǎn)換成ASCII碼的子程序分別將二進(jìn)制年數(shù)、月數(shù)、日數(shù)轉(zhuǎn)換成ASCII碼并存入顯示緩沖區(qū),方便年月日顯示時(shí)的調(diào)用。調(diào)用BIOS的中斷10的13號(hào)功能,定位光標(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號(hào)功能的調(diào)用</p><p> 調(diào)用格式:MOV AH,1</p><p> INT 21H</p><p> 功能:調(diào)用無入口參數(shù),執(zhí)行時(shí)系統(tǒng)首先等待鍵盤輸入,待程序員按下任何一鍵,系統(tǒng)先檢查是否是Ctrl-Break鍵。如果是則退出,否則將鍵入的字符ASCII碼置入寄存器
17、,并在屏幕上顯示該字符。</p><p> 2)取日期——2AH號(hào)系統(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)取時(shí)間——2CH號(hào)系統(tǒng)功能調(diào)用</p><p> 入口參數(shù):AH=2CH</p><p> 出口參數(shù):CH=小時(shí)(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保存的時(shí)間。CX與DX中都是二進(jìn)制數(shù),要想在屏幕上顯示出來必須變成ASCII碼才行。</p><p> 4)返回操作系統(tǒng)——4CH號(hào)系統(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號(hào)功能調(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號(hào)功能調(diào)用 入口參數(shù) DH = 行號(hào)</p><p><b> DL = 列號(hào)</b></p><p><b> BH = 頁號(hào)</b></p><p> 功能:無出口參數(shù), 將光標(biāo)設(shè)置在指定的位置 </p><p> 3)顯示字符串——13號(hào)功能調(diào)用</
24、p><p> ES:BP=串地址 </p><p><b> CX=申長度 </b></p><p> DH,DL=起始行,列 </p><p><b> BH=頁號(hào)</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號(hào)功能調(diào)用調(diào)用格式:MOV AH, 01H INT 16H</p><p> 功能:用來查詢鍵盤緩沖區(qū),對(duì)鍵盤掃描但
27、不等待,并設(shè)置ZF標(biāo)志。若有按鍵操作(即鍵盤緩沖區(qū)不空),則ZF=0,AL中存放的是輸入的ASCII碼,AH中存放輸入字符的擴(kuò)展碼。若無鍵按下,則標(biāo)志位ZF=1。</p><p><b> 第三章 方案設(shè)計(jì)</b></p><p><b> 3.1 流程圖</b></p><p> 圖1:主程序流程圖
28、 圖2:顯示時(shí)間子程序流程圖</p><p> 圖3:顯示時(shí)間子程序流程圖</p><p><b> 3.2程序代碼設(shè)計(jì)</b></p><p> 根據(jù)設(shè)計(jì)思路及流程圖,設(shè)計(jì)系統(tǒng)為主-子程序結(jié)構(gòu),通過子程序調(diào)用和嵌套完成對(duì)時(shí)間、日期的顯示。因此自然分成三個(gè)部分——主程序、日期顯示子程序、時(shí)間顯示子程序。另外界面顯
29、示在本程序占較大比例故作一獨(dú)立模塊單獨(dú)設(shè)計(jì)。</p><p> 于是,程序代碼的設(shè)計(jì)共分四個(gè)主要的模塊進(jìn)行——主程序模塊、日期顯示子程序模塊、時(shí)間顯示子程序和界面顯示模塊。</p><p> 3.2.1主程序模塊的設(shè)計(jì)</p><p> 根據(jù)設(shè)計(jì)思路本程序主要實(shí)現(xiàn)從鍵盤輸入“D”可顯示系統(tǒng)當(dāng)前日期及星期幾;輸入“T”可顯示系統(tǒng)當(dāng)前時(shí)間;輸入“Q”返回操作系統(tǒng)。
30、主程序模塊主要完成對(duì)鍵盤鍵入字符判別及分別調(diào)用日期顯示子程序和時(shí)間顯示子程序。依次要求設(shè)計(jì)如下代碼:</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、示時(shí)間</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”時(shí)調(diào)用日期顯示子程序DATE,鍵入“T”時(shí)調(diào)用時(shí)間顯示子程序TIME。字符判斷程序包含在一循環(huán)內(nèi)可實(shí)現(xiàn)字符的連續(xù)判別。</p><p> 3.2.2 日期顯示子程序模塊</p><p> 日期顯示子程序模塊設(shè)計(jì)功能為實(shí)時(shí)調(diào)用系統(tǒng)日期并將日期信息轉(zhuǎn)化為ASCII碼存入日期
36、緩存顯示之。</p><p> 系統(tǒng)日期調(diào)用應(yīng)用2AH號(hào)系統(tǒng)功能。將年、月、日及星期存入CX、DH、 DL、AL。其都是二進(jìn)制數(shù),要想在屏幕上顯示出來必須變成ASCII碼才行。</p><p> 為此首先編寫一個(gè)將二進(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)用此子程序可使日期顯示子程序大為簡(jiǎn)化。</p><p> 顯示日期時(shí),年、月、日得顯示只需將其轉(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時(shí)注意日期緩存指針SI的變化,通過這種方法
42、依次將年份高兩位、年份低兩位、月份、日期存入日期緩存DBUFFER1。</p><p> 星期顯示時(shí),考慮到星期的表達(dá)有別于年、月、日。年、月、日可直接用數(shù)字表示,而星期習(xí)慣用英文縮寫表示。這樣星期顯示單獨(dú)編程。首先在數(shù)據(jù)段定義星期字符串:</p><p> DBUFFER2DB 'Sun.Mon.Tue.Wed.Thu.Fri.Sat.'</p>&l
43、t;p> 根據(jù)AL值對(duì)星期字符串指針DI做偏移找到星期顯示地址。由于寄存器有限需先將AX保存如DI內(nèi)。星期實(shí)現(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> 實(shí)現(xiàn)找到星期顯示地址。</p><p> 完成后應(yīng)用INT 10H的13號(hào)功能將年、月、日及星期顯示與銀幕制定位置。代碼如下:</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)用延時(shí)程序</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)可保時(shí)間信息連續(xù)刷新直到鍵盤鍵入字符。</p><p> 3.2.3 時(shí)間顯示子程序模塊</p><p> 此模塊與日期顯示模塊類似,同樣有二進(jìn)制轉(zhuǎn)換為ASCII碼并存入時(shí)間緩存的子程序BCDASC,和外循環(huán)結(jié)構(gòu)。具體程序如下:</p><p> TIM
51、E PROCNEAR ;顯示時(shí)間子程序</p><p> DISPLAY1: MOV SI,0</p><p> MOV BX,100</p><p><b> DIV BL</b></p><p> MOV AH,2CH ;取時(shí)間,CH:小時(shí);CL:分;DH:秒
52、</p><p><b> INT 21H</b></p><p> MOV AL,CH</p><p> CALL BCDASC ;小時(shí)轉(zhuǎn)換成ASCII存入時(shí)間緩存</p><p><b> INC SI</b></p><p> MOV
53、AL,CL</p><p> CALL BCDASC ;分鐘轉(zhuǎn)換成ASCII存入時(shí)間緩存</p><p><b> INC SI</b></p><p> MOV AL,DH</p><p> CALL BCDASC ;秒轉(zhuǎn)換成ASCII存入時(shí)間緩存</p><p&g
54、t; MOV BP,OFFSETDBUFFER;系統(tǒng)時(shí)間為黃色</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)用延時(shí)程序&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> 此部分程序完成對(duì)系統(tǒng)時(shí)間的調(diào)用并顯示并能實(shí)時(shí)刷新時(shí)間。</p><p> 3.2.
58、4 界面顯示模塊</p><p> 為了使顯示界面更加友好將界面設(shè)計(jì)成如下樣式:</p><p><b> 圖4 顯示界面</b></p><p> 以上界面的實(shí)現(xiàn)通過如下程序?qū)崿F(xiàn):</p><p> DATA SEGMENT ;數(shù)據(jù)段</p><p> SPACED
59、B 1000DUP('') ;定義25*40個(gè)空格</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(' ');時(shí)間緩沖區(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碼特殊字符的排列來實(shí)現(xiàn)。并用INT
69、10H的13號(hào)功能顯示。</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生成一個(gè)OB
70、J文件,檢查源程序中的錯(cuò)誤,并改正。</p><p> 3)鍵入連接命令LINK D:\ SHIZHONG.OBJ,再次鍵入HULILNGWEI回車,即可顯示結(jié)果。</p><p><b> 4.2 結(jié)果</b></p><p> ①:當(dāng)鍵盤輸入T時(shí)結(jié)果如下:</p><p> 圖 5輸入T時(shí)界面顯示</p
71、><p> ?、冢寒?dāng)鍵盤輸入D時(shí)結(jié)果如下:</p><p> 圖 6 輸入D時(shí)界面顯示</p><p> ③:當(dāng)鍵盤輸入Q時(shí)結(jié)果如下:</p><p> 圖 7 輸入Q時(shí)界面顯示</p><p><b> 4.3分析</b></p><p> 經(jīng)驗(yàn)證,當(dāng)從鍵盤輸入T時(shí)
72、,電子鐘只顯示時(shí)間,且與PC機(jī)系統(tǒng)時(shí)間保持一致,隨PC機(jī)變化而變化;當(dāng)從鍵盤輸入D時(shí),電子鐘只顯示日期和星期,且與PC機(jī)系統(tǒng)保持一致;當(dāng)從鍵盤輸入Q時(shí),返回DOS系統(tǒng)。當(dāng)不停地鍵入字符D或T時(shí),電子鐘可以不停的刷新。</p><p> 綜上所述,本次課程設(shè)計(jì)基本達(dá)到課題要求,實(shí)現(xiàn)了和系統(tǒng)時(shí)鐘一致。此外,我們?cè)诖嘶A(chǔ)上加以拓展,首先是創(chuàng)建了華麗的顯示見面,其次是實(shí)現(xiàn)了查詢功能,最后是我們所設(shè)計(jì)的數(shù)字顯示電子鐘還可
73、以顯示星期。</p><p> 總的來說,本次設(shè)計(jì)還是比較成功的。</p><p> 第五章 總結(jié)與體會(huì)</p><p> 很快兩個(gè)星期的課程設(shè)計(jì)就結(jié)束了,在本次實(shí)踐中我們學(xué)到了很多寶貴的知識(shí)和經(jīng)驗(yàn)。本次課程設(shè)計(jì)并不是一帆風(fēng)順的,期間-我們遇到過一些問題,有過喜悅,也有過失落,曾一度熱情高漲,也曾一度情緒低落,從開始時(shí)滿富盛激情到最后汗水背后的復(fù)雜心情,點(diǎn)點(diǎn)
74、滴滴無不令我們回味無長。</p><p> 通過近兩周的課程設(shè)計(jì),課程設(shè)計(jì)的基本目的達(dá)到了,我懂得了理論與實(shí)際相結(jié)合的重要性,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。</p>&
75、lt;p> 我想說,設(shè)計(jì)確實(shí)有些辛苦,但苦中也有樂,在如今單一的理論學(xué)習(xí)中,很少有機(jī)會(huì)能有實(shí)踐的機(jī)會(huì),但我們可以,而且設(shè)計(jì)也是一個(gè)團(tuán)隊(duì)的任務(wù),一起的工作可以讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,大學(xué)里一年的相處還趕不上這十來天的合作,我感覺我和同學(xué)們之間的距離更加近了;我想說,確實(shí)很累,但當(dāng)我們看到自己所做的成果時(shí),心中也不免產(chǎn)生興奮。也許有人不喜歡這類的工作,也許有人認(rèn)為設(shè)計(jì)的工作有些枯燥,但我們認(rèn)為無論
76、干什么,只要人生活的有意義就可。</p><p> 這個(gè)時(shí)代不歡迎孤獨(dú)的英雄,因?yàn)橐粋€(gè)人的能力畢竟有限,惟有善于合作的團(tuán)隊(duì)才能發(fā)揮出最大的能量。在這次課程設(shè)計(jì)中,我真正體會(huì)到了合作的重要性。在這次程序設(shè)計(jì)中我們四個(gè)人在一起,從要實(shí)現(xiàn)的功能到流程圖的繪制,從程序的編寫到程序的檢查,從程序的調(diào)試到實(shí)驗(yàn)報(bào)告的寫作,其間每一個(gè)過程都凝聚了我們組的力量。在遇到棘手的問題時(shí),我們總是一起討論,一起把問題解決。 </p
77、><p> 這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多專業(yè)知識(shí)問題,最后在老師和同學(xué)的幫助下,終于游逆而解。同時(shí),在別人的身上我們學(xué)也到很多實(shí)用的知識(shí),在此對(duì)給過我?guī)椭睦蠋熀透魑煌瑢W(xué)表示衷心的感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> 朱金鈞,麻新旗. 微型計(jì)算機(jī)原理及應(yīng)用技術(shù)(第二版).機(jī)械工業(yè)出版社,200
78、5</p><p> 楊立,趙丑民,曲鳳娟.微型計(jì)算機(jī)原理與接口技術(shù)學(xué)習(xí)與實(shí)驗(yàn)指導(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個(gè)空格</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(' ');時(shí)間緩沖區(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;顯示時(shí)間</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)用延時(shí)程序</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;顯示時(shí)間子程序</p><p> DISPLAY1: MOV SI,0</p><p> MOV AH,2CH;取時(shí)間,CH:小時(shí);CL:分鐘;DH:秒;DL:1/100秒</p><p> INT 21H</p><p> MOV AL,C
103、H</p><p> CALL BCDASC ;小時(shí)轉(zhuǎn)換成ASCII存入時(shí)間緩存</p><p><b> INC SI</b></p><p> MOV AL,CL</p><p> CALL BCDASC;分鐘轉(zhuǎn)換成ASCII存入時(shí)間緩存</p><p
104、><b> INC SI</b></p><p> MOV AL,DH</p><p> CALL BCDASC;秒轉(zhuǎn)換成ASCII存入時(shí)間緩存</p><p> MOV BP,OFFSETDBUFFER;系統(tǒng)時(shí)間為黃色</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)用延時(shí)程序</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;延時(shí)子程序</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í)間數(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 電子鐘課程設(shè)計(jì)----數(shù)字電子鐘的設(shè)計(jì)
- 數(shù)字電子鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)----數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘課程設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)報(bào)告--數(shù)字鐘設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告---數(shù)字電子鐘
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告 (2)
- 課程設(shè)計(jì)---數(shù)字電子鐘
- 數(shù)字電子鐘課程設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)
- 數(shù)字電子課程設(shè)計(jì)報(bào)告---多功能電子鐘
評(píng)論
0/150
提交評(píng)論