版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘要</b></p><p> 匯編語言是面向機器的程序設(shè)計語言。在匯編語言中,用助記符代替操作碼,用地址符號或標號代替地址碼。這樣用符號代替機器語言的二進制代碼,就把機器語言變成了匯編語言。匯編語言能夠最大限度的發(fā)揮硬件的性能。</p><p> 本次課程設(shè)計的內(nèi)容是使用匯編語言設(shè)計一個可運行于計算機的時鐘模擬顯示程序。要求在屏幕中
2、央顯示當前時間,格式為"時:分:秒"且12/24時制可調(diào)。</p><p> 關(guān)鍵詞:計算機 匯編語言 電子時鐘</p><p><b> Abstract</b></p><p> Assembly language is a programming language for the machine. In as
3、sembly language, the use of mnemonics instead of operation code, instead of the address code with the address sign or label. This use of symbols instead of binary machine language code, put the assembly language into mac
4、hine language. Assembly language can maximize the performance of hardware.</p><p> The content of this course design is the use of assembly language to design a simulation display program can be run on a c
5、omputer clock. Requirements: the current time is displayed in the center of the screen, the format is "hours: minutes: seconds" and the system is adjustable for 12/24.</p><p><b> 目錄</b>
6、;</p><p> 第一章 緒論 …………………………………………………………………1</p><p> 1.1 電子時鐘的背景………………………………………………………1</p><p> 1.2 電子時鐘的應(yīng)用………………………………………………………1</p><p> 第二章 總體設(shè)計………………………………………………
7、……………2</p><p> 2.1 設(shè)計內(nèi)容………………………………………………………………2</p><p> 2.2 設(shè)計原理………………………………………………………………2</p><p> 2.3 程序流程圖……………………………………………………………3</p><p> 第三章 詳細設(shè)計……………………………………
8、………………………4</p><p> 3.1 時制選擇模塊…………………………………………………………4</p><p> 3.2 設(shè)置時間模塊…………………………………………………………4</p><p> 3.3 延時模塊………………………………………………………………5</p><p> 3.4 時間顯示模塊………………………
9、…………………………………6</p><p> 第四章 調(diào)試過程及結(jié)果 ……………………………………………………8</p><p> 4.1 調(diào)試過程………………………………………………………………8</p><p> 4.2 運行結(jié)果………………………………………………………………8</p><p> 總結(jié)………………………………
10、……………………………………………10</p><p> 致謝……………………………………………………………………………11</p><p> 附錄……………………………………………………………………………12</p><p><b> 第一章 緒論</b></p><p> 1.1電子時鐘的背景 </
11、p><p> 20世紀末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。 時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間,忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。</p>
12、<p> 電子時鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。</p><p> 1.2電子時鐘的應(yīng)用</p><p> 電子鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,通常具有可選的12小時或24小時的計時方式,能快速校準時、分、秒。與機械時鐘相比,電子鐘更具有直
13、觀性,且因非機械驅(qū)動,具有更長的使用壽命,相較石英鐘的石英機芯驅(qū)動,更具準確性。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵罚瑥V泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進的石英技術(shù),使數(shù)字鐘具有走時準確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時、自動報時及自動控制等各個領(lǐng)域。</p><p><b> 第二章
14、總體設(shè)計</b></p><p><b> 2.1 設(shè)計內(nèi)容</b></p><p> 使用匯編語言設(shè)計一個可運行于計算機的時鐘模擬顯示程序。程序運行成功后,界面中首先顯示“12/24:”提示選擇12或24時制,輸入以后會出現(xiàn)“please enter the time:”提示輸入初始時間,其格式為:時(xx):分(xx):秒(xx)。然后界面就出現(xiàn)所
15、設(shè)的初值并開始計時,其輸出格式為xx:xx:xx。</p><p><b> 2.2 設(shè)計原理</b></p><p> ?。?)12/24時制的設(shè)置</p><p> 調(diào)用DOS操作系統(tǒng)模塊1,輸入12/24時制的第一位即高位,再調(diào)用DOS操作系統(tǒng)模塊1輸入12/24時制的第二位即低位。然后將輸入的兩個ASCII碼值轉(zhuǎn)換為壓縮BCD碼存入
16、定義的變量S中,用于與12H比較并跳轉(zhuǎn)到相應(yīng)進制顯示的程序中。</p><p> ?。?)時鐘起始時間的設(shè)置</p><p> 先調(diào)用設(shè)置光標子程序和清除屏幕子程序,調(diào)用DOS操作系統(tǒng)模塊9,在顯示屏上顯示提示符“please enter the time:”,再調(diào)用DOS操作系統(tǒng)模塊10,提示要輸入時鐘的起始時間,輸入時間的格式是“時(xx):分(xx):秒(xx)”。</p&g
17、t;<p><b> ?。?)延時程序</b></p><p> 調(diào)用TIME延時1s子程序,累加到存放秒值的寄存器DL中,并進行十進制調(diào)整。在累加的過程中,不斷地對時、分、秒進行比較調(diào)整。</p><p><b> ?。?)時間顯示</b></p><p> 調(diào)用DOS操作系統(tǒng)模塊9,可用來顯示存儲器內(nèi)
18、字符串。由于顯示的字符串必須為ASCII編碼,因此要編寫一個子程序?qū)嚎sBCD碼字符串轉(zhuǎn)換成ASCII碼字符串,字符串最后以字符“$”結(jié)束,并按時、分、秒的順序送存儲器緩沖區(qū)內(nèi)。調(diào)用DOS操作系統(tǒng)模塊9時,(DS:DX)應(yīng)指向字符串首址。</p><p> 程序一旦進入運行,就將不間斷地在顯示屏顯示時間,要想使程序停止運行,可同時在鍵盤按下Ctrl和Break二鍵。</p><p>&l
19、t;b> 2.3 程序流程圖</b></p><p><b> 第三章 詳細設(shè)計</b></p><p> 3.1 時制選擇模塊</p><p> 要想實現(xiàn)此功能需使用分支結(jié)構(gòu)程序,從1號中斷輸入時制,然后將輸入的兩個ASCII碼值轉(zhuǎn)換為壓縮BCD碼存入定義的變量S中,用于與12H比較,跳轉(zhuǎn)到相應(yīng)進制顯示的程序中。其程
20、序片段如下:</p><p> MOV AH,1 ;DOS功能模塊,從鍵盤輸入字符 INT 21H</p><p> MOV BL,AL ;將輸入的12或24轉(zhuǎn)換為壓縮BCD碼存放在變量S中</p><p> AND BL,0FH</p><p><b> SHL
21、 BL,1</b></p><p><b> SHL BL,1</b></p><p><b> SHL BL,1</b></p><p><b> SHL BL,1</b></p><p><b> MOV AH,1</b></
22、p><p><b> INT 21H</b></p><p><b> MOV CL,AL</b></p><p> AND CL,0FH</p><p><b> OR CL,BL</b></p><p><b> MOV S,CL&l
23、t;/b></p><p> MOV AH,1 ;輸入最后一個回車字符</p><p><b> INT 21H</b></p><p><b> ……</b></p><p><b> CMP S,12H</b></p><p
24、> JNZ JZ24 ;24進制則跳轉(zhuǎn)到J24執(zhí)行24進制顯示的程序</p><p><b> 3.2設(shè)置時間模塊</b></p><p> 先調(diào)用設(shè)置光標子程序和清除屏幕子程序,調(diào)用DOS操作系統(tǒng)模塊9,在顯示屏上顯示提示語“please enter the time:”,再調(diào)用DOS操作系統(tǒng)模塊10,提示要輸入時鐘的起始時間,輸入時間的格
25、式是“時(xx):分(xx):秒(xx)”。輸入的時間以字符串形式放在已定義的存儲器緩沖區(qū),然后調(diào)用TBCD和MUL10子程序,將存放在存儲器緩沖區(qū)的ASCII字符轉(zhuǎn)換成壓縮BCD碼,并將時、分、秒的值放置在寄存器CH、DH、DL中。其程序片段如下:</p><p> MOV DX,OFFSET CT ;DOS功能模塊,顯示字符串,提示從鍵盤輸入
26、;MOV AH,9 INT 21H</p><p> MOV DX,OFFSET BUFFER</p><p> MOV AH,10 ;DOS功能模塊,從鍵盤輸入字符串到緩沖區(qū) INT 21H</p><p> MOV BX,OFFSET BUFFER+2<
27、;/p><p> CALL TBCD ;時轉(zhuǎn)換為BCD數(shù) </p><p><b> INC BX</b></p><p><b> INC BX</b></p><p> CALL TBCD ;分轉(zhuǎn)換為B
28、CD數(shù) </p><p> INC BX </p><p><b> INC BX</b></p><p> CALL TBCD ;秒轉(zhuǎn)換為BCD數(shù)</p><p> MOV BX,OFFSET BUFFER+2 ;原輸入緩沖區(qū)的BCD
29、數(shù)轉(zhuǎn)換壓縮BCD數(shù)的同時將輸入緩沖區(qū)的數(shù)據(jù)傳給CH(時),DH(分),DL(秒)</p><p> MOV AL,[BX] </p><p> CALL MUL10 </p><p> MOV CH,AL </p><p><b> INC
30、 BX</b></p><p><b> INC BX</b></p><p><b> 3.3 延時模塊</b></p><p> 調(diào)用TIME延時1s子程序,累加到存放秒值的寄存器DL中,并進行十進制調(diào)整。在累加的過程中,不斷地對時、分、秒進行比較,秒不能等于60,分不能等于60,時不能等于12或
31、24。秒等于限值時,則使秒值為0并且分值加1;時等于限值時,先置零然后就轉(zhuǎn)顯示屏輸出。其程序片段如下:</p><p> TIME PROC </p><p><b> PUSH CX</b></p><p><b> PUSH AX</b></p>
32、<p> MOV AX,25000 ;嵌套循環(huán)AX為外循環(huán),CX為內(nèi)循環(huán)</p><p> WAITED: MOV CX,24000</p><p> GOON: LOOP GOON</p><p><b> DEC AX</b></p><p> JNZ WAITED&l
33、t;/p><p><b> POP AX</b></p><p><b> POP CX</b></p><p><b> RET </b></p><p> TIME ENDP</p><p><b> 3.4時間顯示模塊</
34、b></p><p> 調(diào)用DOS操作系統(tǒng)模塊9,可用來顯示存儲器內(nèi)字符串。由于顯示的字符串必須為ASCII編碼,因此要編寫一個子程序TRAN將寄存器CH、DH、DL內(nèi)壓縮BCD碼字符串轉(zhuǎn)換成ASCII碼字符串,字符串最后以字符“$”結(jié)束,并按時、分、秒的順序送存儲器緩沖區(qū)內(nèi)。調(diào)用DOS操作系統(tǒng)模塊9時,(DS:DX)應(yīng)指向字符串首址。其程序片段如下:</p><p> DISP
35、LAY: MOV BX,OFFSET BUFFER </p><p><b> INC BX</b></p><p><b> INC BX</b></p><p> CALL CLEAR</p><p><b> CALL SET</b>
36、;</p><p> MOV AL,CH ;將小時的壓縮BCD數(shù)轉(zhuǎn)化為ASCII碼在存儲器中進行修改</p><p> CALL TRAN </p><p><b> INC BX</b></p><p> MOV AL,':' ;在中間添加一個‘:’</p&
37、gt;<p> MOV [BX],AL</p><p><b> INC BX</b></p><p> MOV AL,DH </p><p> CALL TRAN </p><p><b> INC BX</b></p><p>
38、MOV AL,':'</p><p> MOV [BX],AL</p><p><b> INC BX</b></p><p> MOV AL,DL </p><p> CALL TRAN </p><p><b&g
39、t; ……</b></p><p> TRANPROC </p><p> MOV CL,AL </p><p><b> SHR AL,1</b></p><p><b> SHR AL,1</b>
40、;</p><p><b> SHR AL,1</b></p><p><b> SHR AL,1</b></p><p><b> OR AL,30H</b></p><p> MOV [BX],AL</p><p><b> IN
41、C BX</b></p><p><b> MOV AL,CL</b></p><p> AND AL,0FH</p><p><b> OR AL,30H</b></p><p> MOV [BX],AL</p><p><b> RET&
42、lt;/b></p><p><b> TRANENDP</b></p><p> 第四章 調(diào)試過程及結(jié)果</p><p><b> 4.1 調(diào)試過程</b></p><p> ?。?)編寫源程序,并命名為1.asm,并保存于asm文件夾中。</p><p>
43、?。?)在DOS窗口下匯編源程序,使之生成目標文件,檢查其中的錯誤并改正,直到編譯無錯誤出現(xiàn)為止。</p><p> ?。?)連接目標程序,產(chǎn)生可執(zhí)行文件1.exe,運行1.exe。</p><p> ?。?)屏幕上顯示提示語“12/24:”,用戶輸入12或者24即可實現(xiàn)12或24進制的轉(zhuǎn)換。</p><p> ?。?)屏幕上顯示“please enter the
44、time:”,用戶輸入初始時間,輸入格式為時(xx):分(xx):秒(xx)。</p><p> ?。?)電子鐘從用戶設(shè)定的時間開始計時。</p><p><b> 4.2 運行結(jié)果</b></p><p><b> ?。?)時制選擇界面</b></p><p> ?。?)設(shè)置初始時間界面<
45、/p><p><b> ?。?)時間顯示界面</b></p><p><b> 總結(jié)</b></p><p> 編寫各個模塊所需代碼并調(diào)試運行成功后,課程設(shè)計所要求的電子時鐘顯示軟件便設(shè)計完成了,它能顯示數(shù)字式的時鐘,并且能設(shè)置時鐘進制和初值。整個頁面簡潔清晰,方便用戶讀取,且操作簡捷,符合課程設(shè)計中的各項要求。</
46、p><p> 代碼完成后我深切地感覺到,在寫一個程序的時候,一定要先設(shè)計整個程序的流程圖。因為匯編語言是一種低級語言,沒有面向?qū)ο蟮母拍睿栽谧鲈O(shè)計的過程中,我們每一步要做什么,每一步要完成什么任務(wù)都必須有清楚的思路,而且畫流程圖在程序測試的過程中也有利于查錯。在編寫程序的時候,可以多利用左移或右移的操作,這樣會節(jié)省寄存器的使用。另外,當寄存器不夠用時,可以先把幾個寄存器壓棧,進行操作后再出棧,而且這樣不會改變寄
47、存器中的值。</p><p> 通過這次課程設(shè)計,我對日常生活中司空見慣的時鐘的工作原理有了一個比較深入的了解,認識到了理論與實際相結(jié)合的重要性,對課本上的知識在實際生活中的運用也有了進一步的了解,同時基本上能夠掌握利用匯編語言編程的步驟,可以說是受益匪淺。</p><p><b> 附錄</b></p><p><b> 參考
48、文獻</b></p><p> [1] 周佩玲,彭虎傅,傅忠謙. 微機原理與接口技術(shù). 電子工業(yè)出版社.2011 </p><p> [2] 楊記文. 匯編語言程序設(shè)計教程. 清華大學出版社.1998</p><p> [3] 王爽. 匯編語言(第2版).清華大學出版社.2008</p><p> [4] 丁輝. 匯編語言
49、程序設(shè)計(第3版).電子工業(yè)出版社.2009</p><p> [5] 邵玉祥. 匯編語言程序設(shè)計. 科學出版社.2005</p><p> [6] 賈志平. 微機原理與接口技術(shù). 中國水利水電出版社.1999</p><p> [7] 胡薔. 微機原理及應(yīng)用. 機械工業(yè)出版社.2006</p><p> [8] 朱金均,麻新旗. 微
50、機原理及應(yīng)用技術(shù)(第二版). 機械工業(yè)出版社.2005</p><p> [9] 沈美明,溫冬嬋. IBM-PC匯編語言程序設(shè)計.清華大學出版社.1993</p><p> [10] 錢曉捷. 新版匯編語言程序設(shè)計. 電子工業(yè)出版社.2007</p><p> [11] 顧濱. 8086微型計算機組成原理及接口.機械工業(yè)出版社.2001</p>
51、<p> [12] 呂淑萍. 微型計算機原理及應(yīng)用.哈爾濱工程大學出版社.2004</p><p> [13] 戴梅萼. 微型計算機技術(shù)及應(yīng)用.清華大學出版社.2005 </p><p> [14] 姚君遺. 匯編語言程序設(shè)計. 南京大學出版社</p><p> [15] (美)埃爾溫. Assembly language for intel-bo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《電子時鐘》微機原理課程設(shè)計
- 微機原理課程設(shè)計(電子時鐘)
- 基于微機原理電子時鐘課程設(shè)計
- 電子時鐘課程設(shè)計
- 電子時鐘 課程設(shè)計
- 電子時鐘課程設(shè)計
- 電子時鐘課程設(shè)計
- 課程設(shè)計--電子時鐘
- 課程設(shè)計----電子時鐘設(shè)計
- 電子時鐘課程設(shè)計--數(shù)字電子時鐘焊接調(diào)試報告
- 電子時鐘接口課程設(shè)計
- 電子時鐘課程設(shè)計 (2)
- 電子時鐘課程設(shè)計2
- led電子時鐘課程設(shè)計
- 電子時鐘課程設(shè)計報告
- eda課程設(shè)計---電子時鐘
- 電子時鐘課程設(shè)計 (2)
- 數(shù)字電子時鐘課程設(shè)計
- 數(shù)字電子時鐘課程設(shè)計
- eda課程設(shè)計--電子時鐘
評論
0/150
提交評論