微機課設霓虹燈顯示程序.doc_第1頁
微機課設霓虹燈顯示程序.doc_第2頁
微機課設霓虹燈顯示程序.doc_第3頁
微機課設霓虹燈顯示程序.doc_第4頁
微機課設霓虹燈顯示程序.doc_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學 號: 0121411371305課 程 設 計題 目霓虹燈顯示程序設計學 院自動化學院專 業(yè)自動化卓越工程師班 級自動化ZY1402姓 名潘江寶指導教師李道遠2016年12月2日課程設計任務書學生姓名: 潘江寶 _ 專業(yè)班級: 自動化ZY1402 指導教師: 李道遠 工作單位: 自動化學院 題 目: 顯示姓名字樣的程序 初始條件:編寫顯示“自己姓名”字樣的程序,每隔1秒鐘變一次顏色(變?nèi)危?。按Q退出程序。要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)(1) 設計任務及要求分析(2) 方案比較及認證說明(3) 系統(tǒng)原理闡述(4) 硬件設計課題需要說明:硬件原理,電路圖,采用器件的功能說明(5) 軟件設計課題需要說明:軟件思想,流程圖,源程序及程序注釋(6) 調(diào)試記錄及結(jié)果分析(7) 總結(jié)(8) 參考資料(9) 附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實物圖時間安排:11月20日11月23日:收集資料,方案選擇11月23日11月30日:整體流程,程序細節(jié),調(diào)試程序12月1日12月7日: 課程設計報告撰寫12月8日:交報告,程序演示,答辯指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日目錄摘要IABSTRACTII1設計任務及要求分析11.1設計任務目的分析11.2具體要求分析12方案比較及認證說明22.1方案設計22.2方案選擇23 系統(tǒng)原理闡述34 設計思路及匯編程序44.1 主程序設計44.2 子程序yanse1設計54.3 子程序disp的設計54.4 子程序delay的設計64.5 退出程序及中斷指令調(diào)用64.6 源程序代碼75調(diào)試記錄及結(jié)果分析17總結(jié)20參考文獻21微機原理與接口技術課程設計說明書摘要隨著現(xiàn)代科學技術的發(fā)展,計算機的應用越來越廣泛,軟件技術應用于生活的各個領域。而軟件的開發(fā)離不開編程,因此,微機原理與接口技術的應用也更加深入了。微機原理課程設計,目的在于檢測我們這一學期微機原理課程學習的成果,加深我們對匯編語言中各種指令的理解與應用,提高我們動腦思考、動手操作的能力。最后通過emu8086仿真軟件編譯運行來實現(xiàn)設計要求。本次微機課設,要求設計一個顯示自己姓名字樣的程序,通過編寫匯編程序,學習子程序的編寫與調(diào)用,以及BIOS和DOS中斷指令的調(diào)用,掌握基本的編程方法,實現(xiàn)用字符點陣顯示漢字并能實現(xiàn)顏色變換,完成設計要求,鍛煉自己的能力。關鍵字:匯編 子程序 中斷ABSTRACTWith the development of modern science and technology, the application of the computer is more and more widely. Software technique is applied to all areas of life. And software development cannot leave the programming, Therefore, the application of microcomputer principle and interface technology are also more deeply. Microcomputer principle curriculum design, the purpose is to test the findings of our microcomputer principle course this semester, to deepen our understanding of all kinds of instructions in assembly language and application, and improve our brain thinking and hands-on ability. At last, by using emu8086 simulation software compile operation to achieve the design requirements.This computer classes set to design a display name on your programs, by writing assembler, learning to write and call subroutine, and call the BIOS and DOS interrupt instruction. Mastering the basic programming methods, realizing the character dot matrix display Chinese characters and be able to achieve color transformation, to complete the design requirements, exercise their abilities.Keywords: assembly subroutine interruptI微機原理與接口技術課程設計說明書1設計任務及要求分析1.1設計任務目的分析通過課程設計任務書明確本次設計要求是通過匯編編程,在屏幕上能夠顯示“自己姓名”的字樣,并能夠?qū)崿F(xiàn)在一定時間間隔后變換一次顏色,共需要變色三次,最后按Q或q鍵退出程序,根據(jù)實際調(diào)試過程完成課程設計報告。1.2具體要求分析對課程設計任務書的要求進行具體分析,大致可以分成四個模塊實現(xiàn)功能要求:顯示模塊、變色模塊、延時模塊以及退出程序模塊。顯示模塊可以實現(xiàn)在屏幕上輸出“自己姓名”的字樣,即顯示“潘江寶”三個字;變色模塊可以實現(xiàn)將顯示的名字從一種顏色轉(zhuǎn)換到另一種顏色;延時模塊可以保證一種顏色顯示完成后,在進行下一次變色之前有一定的時間間隔;退出模塊是在完成主要功能后顯示提示信息,并根據(jù)用戶按鍵退出程序的模塊。通過上述分析,將程序分成若干模塊可以使程序更加具有條理性,同時分模塊編程及調(diào)試方便我們對程序的修改。根據(jù)實際要求,編寫好各模塊程序后,通過主程序的調(diào)用和相應的中斷指令完整的實現(xiàn)設計要求,即在屏幕上顯示“孟德輝”三個字,并能夠變換顏色三次,完成實驗報告。172方案比較及認證說明2.1方案設計通過對設計要求的認真分析,主要提出以下兩種可行方案。方案一:在數(shù)據(jù)段進行定義。用字符構造出“潘江寶”字樣存入數(shù)據(jù)段緩存區(qū)中,在主程序運行時直接調(diào)用輸出到屏幕上,再通過設置文本與背景顏色進行顏色之間的轉(zhuǎn)換,達到設計要求。其優(yōu)點是可以快速輸出,快速變色;但其缺點是若要輸出的文字過多,在數(shù)據(jù)段定義比較麻煩,而且需要占用較多的緩存。方案二:利用字模軟件產(chǎn)生“潘江寶”三個字的字模,將字模數(shù)據(jù)定義到數(shù)據(jù)段中,在程序運行中調(diào)用響應的字模數(shù)據(jù)循環(huán)輸出,可以實現(xiàn)在屏幕上顯示由字符組成的漢字。方案二的優(yōu)點是設計方法簡單,占用緩存較小,可以輸出較多的漢字;其缺點是輸出速度慢,顏色轉(zhuǎn)換過程也比較繁瑣。2.2方案選擇通過分析比較,雖然方案一在本次課程設計中設計更簡單,但方法不具有普遍性,不夠使用;盡管方案二較方案一運行速度慢,但可操作性好,所以在本次課程設計中采用方案二進行相關的設計,以下將對方案二進行詳細的說明。3 系統(tǒng)原理闡述本次課程設計題目較簡單,設計思路及方法比較簡單,但過程比較繁瑣,主要是運用本學期微機原理課程學習的知識,用基本的匯編語句進行屏幕輸出顯示以及變色等功能。程序主要以顯示模塊為主,再輔助以顏色設置、光標設置等中斷指令,實現(xiàn)字符的輸出構成漢字文字。完成一次顯示后,通過改變寄存器BL的值改變輸出顏色,將光標移動到起始位置再次進行一次輸出,但是顏色不同。如此循環(huán)三次,完成主要的設計要求,然后根據(jù)提示信息輸入退出程序。在程序設計中,顯示、延時等模塊主要有子程序完成,主程序就比較簡單,這樣設計可以使程序的條理性更加清晰,方便調(diào)試。 微機原理與接口技術課程設計說明書4 設計思路及匯編程序4.1 主程序設計根據(jù)程序設計要求及方案分析,首先對屏幕進行初始化設置,然后對數(shù)據(jù)段的相關數(shù)據(jù)進行調(diào)用。程序的主要流程是將數(shù)據(jù)段中pan字在屏幕的輸出起始地址送給SI,將字模數(shù)據(jù)的偏移地址送給寄存器BL,然后調(diào)用子程序yanse1將第一種顏色的pan字輸出到屏幕上;用同樣的方式輸出jiang字和bao字。第一次顯示完成后,經(jīng)過一段延時,用上述同樣的方法依次調(diào)用子程序yanse2進行第二次輸出,調(diào)用子程序yanse3進行第三次輸出,調(diào)用子程序yanse4進行第四次輸出。三次變色完成后,屏幕上將出現(xiàn)提示信息:按Q或q退出程序。程序運行完成,基本實現(xiàn)設計要求。在子程序調(diào)用改變顏色的過程中,四個子程序基本相同,只是輸出顏色有所不同。主程序流程圖見圖1. 圖1 主程序流程圖4.2 子程序yanse1設計由主程序的設計可以看出,子程序yanse2、yanse3、yanse4與子程序yanse1基本相同,只是顏色賦值不同,這里只對子程序yanse1進行詳細說明,其余的跟這個相同。根據(jù)字模點陣的設計,本次課程設計一個漢字采用的是1616的點陣,該子程序的設計主要是對行循環(huán)的設計,程序中調(diào)用的子程序disp是對列循環(huán)的設計。圖2 子程序yanse1的流程圖子程序yanse1的設計過程主要是設置循環(huán)次數(shù)16,將字模第一行的數(shù)據(jù)送給bx,然后調(diào)用子程序disp,指針到下一行的數(shù)據(jù)位置,判斷是否循環(huán)完成16次,若完成返回主程序,否則繼續(xù)循環(huán),直到一個漢字點陣的16行輸出完成。 子程序yanse1的流程圖見圖2.4.3 子程序disp的設計對于1616的漢字字模點陣,每一行都有16個點,要對每個點的輸出狀態(tài)進行判斷就要循環(huán)十六次。每一行的字模數(shù)據(jù)在計算機內(nèi)是以16位二進制數(shù)保存的,每進行一次循環(huán),對此二進制數(shù)左移一位,判斷CF標志位是1還是0,若是1則輸出*,是0則輸出空格,這樣就可以保證每一個點的輸出狀態(tài)。依次循環(huán)16次,完成一行的輸出,然后取下一行的數(shù)據(jù)進行循環(huán)輸出,從而實現(xiàn)一個完整漢字的輸出。圖3 子程序disp的流程圖子程序diap的流程圖見圖3.4.4 子程序delay的設計該延時程序采用的是bx,cx雙重循環(huán)耗時,同時給bx,cx賦值可以提高延時時間,但由于程序運行較慢,在實際調(diào)試過程中,bx,cx賦值都很小,節(jié)約運行時間。子程序delay的流程圖見圖4.圖4 子程序delay的流程圖4.5 退出程序及中斷指令調(diào)用程序退出指令比較簡單,主要是調(diào)用DOS中斷的21h中斷指令,實現(xiàn)程序退出。退出指令的流程圖見圖5.在本次課程設計中,主要用到的中斷指令是BIOS的10h中斷與DOS的21h中斷:1)int 10h的2號功能圖5 退出指令的流程圖入口參數(shù):AH=2(功能號),BH=頁號,DH=行號,DL=列號。 出口參數(shù):無。根據(jù)DX確定了光標位置。2)int 21h的9號功能格式:LEADX,待顯示字符串首偏移地址MOVAH,9INT21H功能:將當前數(shù)據(jù)區(qū)中以結(jié)尾的字符串送顯示器顯示。 3)int 21h的4ch號功能格式:MOVAH,4CH INT21H功能:終止當前程序并返回調(diào)用程序4.6 源程序代碼data segment qs1 dw 10h+0*0aah ;字符輸出位置 qs2 dw 40h+0*0a0h qs3 dw 70h+0*0a0h pan db 0x00,0x78,0x27,0xC0,0x12,0x48,0x11,0x50,0x87,0xFC,0x41,0x50,0x42,0x48,0x14,0x06,0x13,0xF8,0x22,0x48,0xE2,0x48,0x23,0xF8,0x22,0x48,0x22,0x48,0x23,0xF8,0x02,0x08;/*潘,0*/ jiang db 0x00,0x00,0x20,0x00,0x17,0xFC,0x10,0x40,0x80,0x40,0x40,0x40,0x48,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0xE0,0x40,0x20,0x40,0x20,0x40,0x2F,0xFE,0x20,0x00,0x00,0x00;/*江,1*/ bao db 0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x20,0x01,0x10,0xFF,0xFE,0x00,0x00;/*寶,2*/ exit1 db input Q or q to exit $data endsSTACK SEGMENT PARA STACK STACK DB 100 DUP(0)STACK ENDScode segment assume cs:code,ss:stack,ds:data ;確定各個邏輯段的類型main proc farstart: push ds ;初始化設置 xor ax,ax push ax mov ax,data mov ds,ax xianshi: ;顯示字和變換顏色 push ds ;入棧保護數(shù)據(jù) MOV AX,0B800H ;寫顯存顯示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan ;把pan的偏移地址給bx call yanse1 ;調(diào)用子程序 MOV SI,QS2 MOV BX,OFFSET jiang ;把jiang的偏移地址給bx call yanse1 MOV SI,QS3 MOV BX,OFFSET bao ;把bao的偏移地址給bx call yanse1 pop ds call delay push ds MOV AX,0B800H ;寫顯存顯示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan call yanse2 ;換一個顏色 MOV SI,QS2 MOV BX,OFFSET jiang call yanse2 MOV SI,QS3 MOV BX,OFFSET bao call yanse2 pop ds call delay push ds MOV AX,0B800H ;寫顯存顯示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan call yanse3 ;換一個顏色 MOV SI,QS2 MOV BX,OFFSET jiang call yanse3 MOV SI,QS3 MOV BX,OFFSET bao call yanse3 pop ds call delay push ds MOV AX,0B800H ;寫顯存顯示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan call yanse4 ;換一個顏色 MOV SI,QS2 MOV BX,OFFSET jiang call yanse4 MOV SI,QS3 MOV BX,OFFSET bao call yanse4 pop ds call delay mov ah,2 mov dx,1501h int 10h lea dx,exit1 mov ah,9 int 21h x: mov ax,0c07h int 21h cmp al,Q jz exit cmp al,q jz exit loop xdelay proc near ;延時子程序 push cx push bx mov bx,0001h ;bx,cx雙重循環(huán)耗時 wait0: mov cx,000fh wait1: loop wait1 dec bx jnz wait0 pop bx pop cx retdelay endp yanse1 PROC NEAR MOV CX,16 ;每次讀入2字節(jié),需讀16次 (共32字節(jié)) N1: MOV AX,BX XCHG AH,AL CALL DISP INC BX INC BX ADD SI,0A0H-32 ;下一行 LOOP N1 retyanse1 ENDPDISP PROC NEAR ;每次顯示2個字節(jié)共16位,循環(huán)16次 PUSH CX MOV CX,16 N2: ROL AX,1 JC DISP1 MOV DL, JMP DISP_K DISP1: MOV DL, * DISP_K: MOV ES:SI,DL MOV DL,01 ;顏色屬性 INC SI MOV ES:SI,DL INC SI LOOP N2 POP CX RETdisp endpyanse2 PROC NEAR ;只換了顏色 MOV CX,16 ;每次讀入2字節(jié),需讀16次 (共32字節(jié)) N3: MOV AX,BX XCHG AH,AL CALL DISP12 INC BX INC BX ADD SI,0A0H-32 ;下一行 行 LOOP N3 retyanse2 ENDPDISP12 PROC NEAR ;每次顯示2個字節(jié)共16位,循環(huán)16次 PUSH CX MOV CX,16 N4: ROL AX,1 JC DISP2 MOV DL, JMP DISP_O DISP2: MOV DL,* ;屬性 DISP_O: MOV ES:SI,DL MOV DL,04 ;屬性 INC SI MOV ES:SI,DL INC SI LOOP N4 POP CX RETdisp12 endp yanse3 PROC NEAR ;只換了顏色 MOV CX,16 ;每次讀入2字節(jié),需讀16次 (共32字節(jié)) N5: MOV AX,BX XCHG AH,AL CALL DISP13 INC BX INC BX ADD SI,0A0H-32 ;下一行 行 LOOP N5 retyanse3 ENDPDISP13 PROC NEAR ;每次顯示2個字節(jié)共16位,循環(huán)16次 PUSH CX MOV CX,16 N6: ROL AX,1 JC DISP3 MOV DL, JMP DISP_3 DISP3: MOV DL,* ;屬性 DISP_3: MOV ES:SI,DL MOV DL,07 ;屬性 INC SI MOV ES:SI,DL INC SI LOOP N6 POP CX RETdisp13 endpyanse4 PROC NEAR ;只換了顏色 MOV CX,16 ;每次讀入2字節(jié),需讀16次 (共32字節(jié)) N7: MOV AX,BX XCHG AH,AL CALL DISP14 INC BX INC BX ADD SI,0A0H-32 ;下一行 行 LOOP N7 retyanse4 ENDPDISP14 PROC NEAR ;每次顯示2個字節(jié)共16位,循環(huán)16次 PUSH CX MOV CX,16 N8: ROL AX,1 JC DISP4 MOV DL, JMP DISP_4 DISP4: MOV DL,* ;屬性 DISP_4: MOV ES:SI,DL MOV DL,0ah ;屬性 INC SI MOV ES:SI,DL INC SI LOOP N8 POP CX RETdisp14 endpexit proc near mov ah,4ch int 21h retexit endp code endsend start5調(diào)試記錄及結(jié)果分析第一遍顯示結(jié)果如圖6.圖6 第一次顯示結(jié)果第二次輸出變色為紅色,如圖7.圖7 第二次顯示結(jié)果 第二次變色為白色,如圖8.圖8 第三次輸出結(jié)果 第三次變成綠色及提示信息如圖9.圖9 第四次輸出結(jié)果根據(jù)提

溫馨提示

  • 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

提交評論