



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、成都學院微機原理與接口技術課程設計題目: 顯示系統時間的程序學生姓名 :李凱學號:201420314109院系:信息工程與科學學院專業:電氣自動化技術指導教師:楊炷中2015 年 12月 23日1目 錄1 設計的目的要求11.1設計目的1.2設計任務1.3具體要求. 1. 2. 22 任務原理分析 .22.1任務總體分析 .22.2子程序分析 .32.2.1子程序 1 .32.2.2子程序 2 .42.2.3子程序 3 .72.3拓展設計及功能說明. 92.4程序設計的主流程圖. 93方案比較 .103.1方案 1 .103.1.1原理說明 .103.1.2相關理論知識 .123.1.3方案
2、1 的流程圖. 123.2方案 2 .133.2.1原理說明 .134程序的調試過程 .145調試過程中的問題 .166心得體會 .17參考文獻.18附錄.192顯示系統時間的程序1 設計的目的要求1.1設計目的1. 掌握中斷的使用方法。2. 掌握 BIOS系統功能調用。3. 掌握基本的顯存讀寫技術。4. 學會用匯編語言編寫一個較完整的實用程序,培養自己的動手操作能力。5 .學習程序設計的基本思路和方法,編程、調試、撰寫報告等。1.2設計任務采用匯編語言設計一個顯示系統時間程序,在屏幕上以“時:分:秒”的形式顯示本機系統的時間。按Q退出程序。1.3具體要求( 1) 設計任務及要求分析( 2)
3、方案比較及認證說明( 3) 系統原理闡述( 4) 軟件設計課題需要說明:軟件思想,流程圖,源程序及程序注釋( 5) 調試記錄及結果分析( 6) 總結3( 7) 參考資料( 8)附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實物圖2 任務原理分析2.1 任務總體分析本課設的設計任務要求在運行時,在屏幕上以“時:分:秒”的形式顯示本機系統的時間,并且按 Q 退出程序。由此可知,首先定義光標顯示界面,然后調用BIOS中斷,讀取系統時間,并將調用的用二進制表示的時間數轉換成ASCII 碼,并將時間數存入顯存區,最后將存在系統內存區的時間用字符串的形式顯示出來。由于獲取了的系統時間不會自動刷新,所以
4、我們要設計成循環的方式來不斷獲取系統的時間,這樣就形成了會跳動的電子鐘了。程序一旦進入運行,就將不間斷地在顯示屏顯示時間,要想程序停止運行,可輸入“ Q”即可退出。如果用圖形方式顯示效果會更好,而且需注意設置顯示時候的背景顏色。在本課程設計中,主要需要三個子程序來完成。2.2 子程序分析2.2.1 子程序 1子程序 1 的功能就是設置光標位置。其基本原理是:在子程序 1 中,我用到了顯示器驅動程序( INT 10H)中 AH=2 的功能。 AH=2 的功能是設置光標位置,入口參數: ( DH, DL ) =行、列; BH=頁號(圖形模式為 0)。為了使顯示的時間在DOS 屏幕中的中間顯示,DX
5、 設置為0A24H,即DH=0AH ,DL=24H ,就是在 0AH 行, 24H 列。如果想改變時間顯示的位置,只要改變DX 的數值就可以達到目的。由于在第零頁中定位,可用SUB BH ,BH 來完成此操作。子程序 1 的源程序如下:MOVBX,005EH4MOVAX,1301HINT10H;設置光標位置MOVAH,02HMOVDH,0AHMOVDL,24H;dh 顯示行( x 坐標) ;dl 顯示列( y 坐標)MOVBH,0;頁碼為 0INT10H子程序 1 的流程圖如圖1 所示。開始各寄存器內容保護調用INT 10AH=2號中斷功能設置光標位置在第0 頁中定位各寄存器內容恢復結束圖 1
6、子程序 1 的流程圖2.2.2子程序 2子程序 2 的功能是把二進制數轉換為十進制ASCII 碼輸出。其基本原理是: 首先要完成二進制到十進制數的轉換,一般采用“除 10 取余”法來完5成,其大致過程如下:將待轉換的數(在 AX 中)除以 10,得到第一個商和余數,此第一個余數就是所求的十進制數的個位;再用第一個商除以 10,得到第二個商和余數,此第二個余數就是所求十進制數的十位; ;重復這一過程直至商為0,此時的余數就是所求十進制數的最高位。在內存中分配一緩沖區, 用來存放以上分離出來的十進制數的每一位, 然后再逐個轉換成 ASCII 碼,轉換成 ASCII 碼的過程很簡單, 就是給每個十進
7、制位加上 30H 即可;最后送顯示器輸出。從轉換的過程可以看出,先分離出來的是十進制數的低位,要后顯示;后分離出來的是十進制數的高位, 應該先顯示。因此在編程時,我們可以利用堆棧操作中“先進后出、后進先出”的特性,當分離出各十進制位時依次入棧,要逐個轉換成ASCII 碼送顯示時依次出棧。子程序 2 的流程圖如下:BIN10OUT PROC;二進制轉十進制ASCUII 碼輸出子程序PUSH DIPUSH DXPUSH CXPUSH AXMOV CX,0LEA DI,TBUF;去緩沖區首地址BIN1:PUSH CXMOV AX,DXMOV DX,0MOV CX,10DIV CX;AX內容除以 DX
8、內容,商在 AX,余數在 DXXCHG AX,DX;交換 AX, DX的內容ADD AL,30H;余數加 30H,入棧準備輸出MOV DI,ALINC DIPOP CXINC CX;累加每調用一次要輸出的位數6CMP DX,0;商和 0比較JNZ BIN1;不等于 0 轉 BIN1CMP CX,1;累加器和 1 比較JNZ BIN2;不等于 1 轉 BIN2MOV AH,2;等于 1位,先在改位前輸出 0MOV DL,'0'INT 21HBIN2:DEC DI;等于 0 輸出十進制數的各位MOV AL,DICALL STDOUTLOOP BIN2POP AX;恢復現場POP C
9、XPOP DXPOP DIRETBIN10OUT ENDP子程序 2 的流程圖如圖 2 所示。7開始二進制數除以10商是否為0NY每一位都加30H結束圖 2 子程序 2 的流程圖2.2.3子程序 3子程序 3 的功能是讀取系統的時間。其基本原理是調用DOS中斷功能中的 INT 21H ,當 AH=2CH時,讀取系統的時間,使得 CH:CL=時:分, DH:DL=秒:秒 100,此程序中精確到秒,這里只要提取時、分、秒、并在內存中分配一緩沖區,用來存放時間,不過此時的時、分、秒都是二進制的,因此要進行二進制和十進制的轉換因此進入 BCDASC1子程序進行轉換成相應的 ASCII 碼字符。子程序的
10、源程序如下:TIME PROCNEAR;顯示時間子程序DISPLAY1: MOVSI,0MOVBX,100;除以 100 取整、取余DIVBLMOVAH,2CH;取系統時間INT21H8MOVAL,CH;把小時數給 alCALLBCDASC;將時間數值轉換成 ASCII 碼字符INCSIMOVAL,CL;把分數給 alCALLBCDASCINCSIMOVAL,DH;把秒數給 alCALLBCDASCMOVBP,OFFSET DBUFFER;輸出 ':',作為分隔符MOVDX,0C0DHMOVCX,8MOVBX,005EHMOVAX,1301HRE:MOVCX,0FFFFH ;延
11、時DECBX;bx減 1JNZRE;如果不等于零,轉移到 reMOVAH,01H;讀鍵盤緩沖區字符到 AH寄存器INT16H;讀磁盤變化狀態JEDISPLAY1;相等轉移到 display1程序JMPSTARTMOVAH,4CHINT21H;返 dosRETTIME ENDP子程序 3 的流程圖如圖 3 所示。9開始調用BIOS中斷,讀取系統時間將小時數放入AL 中,并調用子程序轉化為ASC 碼將分數放入AL 中,并調用子程序1 轉化為ASC 碼將秒數放入AL 中,并調用子程序1 轉化為ASC 碼輸入:作為分隔符延時程序BX 是否為0Y讀取鍵盤緩沖區ZF 是否為1NSTARTNDISPY LA
12、Y程序圖 3 子程序 3 的流程圖2.3拓展設計及功能說明在本課設中,在完成老師要求的ASCII 碼的轉換等基本任務以外,我還在顯示方式中的背景顏色和字體顏色等方面做了拓展。為了使屏幕顯示更加美觀,同時也可以方便地改變字體顏色,我采用的是顯示器輸出中斷調用即為INT 10H,其中的 0 號功能就是指設置顯示方式,入口參數:AH =0(功能號), AL =設置方式( 0 7 )。出口參數:無。一共有 8 中不同的顯示方式,通過修改AL 的值即可。2.4程序設計的主流程圖其程序設計的主流程圖如圖4 所示:10開始開辟顯示緩存區調用BIOS中斷,設置顯示方式輸入的是“T ”還是“Q”QT調用TIME
13、子程序,讀取時間分別將時、分、秒轉化為ASC碼通過顯存將時間顯示出來延時,并讀取磁盤變化返回DOS結束圖 4程序設計的主流程圖3 方案比較3.1方案 13.1.1原理說明首先在數據段開辟一顯示緩沖區,用來存儲系統時間。然后調用BIOS 中斷,返回系統時間,并將來返回的二進制時間轉換成ASCII 碼,分別將來小時數、分鐘數、秒數存入顯示緩沖區。按照輸入的提示,若輸入為“T”時, 則通過寫顯存將時間顯示出來,并且11運用了延時設置CX,進行緩沖,對BX遞減 1 并判斷 BX,當結果為 0 時,然后讀取鍵盤緩沖區字符,若鍵盤緩沖區有新的字符輸入,則跳入START重新開始,若,沒有則繼續從系統讀取系統
14、時間,程序一旦進入運行,就將不間斷地在顯示屏顯示時間,要想程序停止運行,可輸入“ Q”即可退出。在本方案中用到了我以上介紹的三個子程序。3.1.2相關理論知識1)、 BIOS 功能調用:在存儲器系統中,內存器高端8K 的 ROM 中存放有基本輸入輸出系統即為 basic Input/Output System, BIOS 例行程序。 BIOS 給 PC 系列的不同微處理器提供了兼容的系統加電自檢、引導裝入、主要I/O 設備的處理程序以及接口控制等功能模塊來處理所有的系統中斷。使用BIOS 功能調用,給程序員編程帶來極大方便。程序員不必了硬件的具體細節,可直接使用指令設置參數, 并中斷調用 BI
15、OS 例行程序,所以利用 BIOS功能調用編寫的程序簡潔,可讀性好,而且易于移植。調用DOS 或 BIOS 功能時,有以下幾個步驟:( 1)、將調用參數裝入指定的寄存器。( 2)、如需功能調用號,把它裝入 AH 。( 3)、如需子功能調用號,把它裝入 AL 。( 4)、按中斷號調用 DOS 或 BIOS。( 5)、檢查返回參數是否正確。2)、ASCII 的轉換與掃描碼:鍵盤是計算機最基本的一種輸入設備,用來輸入信息,以達到人機對話的目的。 當在鍵盤上 “按下”或“放開”一個鍵時, 如果鍵盤中斷是允許的 ( 21H 端口的第一位等于 0),就會產生一個類型 9 的中斷,并轉入到 BIOS 的鍵盤
16、中斷處理程序。非 ASCII 碼鍵產生一個指定的操作。在方案 1 中就用到了通過單個字符的輸入來對菜單的項進行選擇,這樣的程序也稱為交互程序。3)、顯示器輸出中斷調用: 10H 中斷調用為顯示器中斷,共有17 種功 能。下面列出這次課設程序設計時可能需要的幾種功能的使用情況。( 1)、設置顯示方式( 0 號功能)入口參數: AH =0(功能號), AL =設置方式( 07)。出口參數:無。其部分顯示方式的8 中情況如表 1 所示:12AL01234567顯示方式40× 25 黑白文本方式40× 25 彩色文本方式80× 25 黑白文本方式80× 25 彩
17、色文本方式320× 200 彩色圖形方式320× 200 黑白圖形方式640× 200 黑白圖形方式80 × 25 黑白文本方式表 1 8 種不同的顯示方式( 2)、設置光標類型( 1 號功能)入口參數: AH =1(功能號), CH=光標開始行, CL=光標結束行。出口參數:無。根據CX給出光標的大小。( 3)、設置光標位置( 2 號功能)入口參數: AH =2(功能號), BH=頁號, DH=行號, DL =列號。出口參數:無。根據DX確定了光標位置。( 4)、讀當前光標位置( 3 號功能)入口參數; AH=3(功能號), BH=頁號。出口參數: D
18、H=行號, DL =列號, CX=光標大小。3.1.3方案 1 的流程圖其方案 1 的流程圖如圖 4 所示:13開始定義堆棧段和代碼段開辟顯示緩存區調用BIOS中斷,設置顯示方式輸入的字符是Q“ Q”還是“T ”T調用TIME子程序,讀取系統時間分別將時、分、秒轉化為ASC 碼輸入:作為分隔符通過顯存將時間顯示出來延時,并讀取鍵盤緩沖區的變化T輸入的字符是“ Q”還是“T ”Q結束圖4方案1的流程圖3.2方案 23.2.1原理說明本方案采用調用幾個子程序的思想來完成系統時間的顯示,首先取中斷向量,保留原有中斷,然后設置光標的位置, 按課設任務的要求, 應該設置在屏幕的中央。 接著調用 BIOS
19、14中斷的日時鐘 (INT 1AH),讀取系統的時間, 然后再調用子程序1 將小時的數值轉化為ASC碼,并且顯示出來,再調用顯示分號的子程序,分鐘和秒鐘的轉化和顯示依次和小時的同理。而在子程序1 中又嵌套了兩個子程序,一個是將數值轉為ASC碼的子程序,另一個是將字符顯示在屏幕上的子程序。在方案 2 中,用到了和方案 1 差不多的理論知識,比如說也用到了BIOS中斷的 INT 10H的功能中斷,也用到了鍵盤掃描碼等等。這里就不再贅述。但是在方案2 中,較多的用到了子程序調用的思想。在編程方面,與方案 1 不同的是,在方案 2 中我采用了另一種方法來將數值轉化為 ASC 碼,即將數值循環的除以 1
20、0,得到的商即為所轉化的十進制的數值,但是這種方法比較原始,沒有什么技巧性。 而且在本方案中較多的運用了子程序的調用,過程顯得比較復雜。方案 1 的程序比較簡潔明了,思路也比較清晰,綜上所述,我選擇方案一。4 程序的調試過程( 1)編譯匯編源文件,命名為 asm。( 2)asm將生成一個 OBJ文件,如果有程序有錯誤,則提示不能生成 OBJ文件,那么就要檢查源程序中的錯誤,并改正。( 3)點擊連接,然后點擊運行,即可顯示結果。結果如圖所示。15( 4)如果要退出程序,從鍵盤中輸入“Q”即可。分析:調試屏幕上顯示的提示語與系統時間的位置都可通過前面介紹的內容來改變,且程序可從鍵盤中輸入“Q”來退
21、出,很方便簡單。而且編者可以根據自己喜歡的顏色來改變字體和背景的顏色。程序所顯示的結果如圖5 所示。圖 5 運行的結果顯示16當鍵盤輸入“ Q”時,程序的顯示如圖6 所示。圖 6 當按“ Q”時的程序顯示5 調試過程中的問題及解決方法首先是在編程的過程中,在如何使用中斷程序來讀取系統時間上遇到了難題,因為在平時的理論課上, 這一方面接觸的比較少, 用什么形式的中斷實現功能, 對中斷的初始化、具體設置、中斷返回還不是很清楚,對中斷向量表的裝載也比較模糊,由于遇到了這些,我只好先停下我的編程, 去圖書館借了清華大學出版社的匯編語言程序設計 等幾本書,17認真翻閱了其中關于中斷功能的知識,也從網上下
22、載了一些例題和功能介紹來研究學習。在我重點研究了中斷過程,通過對這一內容的學習之后,終于對中斷有了詳細的認識,在設計程序時也容易了很多。其次是在程序調試的過程中,當我按下編譯的按鍵時,雖然顯示了是編譯成功,但是下面卻有兩個警告( Warning )如圖 7 所示。圖 7 調試過程中的問題在認真檢查后發現是由于 STACK 和 ATR 的位置和格式有問題, 在修改了以后, 將程序保存后再編譯時,則顯示編譯成功,而且沒有警告??傊?,在編程和調試過程中都有遇到一些不會的地方,但在經過研究和修改之后,都克服這些難題,最終完成所要求的任務。6 心得體會做了兩個星期的微機原理課程設計之后,我從中發現了自己
23、還有很多不會的東西,也學到了很多知識。雖然這學期我們學習了微機原理這門課,對匯編語言有了一定的了解和掌握,也有相應的微機原理實驗課讓我們加強實踐,但是真正輪到自己放手去做時,才發18現面對一些以前沒遇到過的問題,要自己認真地去研究和分析,當最后看到自己的編寫的程序調試成功的時候,我真的覺得很開心,有一種小小的成績感油然而生。首先是編寫程序的過程。剛剛開始時,對于要實現課設的任務需要用哪些指令和知識點都是一頭霧水,還有在編程中需要用到一些以前沒學過或者沒接觸過的指令時,比如說如何設置光標位置,如何設置顯示方式,如何讀取系統時間等等,要自己去翻閱相關的書籍,也利用網絡搜索到了很多相關的介紹和例題,
24、進行研究和學習。同時我也很感謝和那些我一起的同學們,遇到難題,我們有時互相討論,互相幫助,共同解決,這讓我們在編程的過程中加快了學習和理解的效率。通過這次的編程,我對微機原理和匯編語言程序有了更加深的認識和理解,也給了我一個很好的機會,講平時理論課上學到的知識和實踐的編程聯系起來,我想這對我今后的編程有了很大的幫助。其實是程序調試的過程。在我編寫完程序后,我迫不及待的進行調試,卻發現并沒有形成可執行文件,后來經過分析和檢查后發現,我的第一個方案的源程序應該在 DOS 下運行,于是我用了輕松匯編這個軟件。再次進行安裝和調試時,就可以正確顯示出我的結果。這點讓我領悟到,任何時候出現問題都不要慌張,
25、應該冷靜的認真的分析,總會找到可以解決的辦法。最后是課設材料的整理和編寫的過程。由于有了前幾次的課程設計的經歷,對于排版和字體等的具體要求可以做得比較好,我想這對今后的畢業設計的撰寫有很大的幫助??傊@次的課程設計讓我有三個方面的收獲。 第一,是對于課本知識的鞏固和提高,對學過的只是一次很好的回顧,因為我們平時這樣的實踐機會不是很多。第二,是我學會了更好地用匯編語言來編程,對于匯編語言的思想和很多的指令在這次課設中都有很大提高。第三,是對各種編程的軟件有很了很好的熟悉和認識,對今后再次使用這些軟件有很大的幫助。參考文獻1 沈美明、溫冬嬋編著 . IBM PC 匯編語言程序設計 (第二版 ).
26、北京:清華大學出版社 . 2005 年192 沈美明、溫冬嬋編著 . IBM PC 匯編語言程序設計 (第一版 ).北京:清華大學出版社 .1997 年3 周佩玲、彭虎、傅忠謙編著 .微機原理與接口技術 . 北京:電子工業出版社 .北京 :清華大學出版社 . 2007 年4 陳玉生、王芳著 .IBM-PC 匯編語言程序設計輔導及習題解答 .北京:電子科技大學出版社 .2006 年5 張雪蘭、譚毓安、李元章著 .匯編語言程序設計從 DOS 到 WINDOWS . 北京:清華大學出版社 .2006 年6 余朝琨著 .IBM-PC 機匯編語言程序設計 .廈門:廈門大學出版社 .2001 年7 馬瑞芳
27、著.匯編語言程序設計典型題解析及自測試題 .西安:西北工業大學出版社 .2002年8 程學先、徐東平著 .匯編語言程序設計 .武漢:武漢理工大學出版社 .2003 年附錄系統時鐘顯示源程序:20STACK SEGMENTDW200DUP(?)STACK ENDSDATASEGMENTSPACEDB1000DUP(' ')DBUFFERDB8DUP(':'),12DUP(' ')DBUFFER1DB20DUP(' ')STRDB 'PLEASE INPUT TIME(T) QUIT(Q)',0DH,0AH,'$'DATAENDSCODE SEGMENTASSUME CS:CODE,DS: DATA,ES: DATA,SS: STACKSTART:MOVAX,000DH;設置顯示方式為320*200 彩色文本方式BIOS 中斷命令INT10H;顯示服務MOVAX,DATAMOVDS,AXMOVES,AX;數據段,附加段定義MOVBP,OFFSET SPACELEADX,STR;顯示提示信息MOVAH,9;顯示提示信息字符串INT21HMO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 孕婦營養管理課件下載
- 餐飲服務業試用員工勞動合同執行標準
- 商業街區停車位經營權轉讓合同書
- 交通運輸設備財產保全擔保合同
- 財務部門財務預算調整與優化合同
- 小綠豆教學課件
- 2024-2025學年山東省聊城市高一下學期期中考語文試題及答案
- 運輸項目成本控制與績效管理關系研究考核試卷
- 樂器制作與聲音空間布局的樂器聲音處理軟件技術考核試卷
- 樂器批發市場品牌市場品牌傳播效果評估體系構建研究考核試卷
- 打架傷人和解協議書范本
- 2025年湖北省中考生物、地理合卷試卷真題(含答案)
- 藥品陳列養護管理制度
- 智慧校園建設“十五五”發展規劃
- 2025至2030年中國智能炒菜機(炒菜機器人)行業市場現狀調查及前景戰略研判報告
- 路面銑刨工入場安全教育試卷(含答案)
- 物理●湖北卷丨2024年湖北省普通高中學業水平選擇性考試物理試卷及答案
- 2024大華網絡攝像機使用說明書全集
- T/CNFAGS 15-2024綠色合成氨分級標準(試行)
- 污水處理員技能培訓課件
- 社區社群團長招募書經典案例干貨課件
評論
0/150
提交評論