《微型計算機系統(tǒng)原理及應用》課程設計電子時鐘顯示程序設計_第1頁
《微型計算機系統(tǒng)原理及應用》課程設計電子時鐘顯示程序設計_第2頁
《微型計算機系統(tǒng)原理及應用》課程設計電子時鐘顯示程序設計_第3頁
《微型計算機系統(tǒng)原理及應用》課程設計電子時鐘顯示程序設計_第4頁
《微型計算機系統(tǒng)原理及應用》課程設計電子時鐘顯示程序設計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄一、課程設計的目的 (2)二、課程設計的題目 (2)三、課程設計的主要內(nèi)容 (2) (一)、程序論述 (2)(二)、程序設計的步驟 (2)(三)程序流程圖(2)(四)程序 (4)(五)結(jié)果顯示(14)四、總結(jié)(14)(一)、本設計主要用到的dos、bios調(diào)用及功能 (14)(二)、心得體會 (15)五、參考文獻(16)一、課程設計的目的:本次微型計算機原理及應用課程設計我選擇了用匯編語言做電子時鐘,其主要目的是加強軟件編程能力。通過本次設計復習并熟練掌握微機原理中的基本操作指令、dos中斷功能調(diào)用以及bios中斷功能調(diào)用。最主要的是使用匯編語言編程來實現(xiàn)現(xiàn)實中許多電子產(chǎn)品的功能。二、課程

2、設計的題目:電子時鐘顯示程序設計三、課程設計的主要內(nèi)容:(一)、程序論述本次微型計算機原理及應用課程設計我做的題目是“電子時鐘顯示程序設計”,是使用匯編語言編程實現(xiàn)電子時鐘顯示的功能。主要提供了系統(tǒng)時間的調(diào)用,設置時間及顯示時間等功能。在我所做的程序中主要以下面的內(nèi)用運行。主程序首先注冊新的中斷處理程序從系統(tǒng)中取得時間,然后持續(xù)等待,直到在中斷程序中檢測到有按鍵時間的發(fā)生,然后主程序取消中斷處理程序。判斷輸入的鍵,然后根據(jù)相應的按鍵提供相應的設置功能。中斷處理程序每次得到系統(tǒng)定時器中斷時間、,判斷是否到達1秒,如果到達則更新時間,存入數(shù)據(jù)區(qū),然后更新數(shù)據(jù)的顯示。當有按鍵事件發(fā)生時,設置數(shù)據(jù)區(qū)的

3、按鍵標記為真。當主程序檢查到該標記為真時,則取消中斷程序的駐留。然后處理相應的事件。(二)程序設計的步驟:1、定義顯示界面2、調(diào)用系統(tǒng)時間,并將調(diào)用的二進制表示的時間數(shù)轉(zhuǎn)換成asc碼,并將時間存入內(nèi)存區(qū)。3、將存在系統(tǒng)內(nèi)存區(qū)的 時間數(shù)用顯示字符串的形式顯示出來。4、獲取鍵盤的按鍵值,判斷鍵值并推出系統(tǒng)。(三)程序流程圖:開始設置輸入字符串用緩沖區(qū),定義變量初始化界面輸入的asc碼轉(zhuǎn)換成16進制數(shù)dos調(diào)用,顯示:welcome to simple clock取得系統(tǒng)時間,時、分、秒分別存ch、cl、dh時間定時更新關(guān)中斷開中斷dh清零,cl加1cl清零,ch加1ch清零顯示時間16進制轉(zhuǎn)換成1

4、0進制顯示字符串外部中斷?結(jié)束(dh)60h??(cl)60h??(ch)24h?yyyynnnn延時1秒(四)程序:.model small;- .stack;- .datahour db ?min db ?sec db ?msec db ? nhour db 0 ;設置時間使用nmin db 0 ;設置時間使用nsec db 0 ;設置時間使用funkey db ? ;功能設置使用keysw db 00h ;是否按鍵開關(guān)switch db 0ffh ;刷新開關(guān),真,則不斷在定時器中斷函數(shù)中刷新,否則不刷新 n db 0dh,0ah,$ count dw 1 smsg db * welcom

5、e to simple clock *,0dh,0ah,$ qmsg db * please input q to quit *,0dh,0ah db ,* input s to set new time *,0dh,0ah,$ settmsg db please input new time(hh:mm:ss),0dh,0ah,$ authormsg db _,0dh,0ah db author: dingchuanxiang,0dh,0ah db e-mail: dingsg3c16,0dh,0ah db class: xin gong_042_08 hao,0dh,0ah db date

6、: 2007/07/07,0dh,0ah db _,0dh,0ah,$;- .codepusha macro push ds push ax push bx push cx push dx endmpopa macro pop dx pop cx pop bx pop ax pop ds endmmain proc far start: mov ax,data mov ds,ax push ds call gettime ;取得系統(tǒng)時間 call initui ;初始化界面 mov al,1ch mov ah,35h int 21h ;dos調(diào)用取中斷向量 push es push bx pu

7、sh ds mov dx,offset tupdate mov ax,seg tupdate mov ds,ax mov al,1ch mov ah,25h int 21h ;dos調(diào)用設置中斷向量 pop ds in al, 21h and al, 11111100b out 21h,al stidelay: pusha cmp ds:keysw,0ffh ;檢查是否有按鍵 jz exitdelay ;有按鍵則跳轉(zhuǎn) popa jmp delayexitdelay: popa pop dx pop ds mov al, 1ch mov ah, 25h int 21h ;dos調(diào)用設置中斷向量

8、pop ds ;restore ds ;讀敲入的按鍵 mov ah,07h int 21h cmp al,s jne next1;判斷讀入字符然后進行相應處理,此時中斷函數(shù)已經(jīng)取消,只是單線程sett: mov ds:funkey,al call settime ;調(diào)用子函數(shù)設置時間 mov ds:keysw,00h jmp startnext1: cmp al,q je endmain mov ds:keysw,00h jmp startendmain: mov ax,4c00h ;exit int 21hmain endp;定時中斷程序()tupdate proc near push ds

9、 ;保存工作寄存器 push ax push bx push cx push dx mov ax, data mov ds, ax sti dec count ;時間間隔總數(shù)(約18.2次為1秒) jnz exit ;不到一秒則跳轉(zhuǎn) mov count,18 call caltime ;更新時間;檢測刷新開關(guān)是否打開 mov bl,ds:switch cmp bl,00 jz exit;檢測是否有按鍵按下,取適當?shù)闹颠M行退出控制 pusha mov ah, 0bh ;檢測是否輸入消息(按鍵消息) int 21h inc al jnz nokey mov ds:keysw,0ffh ;設置已經(jīng)被

10、按鍵 popa jmp exitnokey: popa call displyh ;顯示小時 call displym ;顯示分鐘 call displys ;顯示秒exit: cli mov al,20h out 20h,al pop dx pop cx pop bx pop ax pop ds iret ;返回中斷tupdate endp;-;關(guān)閉定時刷新開關(guān)closesw proc near pusha mov bl,0h mov ds:switch,bl ;關(guān)閉刷新開關(guān) popa retclosesw endp;-;打開定時刷新開關(guān)opensw proc near pusha mov

11、bl,0ffh mov ds:switch,bl ;打開刷新開關(guān) popa retopensw endp;-;初始化顯示界面initui proc near pusha ;設置顯示方式(4025 黑白文本,16級灰度) mov ah,0h mov al,00h ;bios調(diào)用設置顯示方式 int 10h ;顯示頭標題 mov dh,00h mov dl,00h call movcur mov dx,offset smsg mov ah,09h ;dos調(diào)用顯示字符串 int 21h ;call dos ;顯示結(jié)尾標題 mov dh,06h mov dl,02h call movcur mov

12、dx,offset qmsg mov ah,09h ;dos調(diào)用顯示字符串 int 21h ;顯示作者信息 mov dh,0bh mov dl,00h call movcur mov dx,offset authormsg mov ah,09h ;dos調(diào)用顯示字符串 int 21h popa retinitui endp;-;移動光標(dh:row,dl:col); dh ;參數(shù)設置行; dl ;參數(shù)設置列movcur proc near pusha ;設置光標位置 mov ah,2h mov bh,0 int 10h popa ret movcur endp;-;顯示小時displyh p

13、roc near pusha ; 設置光標位置 mov dh,3h mov dl,13d. call movcur mov dh,0 mov dl,ds:hour call output ;調(diào)用output函數(shù)輸出小時 mov dl,: mov ah,02h int 21h popa retdisplyh endp;-;顯示分鐘displym proc near pusha ;設置光標位置 mov dh,3h ;set row no. mov dl,16d ;set column no. call movcur mov dh,0 mov dl,ds:min call output mov dl

14、,: mov ah,02h int 21h popa retdisplym endp;-;顯示秒displys proc near pusha ;設置光標位置 mov dh,3h ;set row no. mov dl,19d ;set column no. call movcur mov dh,0 mov dl,ds:sec call output popa retdisplys endp;-;調(diào)用dos中斷取得系統(tǒng)時間gettime proc near pusha mov ah,2ch ; 取得系統(tǒng)時間,ch:cl=(h:m),dh:dl=(s:1/100s) int 21h mov ds

15、:hour,ch ;取得小時 mov ds:min,cl ;取得分鐘 ; dec dh ;延遲1秒 mov ds:sec ,dh ;取得秒 mov ds:msec,dl popa retgettime endp;-;調(diào)整時間,累加秒,分,時caltime proc near pusha ;調(diào)整秒 inc ds:sec cmp ds:sec,60d jb endc mov ds:sec,0h setm: ;調(diào)整分鐘 inc ds:min cmp ds:min,60d jb endc mov ds:min,0h seth: ;調(diào)整小時 inc ds:hour cmp ds:hour,24d jb

16、endc mov ds:hour,0h endc: popa retcaltime endp;-;設置時間settime proc near pusha call closesw ;關(guān)閉定時刷新 mov dh,11h mov dl,00h call movcur ;移動光標 mov dx,00h mov ah,09h ;輸出提示信息,提示輸出設置時間 mov dx,offset settmsg int 21h call readnt ;讀取時間(hh:mm:ss);設置時間 mov ch,ds:nhour ;hour mov cl,ds:nmin ;min mov dh,ds:nsec ;se

17、cond mov dl,0h ;1/100 second mov ah,2dh int 21h cmp al,00h je setsuccess mov ah,02h ;設置時間中斷調(diào)用失敗處理 mov dl,! int 21h setsuccess: call opensw ;打開刷新開關(guān) popa retsettime endp;-rsetsuccess: call opensw ;打開刷新開關(guān) popa ret;-;讀取時間(從ascii碼到16進制數(shù)值的轉(zhuǎn)換)(hh:mm:ss)readnt proc near pusha mov ah,01h int 21h mov bx,0h ;b

18、x存放得到的數(shù)值(16進制) loop1: cmp al,0 ;讀取小時 jl endloop1 cmp al,9 jg endloop1 sub al,30h cbw xchg ax,bx mov cx,0ah mul cx xchg ax,bx add bx,ax mov ah,01h int 21h jmp loop1 ;存取小時endloop1: mov ds:nhour,bl; mov bx,0h; loop2: mov ah,01h int 21h ;bx存放得到的數(shù)值(16進制) cmp al,0 ;讀取分鐘 jl endloop2 cmp al,9 jg endloop2 su

19、b al,30h cbw xchg ax,bx mov cx,0ah mul cx xchg ax,bx add bx,ax jmp loop2 ;存取分鐘endloop2: mov ds:nmin,bl mov bx,0h loop3: mov ah,01h int 21h ;bx存放得到的數(shù)值(16進制) cmp al,0 ;讀取秒 jl rlast cmp al,9 jg rlast sub al,30h cbw xchg ax,bx mov cx,0ah mul cx xchg ax,bx add bx,ax jmp loop3rlast: ;存取秒 mov ds:nsec,bl po

20、pa retreadnt endp;-;輸出字符(dx中存放十進制數(shù)值)output proc near pusha mov ax,dx mov dx,00h mov cx,0h trans: mov bx,000ah div bx add dl,30h mov dh,0h push dx inc cx mov dx,00h cmp ax,00h jg trans cmp cx,01h jg print addzero: ;增加前導0,比如:02 mov dh,0 mov dl,0 push dx inc cx print: cmp cx,0h jle endout pop dx mov dh

21、,0 dec cx mov ah,02h int 21h jmp print endout: popa retoutput endp ;- end start ;end assemble .end(五)結(jié)果顯示: 四、總結(jié): 1、本設計主要用到的dos、bios調(diào)用及功能 dos中斷功能調(diào)用:ah功能調(diào)用參數(shù)返回參數(shù)01鍵盤輸入并回顯al = 輸入字符02顯示輸出dl = 輸出字符07鍵盤輸入(無回顯)al = 輸入字符09顯示字符串ds : dx = 串地址(s為串結(jié)束字符)0b檢驗鍵盤狀態(tài)al = 00 有輸入 = ff 無輸出25設置中斷向量ds : dx = 中斷向量 al = 中斷類

22、型號2c取時間ch :cl = 時 :分dh :dl =秒:1/100秒2d設置時間ch :cl = 時 :分dh :dl =秒:1/100秒al =00 成功 = ff無效35取中斷向量al=中斷類型號es :bx = 中斷向量4c帶返回碼結(jié)束al = 返回碼bios中斷功能調(diào)用;ah功能調(diào)用參數(shù)返回參數(shù)0設置顯示方式al=00 4025黑白方式2設置光標位置bh = 頁號dh、dl = 行、列2、心得體會 課程設計是培養(yǎng)學生綜合運用所學的知識,發(fā)現(xiàn)、提出、分析和解決實際問題和鍛煉能力的主要過程,是對學生實際能力的綜合體現(xiàn)。這次微機原理課程設計歷時兩個星期,在這兩個星期的日子里,可謂是歷盡艱難,但到最后還是取得了成功,學到了很多的東西。同時不僅鞏固了以前所學的知識,而且學到了很多在書本上所沒有學到的知識。 通過本次課程設

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論