2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《微機(jī)原理與接口技術(shù)》課程設(shè)計</p><p>  題目: 顯示系統(tǒng)時間的程序</p><p>  學(xué)生姓名: </p><p>  學(xué) 號: </p><p>  院 系: 信息工程與科學(xué)學(xué)院

2、</p><p>  專 業(yè): 電氣自動化技術(shù) </p><p>  指導(dǎo)教師: </p><p>  2015年12月23日 </p><p><b>  目 錄</b></p><p>  1 設(shè)計的目的要求

3、1</p><p>  1.1 設(shè)計目的1</p><p>  1.2 設(shè)計任務(wù)2</p><p>  1.3 具體要求2</p><p><b>  2任務(wù)原理分析2</b></p><p>  2.1任務(wù)總體分析2</p><p>  2.2子程序分析3&l

4、t;/p><p>  2.2.1 子程序13</p><p>  2.2.2 子程序24</p><p>  2.2.3 子程序37</p><p>  2.3 拓展設(shè)計及功能說明9</p><p>  2.4 程序設(shè)計的主流程圖9</p><p><b>  3 方案比較10

5、</b></p><p>  3.1 方案110</p><p>  3.1.1 原理說明10</p><p>  3.1.2 相關(guān)理論知識11</p><p>  3.1.3 方案1的流程圖12</p><p>  3.2 方案213</p><p>  3.2.1 原理

6、說明13</p><p>  4 程序的調(diào)試過程14</p><p>  5 調(diào)試過程中的問題16</p><p><b>  6 心得體會17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  附錄19</b&

7、gt;</p><p><b>  顯示系統(tǒng)時間的程序</b></p><p><b>  1 設(shè)計的目的要求</b></p><p><b>  1.1 設(shè)計目的</b></p><p>  1. 掌握中斷的使用方法。</p><p>  2. 掌握B

8、IOS系統(tǒng)功能調(diào)用。</p><p>  3. 掌握基本的顯存讀寫技術(shù)。</p><p>  4. 學(xué)會用匯編語言編寫一個較完整的實用程序, 培養(yǎng)自己的動手操作能力。</p><p>  5 . 學(xué)習(xí)程序設(shè)計的基本思路和方法,編程、調(diào)試、撰寫報告等。</p><p><b>  1.2 設(shè)計任務(wù)</b></p>

9、;<p>  采用匯編語言設(shè)計一個顯示系統(tǒng)時間程序,在屏幕上以“時:分:秒”的形式顯示本機(jī)系統(tǒng)的時間。按Q退出程序。</p><p><b>  1.3 具體要求</b></p><p><b>  設(shè)計任務(wù)及要求分析</b></p><p><b>  方案比較及認(rèn)證說明</b><

10、;/p><p><b>  系統(tǒng)原理闡述</b></p><p>  軟件設(shè)計課題需要說明:軟件思想,流程圖,源程序及程序注釋</p><p><b>  調(diào)試記錄及結(jié)果分析</b></p><p><b>  總結(jié)</b></p><p><b>

11、;  參考資料</b></p><p>  附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實物圖</p><p><b>  2任務(wù)原理分析</b></p><p><b>  2.1任務(wù)總體分析</b></p><p>  本課設(shè)的設(shè)計任務(wù)要求在運行時,在屏幕上以“時:分:秒”的形

12、式顯示本機(jī)系統(tǒng)的時間,并且按Q退出程序。由此可知,首先定義光標(biāo)顯示界面,然后調(diào)用BIOS中斷,讀取系統(tǒng)時間,并將調(diào)用的用二進(jìn)制表示的時間數(shù)轉(zhuǎn)換成ASCII碼,并將時間數(shù)存入顯存區(qū),最后將存在系統(tǒng)內(nèi)存區(qū)的時間用字符串的形式顯示出來。由于獲取了的系統(tǒng)時間不會自動刷新,所以我們要設(shè)計成循環(huán)的方式來不斷獲取系統(tǒng)的時間,這樣就形成了會跳動的電子鐘了。程序一旦進(jìn)入運行,就將不間斷地在顯示屏顯示時間,要想程序停止運行,可輸入“Q”即可退出。如果用圖形

13、方式顯示效果會更好,而且需注意設(shè)置顯示時候的背景顏色。在本課程設(shè)計中,主要需要三個子程序來完成。</p><p><b>  2.2子程序分析</b></p><p><b>  2.2.1子程序1</b></p><p>  子程序1的功能就是設(shè)置光標(biāo)位置。</p><p>  其基本原理是:在子

14、程序1中,我用到了顯示器驅(qū)動程序(INT 10H)中AH=2的功能。AH=2的功能是設(shè)置光標(biāo)位置,入口參數(shù):(DH,DL)=行、列;BH=頁號(圖形模式為0)。</p><p>  為了使顯示的時間在DOS屏幕中的中間顯示,DX設(shè)置為0A24H,即DH=0AH,DL=24H,就是在0AH行,24H列。如果想改變時間顯示的位置,只要改變DX的數(shù)值就可以達(dá)到目的。由于在第零頁中定位,可用SUB BH,BH來完成此操作

15、。</p><p>  子程序1的源程序如下:</p><p>  MOV BX,005EH</p><p>  MOV AX,1301H</p><p>  INT 10H ;設(shè)置光標(biāo)位置</p><p>  MOV AH,02H</p>

16、<p>  MOV DH,0AH</p><p>  MOV DL,24H ;dh顯示行(x坐標(biāo));dl顯示列(y坐標(biāo))</p><p>  MOV BH,0 ;頁碼為0</p><p>  INT 10H</p><p>  子程序1的流程圖如圖1所示。&

17、lt;/p><p>  圖1 子程序1的流程圖</p><p>  2.2.2 子程序2</p><p>  子程序2的功能是把二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制ASCII碼輸出。</p><p>  其基本原理是:首先要完成二進(jìn)制到十進(jìn)制數(shù)的轉(zhuǎn)換,一般采用“除10取余”法來完成,其大致過程如下:將待轉(zhuǎn)換的數(shù)(在AX中)除以10,得到第一個商和余數(shù),此第一個

18、余數(shù)就是所求的十進(jìn)制數(shù)的個位;再用第一個商除以10,得到第二個商和余數(shù),此第二個余數(shù)就是所求十進(jìn)制數(shù)的十位;……;重復(fù)這一過程直至商為0,此時的余數(shù)就是所求十進(jìn)制數(shù)的最高位。</p><p>  在內(nèi)存中分配一緩沖區(qū),用來存放以上分離出來的十進(jìn)制數(shù)的每一位,然后再逐個轉(zhuǎn)換成ASCII碼,轉(zhuǎn)換成ASCII碼的過程很簡單,就是給每個十進(jìn)制位加上30H即可;最后送顯示器輸出。從轉(zhuǎn)換的過程可以看出,先分離出來的是十進(jìn)制數(shù)

19、的低位,要后顯示;后分離出來的是十進(jìn)制數(shù)的高位,應(yīng)該先顯示。因此在編程時,我們可以利用堆棧操作中“先進(jìn)后出、后進(jìn)先出”的特性,當(dāng)分離出各十進(jìn)制位時依次入棧,要逐個轉(zhuǎn)換成ASCII碼送顯示時依次出棧。 </p><p>  子程序2的流程圖如下:</p><p>  BIN10OUT PROC ;二進(jìn)制轉(zhuǎn)十進(jìn)制ASCUII碼輸出子程序 <

20、/p><p><b>  PUSH DI</b></p><p><b>  PUSH DX</b></p><p><b>  PUSH CX</b></p><p><b>  PUSH AX</b></p><p><b&g

21、t;  MOV CX,0</b></p><p>  LEA DI,TBUF ;去緩沖區(qū)首地址</p><p>  BIN1: PUSH CX</p><p><b>  MOV AX,DX</b></p><p><b>  MOV DX,0</b><

22、;/p><p><b>  MOV CX,10</b></p><p>  DIV CX ;AX內(nèi)容除以DX內(nèi)容,商在AX,余數(shù)在DX</p><p>  XCHG AX,DX ;交換AX,DX的內(nèi)容</p><p>  ADD AL,30H

23、 ;余數(shù)加30H,入棧準(zhǔn)備輸出</p><p>  MOV [DI],AL</p><p><b>  INC DI</b></p><p><b>  POP CX</b></p><p>  INC CX ;累加每調(diào)用一次要輸出的位數(shù)</

24、p><p>  CMP DX,0 ;商和0比較</p><p>  JNZ BIN1 ;不等于0轉(zhuǎn)BIN1</p><p>  CMP CX,1 ;累加器和1比較</p><p>  JNZ BIN2 ;不等于1

25、轉(zhuǎn)BIN2 </p><p>  MOV AH,2 ;等于1位,先在改位前輸出0</p><p>  MOV DL,'0'</p><p><b>  INT 21H</b></p><p>  BIN2: D

26、EC DI ;等于0輸出十進(jìn)制數(shù)的各位</p><p>  MOV AL,[DI]</p><p>  CALL STDOUT</p><p><b>  LOOP BIN2</b></p><p>  POP AX ;恢復(fù)現(xiàn)場&l

27、t;/p><p><b>  POP CX</b></p><p><b>  POP DX</b></p><p><b>  POP DI</b></p><p><b>  RET</b></p><p>  BIN10OUT E

28、NDP</p><p>  子程序2的流程圖如圖2所示。</p><p>  圖2 子程序2的流程圖</p><p>  2.2.3 子程序3</p><p>  子程序3的功能是讀取系統(tǒng)的時間。</p><p>  其基本原理是調(diào)用DOS中斷功能中的INT 21H ,當(dāng)AH=2CH時,讀取系統(tǒng)的時間,使得CH:CL=

29、時:分,DH:DL=秒:秒/100,此程序中精確到秒,這里只要提取時、分、秒、并在內(nèi)存中分配一緩沖區(qū),用來存放時間,不過此時的時、分、秒都是二進(jìn)制的,因此要進(jìn)行二進(jìn)制和十進(jìn)制的轉(zhuǎn)換因此進(jìn)入BCDASC1子程序進(jìn)行轉(zhuǎn)換成相應(yīng)的ASCII碼字符。</p><p>  子程序的源程序如下:</p><p>  TIME PROC NEAR ;顯示時間子程序</p&

30、gt;<p>  DISPLAY1: MOV SI,0</p><p>  MOV BX,100 ;除以100取整、取余</p><p>  DIV BL</p><p>  MOV AH,2CH ;取系統(tǒng)時間</p><p>  INT 21H&

31、lt;/p><p>  MOV AL,CH ;把小時數(shù)給al</p><p>  CALL BCDASC ;將時間數(shù)值轉(zhuǎn)換成ASCII碼字符</p><p>  INC SI</p><p>  MOV AL,CL ;把分?jǐn)?shù)給al</p><p&g

32、t;  CALL BCDASC</p><p>  INC SI</p><p>  MOV AL,DH ;把秒數(shù)給al</p><p>  CALL BCDASC</p><p>  MOV BP,OFFSET DBUFFER ;輸出':',作為

33、分隔符</p><p>  MOV DX,0C0DH</p><p>  MOV CX,8</p><p>  MOV BX,005EH</p><p>  MOV AX,1301H</p><p>  RE: MOV CX,0FFFFH ;

34、延時</p><p>  DEC BX ;bx減1</p><p>  JNZ RE ;如果不等于零,轉(zhuǎn)移到re</p><p>  MOV AH,01H ;讀鍵盤緩沖區(qū)字符到AH寄存器</p><p>  INT 16H ;讀磁盤變

35、化狀態(tài)</p><p>  JE DISPLAY1 ;相等轉(zhuǎn)移到display1程序</p><p>  JMP START</p><p>  MOV AH,4CH</p><p>  INT 21H ;返dos</p><p><b>

36、;  RET</b></p><p>  TIME ENDP</p><p>  子程序3的流程圖如圖3所示。</p><p>  圖3 子程序3的流程圖</p><p>  2.3 拓展設(shè)計及功能說明</p><p>  在本課設(shè)中,在完成老師要求的ASCII碼的轉(zhuǎn)換等基本任務(wù)以外,我還在顯示方式中的背

37、景顏色和字體顏色等方面做了拓展。為了使屏幕顯示更加美觀,同時也可以方便地改變字體顏色,我采用的是顯示器輸出中斷調(diào)用即為INT 10H,其中的0號功能就是指設(shè)置顯示方式,入口參數(shù):AH=0(功能號),AL=設(shè)置方式(0~ 7)。出口參數(shù):無。一共有8中不同的顯示方式,通過修改AL的值即可。</p><p>  2.4 程序設(shè)計的主流程圖</p><p>  其程序設(shè)計的主流程圖如圖4所示:&

38、lt;/p><p>  圖4 程序設(shè)計的主流程圖</p><p><b>  3 方案比較</b></p><p><b>  3.1 方案1</b></p><p>  3.1.1 原理說明</p><p>  首先在數(shù)據(jù)段開辟一顯示緩沖區(qū),用來存儲系統(tǒng)時間。然后調(diào)用BIOS

39、中斷,返回系統(tǒng)時間,并將來返回的二進(jìn)制時間轉(zhuǎn)換成ASCII碼,分別將來小時數(shù)、分鐘數(shù)、秒數(shù)存入顯示緩沖區(qū)。按照輸入的提示,若輸入為“T”時, 則通過寫顯存將時間顯示出來,并且運用了延時設(shè)置CX,進(jìn)行緩沖,對BX遞減1并判斷BX,當(dāng)結(jié)果為0時,然后讀取鍵盤緩沖區(qū)字符,若鍵盤緩沖區(qū)有新的字符輸入,則跳入START重新開始,若,沒有則繼續(xù)從系統(tǒng)讀取系統(tǒng)時間,程序一旦進(jìn)入運行,就將不間斷地在顯示屏顯示時間,要想程序停止運行,可輸入“Q”即可退出

40、。在本方案中用到了我以上介紹的三個子程序。</p><p>  3.1.2 相關(guān)理論知識</p><p>  1)、BIOS功能調(diào)用:在存儲器系統(tǒng)中,內(nèi)存器高端8K的ROM中存放有基本輸入輸出系統(tǒng)即為basic Input/Output System,BIOS例行程序。BIOS給PC系列的不同微處理器提供了兼容的系統(tǒng)加電自檢、引導(dǎo)裝入、主要I/O設(shè)備的處理程序以及接口控制等功能模塊來處理所

41、有的系統(tǒng)中斷。使用BIOS功能調(diào)用,給程序員編程帶來極大方便。程序員不必了硬件的具體細(xì)節(jié),可直接使用指令設(shè)置參數(shù),并中斷調(diào)用BIOS例行程序,所以利用BIOS功能調(diào)用編寫的程序簡潔,可讀性好,而且易于移植。調(diào)用DOS或BIOS功能時,有以下幾個步驟:</p><p> ?。?)、將調(diào)用參數(shù)裝入指定的寄存器。</p><p>  (2)、如需功能調(diào)用號,把它裝入AH。</p>

42、<p>  (3)、如需子功能調(diào)用號,把它裝入AL。(4)、按中斷號調(diào)用DOS或BIOS。(5)、檢查返回參數(shù)是否正確。</p><p>  2)、ASCII的轉(zhuǎn)換與掃描碼:鍵盤是計算機(jī)最基本的一種輸入設(shè)備,用來輸入信息,以達(dá)到人機(jī)對話的目的。當(dāng)在鍵盤上“按下”或“放開”一個鍵時,如果鍵盤中斷是允許的(21H端口的第一位等于0),就會產(chǎn)生一個類型9的中斷,并轉(zhuǎn)入到BIOS的鍵盤中斷處理程序。非ASC

43、II碼鍵產(chǎn)生一個指定的操作。在方案1中就用到了通過單個字符的輸入來對菜單的項進(jìn)行選擇,這樣的程序也稱為交互程序。</p><p>  3)、顯示器輸出中斷調(diào)用:10H中斷調(diào)用為顯示器中斷,共有17種功 能。下面列出這次課設(shè)程序設(shè)計時可能需要的幾種功能的使用情況。</p><p> ?。?)、設(shè)置顯示方式(0號功能)</p><p>  入口參數(shù):AH=0(功能號),

44、AL=設(shè)置方式(0~7)。出口參數(shù):無。</p><p>  其部分顯示方式的8中情況如表1所示:</p><p>  表1 8種不同的顯示方式</p><p> ?。?)、設(shè)置光標(biāo)類型(1號功能)入口參數(shù):AH=1(功能號),CH=光標(biāo)開始行,CL=光標(biāo)結(jié)束行。出口參數(shù):無。根據(jù)CX給出光標(biāo)的大小。</p><p>  (3)、設(shè)置光

45、標(biāo)位置(2號功能)入口參數(shù):AH=2(功能號),BH=頁號,DH=行號,DL=列號。出口參數(shù):無。根據(jù)DX確定了光標(biāo)位置。</p><p> ?。?)、讀當(dāng)前光標(biāo)位置(3號功能)</p><p>  入口參數(shù);AH=3(功能號),BH=頁號。出口參數(shù):DH=行號,DL=列號,CX=光標(biāo)大小。</p><p>  3.1.3 方案1的流程圖</p>

46、<p>  其方案1的流程圖如圖4所示:</p><p>  圖4 方案1的流程圖</p><p><b>  3.2 方案2</b></p><p>  3.2.1 原理說明</p><p>  本方案采用調(diào)用幾個子程序的思想來完成系統(tǒng)時間的顯示,首先取中斷向量,保留原有中斷,然后設(shè)置光標(biāo)的位置,按課設(shè)任

47、務(wù)的要求,應(yīng)該設(shè)置在屏幕的中央。接著調(diào)用BIOS中斷的日時鐘(INT 1AH),讀取系統(tǒng)的時間,然后再調(diào)用子程序1將小時的數(shù)值轉(zhuǎn)化為ASCⅡ碼,并且顯示出來,再調(diào)用顯示分號的子程序,分鐘和秒鐘的轉(zhuǎn)化和顯示依次和小時的同理。而在子程序1中又嵌套了兩個子程序,一個是將數(shù)值轉(zhuǎn)為ASCⅡ碼的子程序,另一個是將字符顯示在屏幕上的子程序。</p><p>  在方案2中,用到了和方案1差不多的理論知識,比如說也用到了BIOS

48、中斷的INT 10H的功能中斷,也用到了鍵盤掃描碼等等。這里就不再贅述。但是在方案2中,較多的用到了子程序調(diào)用的思想。</p><p>  在編程方面,與方案1不同的是,在方案2中我采用了另一種方法來將數(shù)值轉(zhuǎn)化為ASCⅡ碼,即將數(shù)值循環(huán)的除以10,得到的商即為所轉(zhuǎn)化的十進(jìn)制的數(shù)值,但是這種方法比較原始,沒有什么技巧性。而且在本方案中較多的運用了子程序的調(diào)用,過程顯得比較復(fù)雜。方案1的程序比較簡潔明了,思路也比較清

49、晰,綜上所述,我選擇方案一。</p><p><b>  4 程序的調(diào)試過程</b></p><p>  (1)編譯→匯編源文件,命名為asm。</p><p>  (2)asm將生成一個OBJ文件,如果有程序有錯誤,則提示不能生成OBJ文件,那么就要檢查源程序中的錯誤,并改正。</p><p> ?。?)點擊連接,然后

50、點擊運行,即可顯示結(jié)果。結(jié)果如圖所示。</p><p> ?。?)如果要退出程序,從鍵盤中輸入“Q”即可。</p><p>  分析:調(diào)試屏幕上顯示的提示語與系統(tǒng)時間的位置都可通過前面介紹的內(nèi)容來改變,且程序可從鍵盤中輸入 “Q”來退出,很方便簡單。而且編者可以根據(jù)自己喜歡的顏色來改變字體和背景的顏色。</p><p>  程序所顯示的結(jié)果如圖5所示。</p&

51、gt;<p>  圖5 運行的結(jié)果顯示</p><p>  當(dāng)鍵盤輸入“Q”時,程序的顯示如圖6所示。</p><p>  圖6 當(dāng)按“Q”時的程序顯示</p><p>  5 調(diào)試過程中的問題及解決方法</p><p>  首先是在編程的過程中,在如何使用中斷程序來讀取系統(tǒng)時間上遇到了難題,因為在平時的理論課上,這一方面接觸的

52、比較少,用什么形式的中斷實現(xiàn)功能,對中斷的初始化、具體設(shè)置、中斷返回還不是很清楚,對中斷向量表的裝載也比較模糊,由于遇到了這些,我只好先停下我的編程,去圖書館借了清華大學(xué)出版社的《匯編語言程序設(shè)計》等幾本書,認(rèn)真翻閱了其中關(guān)于中斷功能的知識,也從網(wǎng)上下載了一些例題和功能介紹來研究學(xué)習(xí)。在我重點研究了中斷過程,通過對這一內(nèi)容的學(xué)習(xí)之后,終于對中斷有了詳細(xì)的認(rèn)識,在設(shè)計程序時也容易了很多。</p><p>  其次是

53、在程序調(diào)試的過程中,當(dāng)我按下編譯的按鍵時,雖然顯示了是編譯成功,但是下面卻有兩個警告(Warning )如圖7所示。</p><p>  圖7 調(diào)試過程中的問題</p><p>  在認(rèn)真檢查后發(fā)現(xiàn)是由于STACK和ATR的位置和格式有問題,在修改了以后,將程序保存后再編譯時,則顯示編譯成功,而且沒有警告。</p><p>  總之,在編程和調(diào)試過程中都有遇到一些不

54、會的地方,但在經(jīng)過研究和修改之后,都克服這些難題,最終完成所要求的任務(wù)。</p><p><b>  6 心得體會</b></p><p>  做了兩個星期的微機(jī)原理課程設(shè)計之后,我從中發(fā)現(xiàn)了自己還有很多不會的東西,也學(xué)到了很多知識。雖然這學(xué)期我們學(xué)習(xí)了微機(jī)原理這門課,對匯編語言有了一定的了解和掌握,也有相應(yīng)的微機(jī)原理實驗課讓我們加強實踐,但是真正輪到自己放手去做時,

55、才發(fā)現(xiàn)面對一些以前沒遇到過的問題,要自己認(rèn)真地去研究和分析,當(dāng)最后看到自己的編寫的程序調(diào)試成功的時候,我真的覺得很開心,有一種小小的成績感油然而生。</p><p>  首先是編寫程序的過程。剛剛開始時,對于要實現(xiàn)課設(shè)的任務(wù)需要用哪些指令和知識點都是一頭霧水,還有在編程中需要用到一些以前沒學(xué)過或者沒接觸過的指令時,比如說如何設(shè)置光標(biāo)位置,如何設(shè)置顯示方式,如何讀取系統(tǒng)時間等等,要自己去翻閱相關(guān)的書籍,也利用網(wǎng)絡(luò)搜

56、索到了很多相關(guān)的介紹和例題,進(jìn)行研究和學(xué)習(xí)。同時我也很感謝和那些我一起的同學(xué)們,遇到難題,我們有時互相討論,互相幫助,共同解決,這讓我們在編程的過程中加快了學(xué)習(xí)和理解的效率。通過這次的編程,我對微機(jī)原理和匯編語言程序有了更加深的認(rèn)識和理解,也給了我一個很好的機(jī)會,講平時理論課上學(xué)到的知識和實踐的編程聯(lián)系起來,我想這對我今后的編程有了很大的幫助。</p><p>  其實是程序調(diào)試的過程。在我編寫完程序后,我迫不及

57、待的進(jìn)行調(diào)試,卻發(fā)現(xiàn)并沒有形成可執(zhí)行文件,后來經(jīng)過分析和檢查后發(fā)現(xiàn),我的第一個方案的源程序應(yīng)該在DOS下運行,于是我用了輕松匯編這個軟件。再次進(jìn)行安裝和調(diào)試時,就可以正確顯示出我的結(jié)果。這點讓我領(lǐng)悟到,任何時候出現(xiàn)問題都不要慌張,應(yīng)該冷靜的認(rèn)真的分析,總會找到可以解決的辦法。</p><p>  最后是課設(shè)材料的整理和編寫的過程。由于有了前幾次的課程設(shè)計的經(jīng)歷,對于排版和字體等的具體要求可以做得比較好,我想這對今

58、后的畢業(yè)設(shè)計的撰寫有很大的幫助。</p><p>  總之,這次的課程設(shè)計讓我有三個方面的收獲。第一,是對于課本知識的鞏固和提高,對學(xué)過的只是一次很好的回顧,因為我們平時這樣的實踐機(jī)會不是很多。第二,是我學(xué)會了更好地用匯編語言來編程,對于匯編語言的思想和很多的指令在這次課設(shè)中都有很大提高。第三,是對各種編程的軟件有很了很好的熟悉和認(rèn)識,對今后再次使用這些軟件有很大的幫助。</p><p>

59、<b>  參考文獻(xiàn)</b></p><p>  [1] 沈美明、溫冬嬋編著.《IBM—PC匯編語言程序設(shè)計(第二版)》.北京:清華大學(xué)出版社. 2005年</p><p>  [2] 沈美明、溫冬嬋編著.《IBM—PC匯編語言程序設(shè)計(第一版)》.北京:清華大學(xué)出版社. 1997年</p><p>  [3] 周佩玲、彭虎、傅忠謙編著.《微機(jī)

60、原理與接口技術(shù)》. 北京:電子工業(yè)出版社.北京:清華大學(xué)出版社. 2007年</p><p>  [4] 陳玉生、王芳著.《IBM-PC匯編語言程序設(shè)計輔導(dǎo)及習(xí)題解答》.北京:電子科技大學(xué)出版社.2006年</p><p>  [5] 張雪蘭、譚毓安、李元章著.《匯編語言程序設(shè)計——從DOS到WINDOWS》. 北京:清華大學(xué)出版社.2006年 </p><p> 

61、 [6] 余朝琨著.《IBM-PC機(jī)匯編語言程序設(shè)計》.廈門:廈門大學(xué)出版社.2001年 </p><p>  [7] 馬瑞芳著.《匯編語言程序設(shè)計典型題解析及自測試題》.西安:西北工業(yè)大學(xué)出版社.2002年</p><p>  [8] 程學(xué)先、徐東平著.《匯編語言程序設(shè)計》.武漢:武漢理工大學(xué)出版社.2003年</p><p><b>  附錄</

62、b></p><p>  系統(tǒng)時鐘顯示源程序:</p><p>  STACK SEGMENT</p><p>  DW 200 DUP (?)</p><p>  STACK ENDS</p><p>  DATA SEGMENT</p><p>  SPACE D

63、B 1000 DUP (' ')</p><p>  DBUFFER DB 8 DUP (':'),12 DUP (' ')</p><p>  DBUFFER1 DB 20 DUP (' ')</p><p>  STR DB 'PL

64、EASE INPUT TIME(T) QUIT(Q)',0DH,0AH,'$'</p><p>  DATA ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK</p><p><b>  ST

65、ART:</b></p><p>  MOV AX,000DH ;設(shè)置顯示方式為320*200彩色文本方式 BIOS 中斷命令</p><p>  INT 10H ;顯示服務(wù)</p><p>  MOV AX,DATA</p><p>  MOV DS,AX&l

66、t;/p><p>  MOV ES,AX ;數(shù)據(jù)段,附加段定義</p><p>  MOV BP,OFFSET SPACE</p><p>  LEA DX,STR ;顯示提示信息</p><p>  MOV AH,9 ;顯示提示信息字符串</p>

67、<p>  INT 21H</p><p>  MOV AH,1 ;從鍵盤輸入單個字符</p><p>  INT 21H</p><p>  CMP AL,54H ;AL='T'?</p><p>  JNE B

68、 ;不等于則轉(zhuǎn)到B程序段</p><p>  CALL TIME ;顯示系統(tǒng)時間 調(diào)用TIME子程序</p><p>  B: CMP AL,51H ;AL='Q'?</p><p>  JNE START</p><p>  MOV AH,4CH

69、 ;返回dos狀態(tài)</p><p>  INT 21H</p><p>  TIME PROC NEAR ;顯示時間子程序</p><p>  DISPLAY1: MOV SI,0</p><p>  MOV BX,100 ;除以100取整、取余</p>

70、<p>  DIV BL</p><p>  MOV AH,2CH ;取系統(tǒng)時間</p><p>  INT 21H</p><p>  MOV AL,CH ;把小時數(shù)給al</p><p>  CALL BCDASC ;將時間數(shù)值轉(zhuǎn)換成AS

71、CII碼字符</p><p>  INC SI</p><p>  MOV AL,CL ;把分?jǐn)?shù)給al</p><p>  CALL BCDASC</p><p>  INC SI</p><p>  MOV AL,DH ;把秒數(shù)給al&

72、lt;/p><p>  CALL BCDASC</p><p>  MOV BP,OFFSET DBUFFER ;輸出':',作為分隔符</p><p>  MOV DX,0C15H</p><p>  MOV CX,8</p><p>  MOV

73、 BX,005EH</p><p>  MOV AX,1301H</p><p>  INT 10H ;設(shè)置光標(biāo)位置</p><p>  MOV AH,02H</p><p>  MOV DH,0AH</p><p>  MOV DL

74、,24H ;dh顯示行(x坐標(biāo));dl顯示列(y坐標(biāo))</p><p>  MOV BH,0 ;頁碼為0</p><p>  INT 10H</p><p>  MOV BX,0018H</p><p>  RE: MOV CX,0FFFFH ;延時</p&g

75、t;<p>  DEC BX ;bx減1</p><p>  JNZ RE ;如果不等于零,轉(zhuǎn)移到re</p><p>  MOV AH,01H ;讀鍵盤緩沖區(qū)字符到AH寄存器</p><p>  INT 16H ;讀磁盤變化狀態(tài)</p&

76、gt;<p>  JE DISPLAY1 ;相等轉(zhuǎn)移到display1程序</p><p>  JMP START</p><p>  MOV AH,4CH</p><p>  INT 21H ;返dos</p><p><b>  RET<

77、/b></p><p>  TIME ENDP</p><p>  BCDASC PROC ; 時間數(shù)值轉(zhuǎn)換成ASCII碼字符子程序</p><p>  PUSH BX</p><p>  CBW ; 擴(kuò)展</p><p>  M

78、OV BL,10</p><p>  DIV BL</p><p>  ADD AL,'0' ; 屏蔽</p><p>  MOV DBUFFER[SI],AL</p><p>  INC SI</p><p>  ADD

79、 AH,'0'</p><p>  MOV DBUFFER[SI],AH</p><p>  INC SI</p><p>  POP BX</p><p><b>  RET</b></p><p>  BCDASC ENDP</p&g

溫馨提示

  • 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

提交評論