微機(jī)原理與接口課程設(shè)計(jì)--用匯編語(yǔ)言編寫(xiě)一個(gè)時(shí)鐘程序_第1頁(yè)
已閱讀1頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  引言</b></p><p>  21世紀(jì)是信息技術(shù)高度發(fā)展且得到廣泛應(yīng)用的時(shí)代,信息技術(shù)從多方面改變著人類(lèi)的生活、工作和思維方式。我們每一個(gè)人都應(yīng)當(dāng)學(xué)習(xí)信息技術(shù)、應(yīng)用信息技術(shù)。微型計(jì)算機(jī)原理與接口技術(shù)是我們計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)重要的一門(mén)基礎(chǔ)專(zhuān)業(yè)課之一,要求我們有較強(qiáng)的自學(xué)能力和分析解決問(wèn)題的能力以及實(shí)際動(dòng)手能力,其作用是為了培養(yǎng)學(xué)生善于用計(jì)算機(jī)作為工具。通過(guò)課

2、程設(shè)計(jì)掌握匯編語(yǔ)言的編程、調(diào)試,通過(guò)對(duì)芯片的學(xué)習(xí),初步了解微機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程及設(shè)計(jì)過(guò)程。</p><p>  長(zhǎng)期以來(lái),注重課本知識(shí),輕視實(shí)際動(dòng)手能力是我們學(xué)習(xí)中普遍從在的現(xiàn)象。進(jìn)行課程設(shè)計(jì)的目的就是要改變我們的這種學(xué)習(xí)方法,使我們即具備了理論知識(shí),也能夠解決實(shí)際學(xué)習(xí),生活工作方面遇到的問(wèn)題。讓我門(mén)把理論用到了實(shí)際中去,將知識(shí)變成實(shí)際的生產(chǎn)力,把理論與實(shí)際有效的結(jié)合起來(lái),讓我們對(duì)知識(shí)有了更深一步的學(xué)習(xí)。也促進(jìn)

3、了我們的學(xué)習(xí)積極心。也做到了手與腦的有效結(jié)合。</p><p>  通過(guò)課程設(shè)計(jì),也可以讓我們對(duì)所學(xué)的知識(shí)有了更一步的了解,并能掌握學(xué)習(xí)理論時(shí)沒(méi)有注意的細(xì)節(jié)。也會(huì)意識(shí)到程序的編寫(xiě)要注意沒(méi)一個(gè)細(xì)節(jié),每一個(gè)空格等,并能通過(guò)調(diào)試尋找錯(cuò)誤,改正錯(cuò)誤,解決問(wèn)題。計(jì)算機(jī)課程有兩種不同的方法:一是從理論入手;二是從實(shí)際入手。</p><p>  中國(guó)有上下五千年的歷史,都是應(yīng)用時(shí)間來(lái)記載的,時(shí)間就是金錢(qián)

4、,所以就從我們的生活和實(shí)際出發(fā),我們的每件事,每個(gè)計(jì)劃或是事件的安排都會(huì)受到時(shí)間的限制,而這次的課程設(shè)計(jì)也就是我們?nèi)粘I钪刑幪幾⒁獾?,一個(gè)有關(guān)時(shí)間的問(wèn)題。</p><p><b>  目錄</b></p><p><b>  引言1</b></p><p><b>  1. 概述3</b><

5、;/p><p>  1.1 課程設(shè)計(jì)的目的3</p><p>  1.2 課程設(shè)計(jì)的任務(wù)3</p><p>  1.3設(shè)計(jì)的題目3</p><p>  1.4 設(shè)計(jì)要求3</p><p>  2.總體方案設(shè)計(jì)4</p><p>  2.1 主程序設(shè)計(jì)思想4</p><

6、;p>  2.2 設(shè)計(jì)原理說(shuō)明4</p><p>  2.3 設(shè)計(jì)應(yīng)用的環(huán)境4</p><p><b>  3. 系統(tǒng)分析4</b></p><p><b>  4. 軟件設(shè)計(jì)5</b></p><p>  4.1程序流程圖5</p><p>  4.2程序

7、源代碼6</p><p>  5. 系統(tǒng)調(diào)試16</p><p>  5.1顯示系統(tǒng)時(shí)間16</p><p>  5.2按B鍵修改年月日16</p><p>  5.3按C鍵修改具體時(shí)間17</p><p>  6. 設(shè)計(jì)總結(jié)17</p><p>  7. 參考文獻(xiàn)17<

8、;/p><p><b>  概述</b></p><p>  1.1 課程設(shè)計(jì)的目的</p><p>  對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰Α⒄n程設(shè)計(jì)能力、書(shū)面及口頭表達(dá)能力進(jìn)行考核。</p><p>  匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)是在教學(xué)實(shí)踐基礎(chǔ)上進(jìn)行的一次大型實(shí)驗(yàn),也是對(duì)該課程所學(xué)理論知識(shí)的深化和提高

9、。因此,要求學(xué)生能綜合應(yīng)用所學(xué)知識(shí),設(shè)計(jì)與制造出具有較復(fù)雜功能的應(yīng)用系統(tǒng),并且在實(shí)驗(yàn)的基本技能方面上進(jìn)行一次全面的訓(xùn)練。</p><p>  培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成匯編程序課題的能力。使學(xué)生能夠較全面地鞏固和應(yīng)用課堂中所學(xué)的基本理論和程序設(shè)計(jì)方法,能夠較熟練地完成匯編語(yǔ)言程序的設(shè)計(jì)和調(diào)試。</p><p>  提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的基本素質(zhì)。

10、培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。</p><p>  1.2 課程設(shè)計(jì)的任務(wù)</p><p>  通過(guò)微型計(jì)算機(jī)原理與接口技術(shù)的課程設(shè)計(jì)可以讓我們學(xué)生更深一步的了解課本知識(shí),掌握編譯器的編譯環(huán)境

11、,從而能對(duì)自己所寫(xiě)的編程進(jìn)行不斷的改進(jìn),最終達(dá)到我們想要的結(jié)果。課程設(shè)計(jì)不但培養(yǎng)了我們的動(dòng)手能力,還激發(fā)了我門(mén)對(duì)課外知識(shí)的興趣,我們可以從圖書(shū)館,找到相關(guān)的書(shū)籍進(jìn)行學(xué)習(xí),也可以上網(wǎng)查閱到我們想要的東西。學(xué)到我們?cè)跁?shū)本上學(xué)不到的東西,從而開(kāi)闊我們的視野。</p><p><b>  設(shè)計(jì)的題目</b></p><p>  用匯編語(yǔ)言編寫(xiě)一個(gè)時(shí)鐘程序,再微機(jī)屏幕上顯示當(dāng)前

12、時(shí)間的年、月、日、時(shí)、分、秒。在程序起動(dòng)后可鍵入當(dāng)前時(shí)間,回車(chē)鍵按下后,開(kāi)始計(jì)時(shí),微機(jī)屏幕上顯示當(dāng)前時(shí)間XXXX年XX月XX日XX時(shí)XX分XX秒。并且可以進(jìn)行對(duì)時(shí)間的修改等操作。</p><p><b>  1.4 設(shè)計(jì)要求</b></p><p> ?。?)了解并掌握匯編語(yǔ)言設(shè)計(jì)的一般方法,具備初步的獨(dú)立分析的設(shè)計(jì)能力;

13、 </p><p> ?。?)初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)分析、程序編碼、測(cè)試運(yùn)行等基本方法和能力;</p><p>  (3)提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力。</p><p> ?。?)最后掌握用匯編語(yǔ)言編寫(xiě)程序,畫(huà)出程序流程圖,對(duì)程序進(jìn)行調(diào)試。</p><p><b>  2.總體方案設(shè)計(jì)&l

14、t;/b></p><p>  2.1 主程序設(shè)計(jì)思想</p><p>  此設(shè)計(jì)程序要求結(jié)構(gòu)化的顯示系統(tǒng)的時(shí)間和日期。程序要求能對(duì)時(shí)間的年月日和時(shí)分秒進(jìn)行修改并有退出選項(xiàng)的功能。我們可以設(shè)計(jì)三個(gè)選項(xiàng)以供用戶選擇:B對(duì)年月日進(jìn)行修改, C對(duì)時(shí)分秒進(jìn)行修改和Esc退出程序。三個(gè)選項(xiàng)分別可以用三個(gè)過(guò)程實(shí)現(xiàn)其功能。</p><p>  2.2 設(shè)計(jì)原理說(shuō)明</

15、p><p><b>  (1)日期時(shí)間顯示</b></p><p>  先在數(shù)據(jù)端開(kāi)一段顯示緩沖區(qū),用來(lái)存儲(chǔ)系統(tǒng)時(shí)間。調(diào)用DOS中斷,得到系統(tǒng)當(dāng)前時(shí)間,并將其二進(jìn)制轉(zhuǎn)換成ASCII碼。再分別將小時(shí)數(shù)、分鐘數(shù)、秒數(shù)存入顯示緩沖區(qū)。</p><p><b> ?。?)日期時(shí)間修改</b></p><p> 

16、 在修改時(shí)間的時(shí)候調(diào)用鍵盤(pán)輸入輸出程序?qū)崿F(xiàn)日期時(shí)鐘的修改功能,然后存入結(jié)束字符‘$’。調(diào)用DOS字符串顯示功能將日期時(shí)間顯示在顯示器上,調(diào)用屏幕的I/O中斷,定位光標(biāo)的開(kāi)始位置,將時(shí)間顯示在預(yù)先定義好的位置。</p><p><b> ?。?)延時(shí)程序</b></p><p>  把程序設(shè)計(jì)成用刷新的方式來(lái)不斷獲取系統(tǒng)的時(shí)間,這樣就有了會(huì)一秒一秒走動(dòng)的電子時(shí)鐘。在此過(guò)

17、程需要用到延時(shí)程序,所以我們把延時(shí)程序單獨(dú)做成一個(gè)子程序,然后在需要的時(shí)候調(diào)用它,使得時(shí)間的顯示程序更加精煉。</p><p>  2.3 設(shè)計(jì)應(yīng)用的環(huán)境</p><p><b>  硬件環(huán)境:PC機(jī)。</b></p><p>  軟件環(huán)境:Masm2009。</p><p><b>  系統(tǒng)分析</b&

18、gt;</p><p>  看時(shí)間已經(jīng)是我們每天都在干的事情,而且我們身邊的電子表,時(shí)鐘表,手表等都用了不同的方式在顯示著時(shí)間,這次的課程設(shè)計(jì)正是我們身邊這些時(shí)間顯示的結(jié)合,我們既可以看著它走動(dòng),也可以對(duì)它進(jìn)行修改,并且它顯示的時(shí)間與我們的電腦是同步的,當(dāng)然你改動(dòng)它的值,電腦上的時(shí)間也會(huì)改動(dòng)。所以這個(gè)設(shè)計(jì)對(duì)我來(lái)說(shuō)是意義很大的。</p><p>  它既用到了我們微機(jī)原理所學(xué)的知識(shí),也用到了

19、編譯器中涉及到的知識(shí),既可以讓我們看見(jiàn)它的實(shí)質(zhì),也可以從中學(xué)到很多編譯方面的知識(shí),為我們以后的學(xué)習(xí)打下了基礎(chǔ)。有了一個(gè)小小的設(shè)計(jì),我們就會(huì)邁進(jìn)一大步,了解更深的知識(shí)。</p><p>  此次設(shè)計(jì)也用到了DOS系統(tǒng)方面的知識(shí),讓我門(mén)對(duì)知識(shí)有了多角度的認(rèn)識(shí)。</p><p><b>  軟件設(shè)計(jì)</b></p><p><b>  程序

20、流程圖</b></p><p><b>  4.2程序源代碼</b></p><p>  DATA SEGMENT</p><p>  TN DB ' PLEASE INPUT THE NEW TIME (HH:MM:SS): ',0DH,0AH,'$' ;提示輸入時(shí)間的格式&l

21、t;/p><p>  TB DB ' PLEASE INPUT THE NEW DATE (YYYY:MM:DD): ',0DH,0AH,'$' ; 提示輸入日期的格式</p><p>  MESS DB ' TIME IS: ',0AH,0DH,'$'</p><p>  T_

22、BUFF DB 40 ;在數(shù)據(jù)段開(kāi)一段時(shí)間顯示緩沖區(qū) T_BUFF為名字</p><p><b>  DB ?</b></p><p>  DB 40 DUP (?)</p><p>  YEAR DW ?

23、 ;年</p><p>  MON DB ? ;月</p><p>  DAY DB ? ;日</p><p>  HOR DB ? ;小時(shí)</p><p> 

24、 MIN DB ? ;分鐘</p><p>  SEC DB ? ;秒</p><p>  DATA ENDS</p><p>  STACK SEGMENT STACK </p><p>  DB

25、 100 DUP(?)</p><p>  STACK ENDS</p><p>  CODE SEGMENT </p><p>  ASSUME CS:CODE , SS:STACK , DS:DATA ; 確定各個(gè)邏輯段的類(lèi)型</p><p><b>  START:<

26、/b></p><p>  DISPLAY: ;時(shí)間顯示部分</p><p>  MOV AX, SEG DATA</p><p>  MOV DS , AX</p><p>  MOV AX,STACK</p><p><b&

27、gt;  MOV SS,AX</b></p><p>  MOV BX , OFFSET T_BUFF ; 送T_BUFF的偏移地址到BX</p><p>  MOV AH , 2AH ; 調(diào)用DOS時(shí)間調(diào)用功能,功能號(hào):2AH,年,月,日分別保存在CX,DH,DL中</p&g

28、t;<p><b>  INT 21H</b></p><p>  MOV AX,CX ; 年設(shè)定</p><p>  CALL BCTD ; 調(diào)用進(jìn)制轉(zhuǎn)換子程序</p><p><b>  P

29、USH AX</b></p><p>  AND AH,0F0H ; 選取AH高四位</p><p>  MOV CL,4 ; 設(shè)置右循環(huán)的次數(shù)</p><p>  ROL AH,CL

30、 ; 右循環(huán)</p><p>  OR AH,30H ; 加30H得到ACSII碼</p><p>  MOV [BX],AH ; 將得到的結(jié)果送到T_BUFF緩沖區(qū)</p><p>  INC BX

31、 ; BX自加1,指針指向下一個(gè)緩沖區(qū)的下一個(gè)地址</p><p><b>  POP AX </b></p><p>  AND AH,0FH ; 選取低四位</p><p><b>  OR AH,30H</b>&l

32、t;/p><p>  MOV [BX],AH ; 將轉(zhuǎn)換后的低四位值送入緩沖區(qū)的第二個(gè)地址</p><p><b>  INC BX</b></p><p><b>  PUSH AX</b></p><p>  AND AL,0F0H

33、 ; 選取AL高四位</p><p>  MOV CL,4 ; 設(shè)置右循環(huán)的次數(shù)</p><p>  ROL AL,CL ; 右循環(huán)</p><p>  OR AL,30H

34、 ; 加30H得到ACSII碼</p><p>  MOV [BX],AL ; 將得到的結(jié)果送到T_BUFF緩沖區(qū)</p><p>  INC BX ; BX自加1,指針指向下一個(gè)緩沖區(qū)的下一個(gè)地址</p&

35、gt;<p><b>  POP AX </b></p><p>  AND AL,0FH ; 選取低四位</p><p><b>  OR AL,30H</b></p><p>  MOV [BX],AL

36、 ; 將轉(zhuǎn)換后的低四位值送入緩沖區(qū)的第二個(gè)地址</p><p><b>  INC BX</b></p><p>  ;---------------------</p><p>  MOV AL , ':' ;顯示分隔符號(hào)</p><p

37、>  MOV [BX] , AL</p><p><b>  INC BX</b></p><p>  ;-------------------------</p><p>  MOV AH , 2AH</p><p><b>  INT 21H</b></p><p&

38、gt;  MOV AL,DH ;月設(shè)定</p><p><b>  MOV AH,0</b></p><p><b>  CALL BCTD</b></p><p><b>  PUSH AX</b></p><p&g

39、t;  AND AL,0F0H</p><p><b>  MOV CL,4</b></p><p><b>  ROL AL,CL</b></p><p><b>  OR AL,30H</b></p><p>  MOV [BX],AL</p><p&g

40、t;<b>  INC BX</b></p><p><b>  POP AX</b></p><p>  AND AL,0FH</p><p><b>  OR AL,30H</b></p><p>  MOV [BX],AL</p><p><

41、b>  INC BX</b></p><p>  ;-------------------------------------------------------------------------</p><p>  MOV AL , ':' ;顯示分隔符號(hào)</p><p> 

42、 MOV [BX] , AL</p><p><b>  INC BX</b></p><p>  ;------------------------------------------------------------------------- </p><p>  MOV AH,2AH

43、 ;日設(shè)定</p><p><b>  INT 21H</b></p><p><b>  MOV AL,DL</b></p><p><b>  MOV AH,0</b></p><p><b>  CALL BCTD</b></

44、p><p><b>  PUSH AX</b></p><p>  AND AL,0F0H</p><p><b>  MOV CL,4</b></p><p><b>  ROL AL,CL</b></p><p><b>  OR AL,30H

45、</b></p><p>  MOV [BX],AL</p><p><b>  INC BX</b></p><p><b>  POP AX</b></p><p>  AND AL,0FH</p><p><b>  OR AL,30H</b

46、></p><p>  MOV [BX],AL</p><p><b>  INC BX</b></p><p>  ;----------------------------------------------------------</p><p>  MOV AL , '/'

47、 ;顯示分隔符號(hào)</p><p>  MOV [BX] , AL</p><p><b>  INC BX </b></p><p>  ;-------------------------------------------------------</p><p>  MOV

48、 AH , 2CH ; 調(diào)用DOS時(shí)間調(diào)用功能,功能號(hào):2CH,小時(shí),分鐘,秒數(shù)分別保存在CH,CL,DH中</p><p><b>  INT 21H</b></p><p>  MOV AL,CH ; 小時(shí)數(shù)設(shè)定</p><

49、p><b>  MOV AH,0</b></p><p>  CALL BCTD ; 調(diào)用進(jìn)制轉(zhuǎn)換子程序</p><p><b>  PUSH AX</b></p><p>  AND AL,0F0H

50、 ; 選取AL高四位</p><p>  MOV CL,4 ; 設(shè)置右循環(huán)的次數(shù)</p><p>  ROL AL,CL ; 右循環(huán)</p><p>  OR AL,30H

51、 ; 加30H得到ACSII碼</p><p>  MOV [BX],AL ; 將得到的結(jié)果送到T_BUFF緩沖區(qū)</p><p>  INC BX ; BX自加1,指針指向下一個(gè)緩沖區(qū)的下一個(gè)地址</p><p><b>

52、  POP AX </b></p><p>  AND AL,0FH ; 選取低四位</p><p><b>  OR AL,30H</b></p><p>  MOV [BX],AL ; 將轉(zhuǎn)換后的低四位值送入

53、緩沖區(qū)的第二個(gè)地址</p><p><b>  INC BX</b></p><p>  ;----------------------------------------------------------</p><p>  MOV AL , ':' ;顯示分隔符號(hào)&

54、lt;/p><p>  MOV [BX] , AL</p><p><b>  INC BX </b></p><p>  ;-------------------------------------------------------</p><p>  MOV AH , 2CH</p><p>

55、;<b>  INT 21H</b></p><p>  MOV AL,CL ;分鐘數(shù)設(shè)定</p><p><b>  MOV AH,0</b></p><p><b>  CALL BCTD</b></p><p

56、><b>  PUSH AX</b></p><p>  AND AL,0F0H</p><p><b>  MOV CL,4</b></p><p><b>  ROL AL,CL</b></p><p><b>  OR AL,30H</b>&l

57、t;/p><p>  MOV [BX],AL</p><p><b>  INC BX</b></p><p><b>  POP AX</b></p><p>  AND AL,0FH</p><p><b>  OR AL,30H</b></p&g

58、t;<p>  MOV [BX],AL</p><p><b>  INC BX</b></p><p>  ;-------------------------------------------------------------------------</p><p>  MOV AL , ':'

59、 ;顯示分隔符號(hào)</p><p>  MOV [BX] , AL</p><p><b>  INC BX</b></p><p>  ;------------------------------------------------------------------------- <

60、;/p><p>  MOV AH,2CH ;秒設(shè)定</p><p><b>  INT 21H</b></p><p><b>  MOV AL,DH</b></p><p><b>  MOV AH,0</b></

61、p><p><b>  CALL BCTD</b></p><p><b>  PUSH AX</b></p><p>  AND AL,0F0H</p><p><b>  MOV CL,4</b></p><p><b>  ROL AL,CL

62、</b></p><p><b>  OR AL,30H</b></p><p>  MOV [BX],AL</p><p><b>  INC BX</b></p><p><b>  POP AX</b></p><p>  AND AL

63、,0FH</p><p><b>  OR AL,30H</b></p><p>  MOV [BX],AL</p><p><b>  INC BX</b></p><p>  ;-----------------------------------------------------------

64、-----------</p><p>  MOV AL , '$' ;將字符串的結(jié)束位送至顯示緩沖區(qū)的最后一位</p><p>  MOV [BX] , AL</p><p>  ;---------------------------------------------------------

65、---------------</p><p>  PUSH BX ;置光標(biāo)位置 ,AH=2,BH=0 DH跟DL分別為行號(hào)與列號(hào),并入棧保護(hù)BX</p><p><b>  MOV AH,2</b></p><p><b>  MOV BH,0</b>&l

66、t;/p><p><b>  MOV DH,10</b></p><p><b>  MOV DL,31</b></p><p><b>  INT 10H</b></p><p><b>  POP BX</b></p><p>  

67、LEA DX,T_BUFF ; 送T_BUFF偏移地址到DX,并調(diào)用DOS顯示功能,功能號(hào)為9</p><p>  MOV AH , 9</p><p><b>  INT 21H</b></p><p>  PUSH BX ;置

68、光標(biāo)位置</p><p><b>  MOV AH,2</b></p><p><b>  MOV BH,0</b></p><p><b>  MOV DH,10</b></p><p><b>  MOV DL,21</b></p>&l

69、t;p><b>  INT 10H</b></p><p><b>  POP BX</b></p><p>  LEA DX,MESS</p><p><b>  MOV AH,9</b></p><p><b>  INT 21H</b><

70、/p><p>  ;-----------------------------</p><p>  CALL DELAY1 ;調(diào)用精確延時(shí)子程序</p><p>  MOV AH,1 ;調(diào)用鍵盤(pán)I/O中斷功能號(hào)1,獲取鍵值到AL</p><p><b>  INT 16H</b&

71、gt;</p><p>  CMP AL, 'B' ; 是B鍵,轉(zhuǎn)到日期修改程序</p><p>  JE BORRECT</p><p>  CMP AL, 'B' ; 是B鍵,轉(zhuǎn)到日期修改程序</p><p>  JE BORRECT</p>

72、;<p>  CMP AL,'C' ;是C鍵,轉(zhuǎn)到時(shí)間修改程序</p><p>  JE CORRECT</p><p>  CMP AL,'C' ;是C鍵,轉(zhuǎn)到時(shí)間修改程序 </p><p>  JE CORRECT </p><p>  

73、CMP AL,1BH</p><p>  JZ QUIT ;是ESC鍵,退出程序</p><p>  JMP DISPLAY</p><p><b>  QUIT:</b></p><p>  MOV AH,4CH ;程序終止功能號(hào)</p><

74、;p><b>  INT 21H</b></p><p><b>  RET</b></p><p>  ;-----------------二進(jìn)制轉(zhuǎn)BCD碼子程序--------------</p><p>  BCTD PROC NEAR </p><p><b>

75、  ;AX輸入?yún)?shù)</b></p><p>  ;AX輸出參數(shù),存放調(diào)整過(guò)的BCD碼</p><p>  MOV DX,AX</p><p>  MOV AX,0</p><p>  MOV CX,16 ;設(shè)循環(huán)次數(shù)</p><p><b>  BCTD1:</

76、b></p><p>  CLC ;清進(jìn)位標(biāo)志C</p><p>  RCL DX,1 ;通過(guò)進(jìn)位的循環(huán)右移</p><p>  ADC AL,AL ;帶進(jìn)位加法</p><p>  DAA ;加法的十進(jìn)制調(diào)整</p&

77、gt;<p>  XCHG AL,AH ;交換高、低八位</p><p>  ADC AL,AL</p><p><b>  DAA</b></p><p>  XCHG AL,AH</p><p>  LOOP BCTD1 ;循環(huán)次數(shù)保存在CX里</p>

78、;<p><b>  RET</b></p><p>  BCTD ENDP</p><p>  ;---------------精確延遲時(shí)間子程序---------------</p><p>  DELAY1 PROC </p><p>  MOV DX,04FFH ;循環(huán)次數(shù)</p

79、><p>  UP:XOR CX,CX</p><p><b>  A:NOP</b></p><p><b>  LOOP A</b></p><p><b>  DEC DX</b></p><p><b>  JNZ UP</b&g

80、t;</p><p><b>  RET</b></p><p>  DELAY1 ENDP</p><p>  ;---------------時(shí)間修改子程序------------</p><p>  CORRECT PROC </p><p>  CALL INPU

81、T ;調(diào)用鍵盤(pán)輸入子程序輸入數(shù)據(jù)</p><p>  MOV CH,HOR </p><p>  MOV CL,MIN</p><p>  MOV DH,SEC</p><p><b>  AND DL,0H</b></p><p>  MOV AH,2DH</p>&

82、lt;p><b>  INT 21H</b></p><p><b>  JMP START</b></p><p><b>  RET</b></p><p>  CORRECT ENDP</p><p>  ;---------------鍵盤(pán)輸入子程序-----

83、-----</p><p>  INPUT PROC </p><p>  PUSH AX ;入棧保護(hù)數(shù)據(jù)</p><p><b>  PUSH BX</b></p><p><b>  PUSH CX</b></p><p>&l

84、t;b>  PUSH DX</b></p><p><b>  PUSHF</b></p><p>  MOV DX,OFFSET TN ;顯示修改時(shí)間的格式提示</p><p>  MOV AH,09H</p><p><b>  INT 21H</b><

85、/p><p>  MOV DX , OFFSET T_BUFF ;數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)輸入</p><p>  MOV AH,0AH</p><p><b>  INT 21H</b></p><p><b>  AND DX,0H</b></p><p>  LEA BX,T

86、_BUFF</p><p><b>  INC BX</b></p><p><b>  INC BX</b></p><p>  MOV DH,[BX]</p><p>  SUB DH,30H</p><p><b>  INC BX</b><

87、/p><p>  MOV DL,[BX]</p><p>  SUB DL,30H</p><p><b>  MOV CL,10</b></p><p><b>  MOV AL,DH</b></p><p><b>  MUL CL</b></p&

88、gt;<p><b>  ADD AL,DL</b></p><p><b>  MOV CH,AL</b></p><p>  MOV HOR,AL</p><p><b>  INC BX</b></p><p><b>  INC BX</b

89、></p><p>  MOV DH,[BX]</p><p>  SUB DH,30H</p><p><b>  INC BX</b></p><p>  MOV DL,[BX]</p><p>  SUB DL,30H</p><p><b>  MO

90、V CL,10</b></p><p><b>  MOV AL,DH</b></p><p><b>  MUL CL</b></p><p><b>  ADD AL,DL</b></p><p><b>  MOV CL,AL</b>&l

91、t;/p><p>  MOV MIN,AL</p><p><b>  INC BX</b></p><p><b>  INC BX</b></p><p>  MOV DH,[BX]</p><p>  SUB DH,30H</p><p><b

92、>  INC BX</b></p><p>  MOV DL,[BX]</p><p>  SUB DL,30H</p><p><b>  MOV CL,10</b></p><p><b>  MOV AL,DH</b></p><p><b>

93、;  MUL CL</b></p><p><b>  ADD AL,DL</b></p><p><b>  MOV DH,AL</b></p><p>  MOV SEC,AL</p><p>  POPF ;出棧恢復(fù)數(shù)據(jù)</p>

94、;<p><b>  POP DX </b></p><p><b>  POP CX</b></p><p><b>  POP BX</b></p><p><b>  POP AX</b></p><p><b>  RET

95、</b></p><p>  INPUT ENDP</p><p>  ;---------------日期修改子程序------------</p><p>  BORRECT PROC </p><p>  CALL INPUT2 ;調(diào)用鍵盤(pán)輸入子程序輸入數(shù)據(jù)</p><p>

96、;  MOV CX,YEAR </p><p>  MOV DH,MON</p><p>  MOV DL,DAY</p><p>  MOV AH,2BH</p><p><b>  INT 21H</b></p><p><b>  JMP START</b></p

97、><p><b>  RET</b></p><p>  BORRECT ENDP</p><p>  ;---------------鍵盤(pán)輸入子程序----------</p><p>  INPUT2 PROC </p><p>  PUSH AX

98、;入棧保護(hù)數(shù)據(jù)</p><p><b>  PUSH BX</b></p><p><b>  PUSH CX</b></p><p><b>  PUSH DX</b></p><p><b>  PUSHF</b></p><p&g

99、t;  MOV DX,OFFSET TB ;顯示修改日期的格式提示</p><p>  MOV AH,09H</p><p><b>  INT 21H</b></p><p>  MOV DX , OFFSET T_BUFF ;數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)輸入</p><p>  MOV AH,0AH<

100、;/p><p><b>  INT 21H</b></p><p><b>  AND DX,0H</b></p><p>  LEA BX,T_BUFF</p><p><b>  INC BX</b></p><p><b>  INC BX&

101、lt;/b></p><p>  MOV DH,[BX]</p><p>  SUB DH,30H</p><p><b>  INC BX</b></p><p>  MOV DL,[BX]</p><p>  SUB DL,30H</p><p><b>

102、;  MOV CL,10</b></p><p><b>  MOV AL,DH</b></p><p><b>  MUL CL</b></p><p><b>  ADD AL,DL</b></p><p>  MOV AH,00H</p><

103、;p>  MOV CX,100</p><p><b>  MUL CX</b></p><p>  MOV YEAR,AX</p><p>  MOV AX,00H</p><p><b>  INC BX</b></p><p>  MOV DH,[BX]</

104、p><p>  SUB DH,30H</p><p><b>  INC BX</b></p><p>  MOV DL,[BX]</p><p>  SUB DL,30H</p><p><b>  MOV CL,10</b></p><p><b

105、>  MOV AL,DH</b></p><p><b>  MUL CL</b></p><p><b>  ADD AL,DL</b></p><p>  ADD YEAR,AX</p><p><b>  INC BX</b></p>&l

106、t;p><b>  INC BX</b></p><p>  MOV DH,[BX]</p><p>  SUB DH,30H</p><p><b>  INC BX</b></p><p>  MOV DL,[BX]</p><p>  SUB DL,30H<

107、/p><p><b>  MOV CL,10</b></p><p><b>  MOV AL,DH</b></p><p><b>  MUL CL</b></p><p><b>  ADD AL,DL</b></p><p>  

108、MOV MON,AL</p><p><b>  INC BX</b></p><p><b>  INC BX</b></p><p>  MOV DH,[BX]</p><p>  SUB DH,30H</p><p><b>  INC BX</b>

109、;</p><p>  MOV DL,[BX]</p><p>  SUB DL,30H</p><p><b>  MOV CL,10</b></p><p><b>  MOV AL,DH</b></p><p><b>  MUL CL</b>&l

110、t;/p><p><b>  ADD AL,DL</b></p><p>  MOV DAY,AL</p><p>  POPF ;出?;謴?fù)數(shù)據(jù)</p><p><b>  POP DX </b></p><p><b> 

111、 POP CX</b></p><p><b>  POP BX</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  INPUT2 ENDP</p><p>  ;---

112、-------------------------</p><p>  CODE ENDS</p><p><b>  END START</b></p><p><b>  系統(tǒng)調(diào)試</b></p><p><b>  顯示系統(tǒng)時(shí)間</b></p><p

113、><b>  按B鍵修改年月日</b></p><p>  說(shuō)明:修改日期時(shí),必須將B消除掉,才能按正確的格式修改日期。然后按下Enter鍵,系統(tǒng)會(huì)保存已修改好的值。輸入的格式為xxxx xx xx,要有空格。</p><p><b>  按C鍵修改具體時(shí)間</b></p><p>  說(shuō)明:修改時(shí)間時(shí),也要消除

114、C然后輸入正確的格式對(duì)時(shí)間進(jìn)行修改。按下enter鍵自動(dòng)保存時(shí)間。輸入的格式同上。</p><p><b>  設(shè)計(jì)總結(jié)</b></p><p>  為期一周的《微機(jī)原理課程設(shè)計(jì)》結(jié)束了,回想起這一周的課程設(shè)計(jì),頗有一些感慨。此次課程設(shè)計(jì)的題目對(duì)我來(lái)說(shuō)并不簡(jiǎn)單,由于匯編知識(shí)的匱乏,在前面幾天的時(shí)間基本上是把《微機(jī)原理與接口技術(shù)》上的例題看懂,同時(shí)查找一些關(guān)于匯編知識(shí)的

115、書(shū)籍,逐漸才摸索出編寫(xiě)時(shí)鐘程序設(shè)計(jì)的思路以及程序模塊的具體編寫(xiě)。盡管這一周的課程設(shè)計(jì)時(shí)間短暫并且困難重重,但是在解決困難的同時(shí)我也學(xué)到了許多課堂上學(xué)不到的東西。</p><p>  在整個(gè)設(shè)計(jì)過(guò)程中,我不但查閱了一些相關(guān)的資料,還得到了老師和同學(xué)們的幫助,無(wú)論在理論和實(shí)踐能力都得到了很大鍛煉,不但使我學(xué)到了很多知識(shí),還促使我能深入獨(dú)立思考一些問(wèn)題,這對(duì)我以后的學(xué)習(xí)和工作有很大的益處。當(dāng)然由于時(shí)間倉(cāng)促,加上我的編寫(xiě)

116、水平有限,這次課程設(shè)計(jì)也有很多有待改進(jìn)及完善的地方,還請(qǐng)老師指正,在以后的時(shí)間里我會(huì)進(jìn)一步進(jìn)行學(xué)習(xí)和完善。</p><p><b>  參考文獻(xiàn)</b></p><p> ?。?)譚浩強(qiáng)主編的《微型計(jì)算機(jī)原理與接口技術(shù)》(第三版)中國(guó)鐵道出版社;</p><p> ?。?)雷印勝、賈萍、胡曉鵬等主編的《匯編語(yǔ)言程序設(shè)計(jì)教程》科學(xué)出版社;<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論