霓虹燈模擬顯示課程設計_第1頁
霓虹燈模擬顯示課程設計_第2頁
霓虹燈模擬顯示課程設計_第3頁
霓虹燈模擬顯示課程設計_第4頁
霓虹燈模擬顯示課程設計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.設計任務及要求分析 本次課程設計要求用匯編語言設計“霓虹燈”模擬顯示,需要實現(xiàn)的功能如下:1、按下b/B鍵,分六筆快速畫出矩形及其兩條對角線;2、按下y/Y鍵,流水燈從左到右依次點亮,然后一次熄滅;3、按下q/Q鍵,退出程序。分析本設計不需要硬件設備,在微機原理實驗集成環(huán)境MF2KP中編寫程序,調用DOS命令和BIOS命令,并用合適的字符代替霓虹燈來實現(xiàn)。1 方案論證2.1方案一 我們可以采用編寫延時子程序的方法來實現(xiàn)延時,這種方法的主要原理是運用計算機相應每一條的時間積累。程序如下:push bxpush cxmov cx ,xx ;輸入正數(shù)A1:mov bx,xx ;輸入正數(shù)A2:de

2、c bx Jnz A1Loop A2pop cxpop bx此方案的原理是運用循環(huán)指令來進行,主要通過設置cx和bx的值來進行復循環(huán),從而達到時間的積累即延時。2.2方案二 方案二:運用DOS功能調用。采用21H來中斷調用,功能號為AH=2CH,完成的功能是設置時間,DH的值變換一次是0.01秒,這樣通過設置DH的值來設置時間的延時。2.3方案比較 兩種方案在理論上都是可行的,但是課程設計任務在時間要求上不是很嚴格只要區(qū)分快慢的大概效果既可,故選擇方案一。3設計原理3.1 設計思想 本次課程設計主要中顯示圖案是通過顯示單個字符逐步實現(xiàn)的,通過移動光標可以改變字符輸出的位置,位置的改變又是通過宏

3、定義定義了一個程序段用于改變光標,設計了兩個變量分別為光標在屏幕上的行和列坐標,把已經(jīng)設計好了的圖案的行列坐標分別定義在數(shù)據(jù)段的行列數(shù)據(jù)組里,用指針自加的方式進行連續(xù)調用顯示。在顯示中插入延時程序控制顯示的效果。本次課程設計設計了二個延時程序分別滿足二種不同的延時需要。延時程序是通過LOOP循環(huán)來實現(xiàn)的,可以改變CX的值來改變延時的長短。本次課設還涉及到清屏功能,故設計了一個清屏子程序,通過BIOS功能的調用實現(xiàn)清屏,和屏幕屬性的設置。 整個程序分為三部分:第一段是繼續(xù)與否的選擇,檢查輸入是否為設計的字符b/B,是則進入下一程序斷,否則繼續(xù)檢測;第二段是快速顯示設計圖案,通過光標移動逐步顯示完

4、預設圖案,并詢問是否進入下一程序段,檢查輸入是否為字符yY,是則進入下一程序段,否則跳回第二段程序重復執(zhí)行一遍;第三段程序以較慢速度依次出現(xiàn)“*”,以實現(xiàn)模擬流水燈的效果,然后一次消失,在這個過程中檢查是否有“q/Q”輸入,有則跳轉到中止程序段退出程序,否則繼續(xù)。3.2程序中用到的DOS功能調用(1) 01H號功能調用(中斷指令int 21h)功能:從鍵盤輸入1個字符輸入?yún)?shù):無輸出參數(shù):AL=ASCII碼(2) 02H號功能調用(中斷指令int 21h)功能:在屏幕上顯示1個字符(ASCII碼)輸入?yún)?shù):DL=ASCII碼輸出參數(shù):無。(3) 09H號功能調用(中斷指令int 21h)功能:

5、多字符輸出到屏幕顯示輸入?yún)?shù):DS:DX=輸出字符緩沖區(qū)首地址輸出參數(shù):無該功能對輸出字符的個數(shù)沒有要求,但輸出字符串要以$結束。(4) 4CH號功能調用(中斷指令int 21h)功能:返回操作系統(tǒng)4CH調用:MOV AH,4CH3.3程序中用到的BIOS功能調用1) 功能01H調用(中斷指令int 16h)功能描述:檢測鍵盤輸出參數(shù):ZF=1 無碼可讀 ZF=0 輸入于AX中2) 功能02H調用(中斷指令int 10h)功能描述:用文本坐標下設置光標位置入口參數(shù):AH=02H BH=頁號 DH=行坐標 DL=列坐標 出口參數(shù):無3) 功能06H調用(中斷指令int 10h)功能描述:初始化屏

6、幕或滾屏入口參數(shù):AH=06H向上滾屏,AH=07H向下滾屏AL=滾動行數(shù)(0,清窗口)BH=空白區(qū)域的缺省屬性(CH、CL)=窗口的左上角坐標(X、Y)(DH、DL)=窗口的右下角坐標(X、Y) 出口參數(shù):無4.程序設計流程圖 程序流程圖如下圖所示,分為主程序流程圖和子程序流程圖。主程序流程圖如圖41所示;置光標宏定義流程圖如圖42所示;延時子程序流程圖如圖43所示;字符顯示流程圖如圖44所示。開始提示字符顯示 系統(tǒng)初始化入棧保存數(shù)據(jù) 是否有g輸入系統(tǒng)初始化緩慢顯示圖案 賦AX、BX、CX、DX 是否有y輸入入調用中斷置光標閃爍圖案 出?;謴蛿?shù)據(jù) 是否有esc入 結束圖41主流程圖 圖42置

7、光標宏定義 LOOP 循環(huán)SI、DI自加給CX賦值SI=行字符串首地址DI=列字符串首地址調用置光標程序段光標處輸出*出?;謴蛿?shù)據(jù)ZF=1?DX自減LOOP循環(huán)CX賦值DX賦值入棧保存數(shù)據(jù)圖43延時子程序流程圖 圖44顯示字符程序段流程圖 本次課程設計用到了二個不同大小的延時效果,故在延時程序中改變CX的賦值來改變延時長短。清屏子程序流程圖與置光標宏定義類似只需改變相應寄存器賦值和調用中斷號即可。顯示圖案時分部分顯示連續(xù)的字符就能達到顯示整個圖案的效果。5. 主要程序分析5.1設置光標的宏定義程序如下:MA macro op1,op2push ax ;保存數(shù)據(jù)push bxmov ah,02h

8、mov bh,0mov dh,op1 ;光標縱坐標mov dl,op2 ;光標橫坐標int 10hpop bxpop axEndm 該宏定義主要是調用功能02H(中斷指令“INT 10H”)來確定光標的位置的。該定義的主要功能首先是指定位置來完成字符或*的顯示與消失。5.2時間延遲程序程序如下: waiting_1 proc near push cx push dx mov dx,0ffh dll: mov cx,65500 dl2: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_1 endpwaiting_2 proc near push

9、cx push dx mov dx,0fffh d2l: mov cx,65500 d22: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_2 endp本題目中需要兩種不同的延遲,通過改變dx的值來大致控制時間的長短。6. 程序調試顯示6.1矩形及其對角線的顯示 程序運行之初,首先在屏幕上出現(xiàn)提示字符“please input b to begin”如圖61所示,按下b/B鍵,屏幕上以較快速度分六筆畫出矩形及其對角線,并由提示符“please input y to chose”如圖62所示。 圖61 初始提示字符 圖62 矩形及其對角線的顯示

10、 6.2流水燈的運行 根據(jù)提示符,按下Y/y鍵,屏幕和字符的顏色會變化,用*號代替燈來流水燈的效果,如圖63所示,然后依次熄滅,并出現(xiàn)提示符“please q to quit”如圖64。最后根據(jù)提示符,按下Q/q鍵,退出程序。 如圖63 流水燈出現(xiàn) 64圖 流水燈消失7.心得體會 兩周的課程設計就這樣匆匆結束,感覺時間很快,但是本次課程設計讓我學到了很多東西。首先,通過對這程序的制作,加深了我對課本知識的理解和掌握,使我對匯編語言的基本知識的使用更加熟練,同時也讓我學到了新的知識,如DOS命令和BIOS命令的調用,讓我大膽編寫程序,實現(xiàn)自己想要的功能。其次,在這次課程設計,需要與同學充分交流,

11、加強團結合作的技巧。通過查閱以下資料如課本以及網(wǎng)絡也學到了一些課本上沒有的東西,拓寬了自己的知識面,增加了學好匯編語言的信心。此外,通過這個課程設計,讓我切實的體會到了微機原理的重要性,同時增強了我的學習興趣,然我發(fā)現(xiàn),實際生活的常用知識都來自于我們所學的課本基礎知識。 本次課程設計是一個綜合的程序,平時的很多程序都用到了。很多子程序的設計是固定的,因此可以直接從指導資料中調用,大多只需要修改幾個參數(shù)就可以,這大大方便了我們的設計,為我們節(jié)省了很多的時間。 特別之處的是,通過本次霓虹燈模擬顯示的課程設計,我掌握了關于DOS和BIOS中斷功能調用,如顏色顯示,屏幕屬性,字符輸入輸出,字符串輸入輸

12、出等。通過綜合程序編寫的聯(lián)系,學會了編寫相對復雜程序的基本方法步驟。由于和同學相互交流學習,加強了合作能力,當要用到一些完全陌生的知識時需要獨立去查詢資料,加強了自學能力。 以上心得體會勢必對我以后的學習和工作大有幫助,衷心感謝學校給我們這個寶貴的學習機會和老師的耐心指導!參考資料1 齊志儒、高福祥.匯編語言程序設計.沈陽:東北大學出版,20012 劉均、周蘇、金海榮.匯編語言程序設計實驗教程.北京:科學出版社,20093 周佩玲、彭虎、傅忠謙.微機原理與接口技術.北京:電子工業(yè)出版社,20054 方立友.微機原理與匯編語言實用教程.北京:清華大學出版社,20075 凌志浩.微機原理與接口技術

13、.上海:華東理工大學出版社,20066 朱世鴻.微機系統(tǒng)和接口應用技術.北京:清華大學出版社,2006 附錄程序清單如下所示:MA macro op1,op2push ax ;保存數(shù)據(jù)push bxmov ah,02hmov bh,0mov dh,op1 ;光標縱坐標mov dl,op2 ;光標橫坐標int 10hpop bxpop axendmdata segmentinfo_1 db 'please input b to began',0dh,0ah,'$'info_2 db 'please input y to choose another way

14、',0dh,0ah,'$'info_3 db 'please q to quit',0dh,0ah,'$'hang_1 db 8,8,8,8,8,8,8,8,8,8 db 8,9,10,11,12,13,14,15,16,17 db 17,17,17,17,17,17,17,17,17,17 db 17,16,15,14,13,12,11,10,9,8,7hang_2 db 8,9,10,11,12,13,14,15,16,17 db 8,9,10,11,12,13,14,15,16,17hang_3 db 14,14,14,14,14,

15、14,14lie_1 db 35,36,37,38,39,40,41,42,43,44 db 44,44,44,44,44,44,44,44,44,44, db 44,43,42,41,40,39,38,37,36,35 db 35,35,35,35,35,35,35,35,35,35lie_2 db 35,36,37,38,39,40,41,42,43,44 db 44,43,42,41,40,39,38,37,36,35lie_3 db 30,32,34,36,38,40,42 count db 8clour db 0f7hdata endscode segment assume ds:d

16、ata,cs:code;*清屏子程序* clear_screen proc near push ax push bx push cx push dx mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h pop dx pop cx pop bx pop ax ret clear_screen endp;*延遲子程序* waiting_1 proc near push cx push dx mov dx,0ffh dll: mov cx,65500 dl2: loop dl2 dec dx jnz dll

17、 pop dx pop cx retwaiting_1 endpwaiting_2 proc near push cx push dx mov dx,0fffh d2l: mov cx,65500 d22: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_2 endpstart: mov ax,data mov ds,ax xor ax,ax xor bx,bx xor cx,cx xor dx,dx mov ah,02h ;置光標位子 mov bh,0 ;BH=頁數(shù) mov dh,0 ;DHDL=行列數(shù) mov dl,0 int 10hinf

18、o: lea dx,info_1 ;提示字符輸出 mov ah,9 int 21h mov ah,01h int 21h cmp al,'b' ;輸入字符檢查是否為g/G je xianshi_1 ;是則跳轉到xianshi_1 cmp al,'B' ;否則跳回info重新檢查 je xianshi_1 jmp info;*方式一顯示程序*xianshi_1: mov ah,06h ;屏幕初始化 mov bh,29H ;卷入行屬性 mov cx,0 ;左上角行列坐標(0,0) mov dx,1850h ;右下角行列坐標(80,80) int 10h lea si

19、,hang_1 ;取hang_1,lie_1字符串的首地址 lea di,lie_1 mov cx,40 ;cx賦值確定循環(huán)次數(shù) loop_1: MA si,di ;調用宏定義移動光標 mov dl,'' mov ah,02 ;在光標處顯示輸出* int 21h inc si ;指針自加 inc di MA 0,0 ;移動光標 call waiting_1 ;延時 loop loop_1 ;循環(huán)loop_1xianshi_2: ;顯示圖案第二部分 lea si,hang_2 lea di,lie_2 mov cx,20loop_2: MA si,di mov dl,'&

20、#39; mov ah,02 int 21h inc si inc di MA 0,0 call waiting_1 loop loop_2 lea dx,info_2 ;方式選擇提示 mov ah,9 int 21h mov ah,01h int 21h cmp al,'y' ;檢查輸入字符是否為y/Y je liushui ;是,則跳轉到liushui cmp al,'Y' ;否,則跳轉到xianshi_1 je liushui call clear_screen ;調用清屏程序 jmp xianshi_1;*流水燈子程序*liushui: call clear

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論