微機原理與接口技術課程設計動畫程序設計_第1頁
微機原理與接口技術課程設計動畫程序設計_第2頁
微機原理與接口技術課程設計動畫程序設計_第3頁
微機原理與接口技術課程設計動畫程序設計_第4頁
微機原理與接口技術課程設計動畫程序設計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 微機原理與接口技術 課程設計設計課題: 動畫程序設計 班 級: 學 號:姓 名: 指導教師:2013 年 1月15日一、設計題目動畫程序設計二、設計內(nèi)容1、主要內(nèi)容:利用BIOS系統(tǒng)功能調(diào)用,進行簡單的動畫設計。利用BIOS中斷的10號、21號功能,進行簡單的動畫設計,并根據(jù)以下提示信息進行選擇:(1)小鳥從屏幕飛過。(2)汽車按水平方向從屏幕上開過去。(3)退出。2、基本功能:(1)清屏宏定義觀察程序流程圖,在顯示小鳥圖形,汽車圖形時,要先清屏,所以在編寫程序使用到宏,因為宏定義只需在匯編語言原程序中定義一次,便可以多次反復調(diào)用。調(diào)用時只需要一條宏指令即可。程序中的清屏定義為:CLEAR

2、MACRO pch,pcl,pdh,pdl,pbh MOV AH,0MOV AL,02H INT 10HMOV AL,0 MOV CH,pch MOV CL,pcl MOV DH,pdh MOV DL,pdl MOV BH,pbh INT 10HENDM宏指令名為CLEAR,定義了五個形式參數(shù),分別為:pch,pcl,pdh,pdl,pbh,把pch,pcl的值分別傳給窗口左上角行號、列號,pdh,pdl的值分別傳給窗口右下角行號、列號,pbh的值則傳給窗口底部卷入行屬性。利用已經(jīng)定義好的宏,清屏時可以宏調(diào)用。宏調(diào)用語句為:CLEAR 0,0,24,79,7(2)子程序設計 在接受鍵盤輸入后,

3、判斷AL的值,如果是“1”就調(diào)用小鳥子程序,如果是“2”就調(diào)用汽車子程序,如果是“3”就結束退出。在小鳥子程序中又嵌套了延時子程序,在汽車子程序中又嵌套了多個子程序。(3)顯示小鳥字符圖形 程序中利用BIOS系統(tǒng)功能中10H中斷的09號功能進行小鳥字符圖形的顯示,程序段如下:MOV AH,9 MOV AL,76H MOV BL,10 INT 10H要是小鳥字符圖形顯示的更清晰,則需要延時。循環(huán)指令LOOP,當CX不為零時,執(zhí)行循環(huán)轉(zhuǎn)移分支;當CX為零時,退出循環(huán)。延時子程序為:DLY PROC NEAR PUSH CX PUSH DX MOV DX,10000 DL1: MOV CX,6801

4、 DL2: LOOP DL2 DEC DX JNZ DL1 POP DX POP CX RET DLY ENDP 上述子程序用兩層循環(huán)實現(xiàn)延時,內(nèi)循環(huán)實現(xiàn)單位時間延時,外循環(huán)次數(shù)由寄存器DX決定。(4)顯示汽車字符圖形 因為汽車是多字符顯示,所以在子程序中還嵌套了顯示汽車圖形和清屏兩個子程序。MOV CH,0 MOV CL,DI INC DI MOV CHAR,CX MOV POINTER,DI MOV LINE,DH MOV COL,DL 此段程序把CH的值設為了0,又因為CL中存放字符的個數(shù),所以CL=6,DI指向字符圖形表中的第一個字符。三、設計原理及方案 1、設計原理圖:圖3-1 主程

5、序圖3-2 小鳥子程序 圖3-3 汽車子程序 2、設計方案:在屏幕上顯示動畫的效果可以按以下五步進行:(1)在屏幕上顯示圖形ASCII碼表,選擇“V”來顯示小鳥,“V”的ASCII碼為76H,查表選擇彩色文本模式下的IRGB組合成的通用顏色,選擇亮綠色,色號為10。顯示汽車時用多字符圖形顯示,用6個字符組合來顯示汽車,ASCII碼分別為52H、0B1H、0DBH、0DBH、4FH、4FH,顯示屬性為白色,即色號為7。在設置字符顯示位置時,是通過兩兩字符間的相對坐標來實現(xiàn)的。(2)延時一個時間周期,這樣圖形更清晰。這里要用到延時子程序及其調(diào)用。(3)消除圖形在進行小鳥清屏時,可使用清屏宏調(diào)用,只

6、需在程序前面進行清屏宏定義。而在進行汽車的清屏時,由于汽車是由對字符圖形顯示的,所以不采用清屏宏調(diào)用,而是通過修改字符顯示屬性來進行清屏。(4)改變圖形的行、列坐標。因為要求小鳥從屏幕飛過,所以小鳥的飛行路徑不是水平也不是垂直的,所以要同時改變字符的行、列坐標;而汽車從左至右行駛,所以只需要改變汽車的列坐標。(5)返回第一步,重復上述過程。利用BIOS系統(tǒng)功能中 10H中斷的06號功能進行清屏,循環(huán)調(diào)用09號功能顯示字符圖形;延遲一段時間后,再循環(huán)調(diào)用09號功能,設置BL寄存器的值為0(黑底黑字顯符圖形),以達到擦除圖形的效果;改變行、列坐標,調(diào)用02號功能設置光標位置,重復上述過程。利用DO

7、S中斷的01號和02號子功能來完成鍵盤接收,結果顯示。四、匯編源程序代碼DATA SEGMENT INFO1 DB 0DH,0AH,'INPUT 1,2,OR 3:(1:bird,2:car,3:exit) $' BUFA DB 200 DB ? DB 200 DUP(0) BUFB DB 200 DUP(?) CAR DB 7 ;小汽車的字符圖形表 DB 52H,7,0,0 DB 0B1H,7,0,1DB 0DBH,7,0,1 DB 0DBH,7,0,1 DB 4FH,7,1,0 DB 4FH,7,0,-3 CHAR DW ? POINTER DW ? LINE DB ? C

8、OL DB ? DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AH,0 ;設置顯示方式為80*25的黑白文體MOV AL,02H INT 10H LEA DX,INFO1 ;在顯示器上顯示字符串提示信息MOV AH,9 INT 21H MOV AH,1 ;從鍵盤讀取字符到AL寄存器 INT 21H CMP AL,31H ;比較AL是否等于1 JNE A CALL XIAO A:

9、CMP AL,32H ;比較AL是否等于2 JNE B CALL QICHE B: CMP AL,33H ;比較AL是否等于3 JNE START MOV AH,4CH ;終止當前程序并返回調(diào)用程序 INT 21H CLEAR MACRO pch,pcl,pdh,pdl,pbh ;清屏宏定義MOV AH, 0 MOV AL,02H INT 10H MOV AH,6 ;調(diào)用6號功能 MOV AL,0 ;設置整個屏幕為空白MOV CH,pch MOV CL,pcl;窗口左上角行列數(shù)MOV DH,pdhMOV DL,pdl ;窗口左上角行列數(shù) MOV BH,pbh ;正常屬性顯示 INT 10HEN

10、DMBIRD PROC ;小鳥子程序MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,02H INT 10H CLEAR 0,0,24,79,7 ;清屏宏調(diào)用MOV AH,0FH ;讀當前顯示狀態(tài)INT 10H MOV DH,10 MOV DL,0 BEGIN:MOV SI,2 MOV CX,1 DISP: CMP DL,80 JAE EXIT1 MOV AH,2 INT 10H MOV AH,9 MOV AL,76H MOV BL,10 INT 10H CALL DLY ;延時MOV AH,9 MOV AL,' ' INT 10H INC DL DE

11、C SI JNZ DISP JMP BEGIN EXIT1:RET BIRDENDP QING PROC NEAR MOV AH,6 MOV AL,0 MOV CX,0 MOV DH,24 MOV DL,79 MOV BH,7 INT 10H RET QING ENDP DLY PROC NEAR ;延時子程序 PUSH CX PUSH DX MOV DX,10000 DL1: MOV CX,6801 DL2: LOOP DL2 DEC DX JNZ DL1 POP DX POP CX RET DLY ENDP QICHE PROC NEAR ;汽車子程序 MOV AH,0 MOV AL,02

12、 INT 10H CLEAR 0,0,24,79,7 ;清屏宏調(diào)用 LEA DI,CAR ;DI指向字符圖形表 MOV DH,5 ;從第5行0列位置開始顯示汽車 MOV DL,0 CALL MOVE RET QICHE ENDP MOVE PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AH,0FH ;取當前顯示方式INT 10H MOV CH,0 MOV CL,DI ;CL放字符個數(shù)INC DI ;DI指向字符圖形表 MOV CHAR,CX MOV POINTER,DI MOV LINE,DH MOV COL,DL PLOT_NEX

13、T: ADD DH,DI+2 ;改變行列坐標ADD DL,DI+3 CMP DL,80 ;是否出屏JB MOV_CRSR POP DI POP DX POP CX POP BX POP AX RET MOV_CRSR: MOV AH,2 INT 10H MOV AL,DI ;取字符值MOV BL,DI+1 ;取字符屬性MOV AH,09 ;顯示字符 INT 10H ADD DI,4 ;DI指向下一個字符LOOP PLOT_NEXT CALL DLY CALL ERASE JMP SHORT PLOT_NEXT MOVE ENDP ERASE PROC NEAR MOV CX,CHAR MOV

14、DI,POINTER MOV DH,LINE MOV DL,COLERASE_NEXT: ADD DH,DI+2 ;修改光標的行坐標ADD DL,DI+3 ;修改光標的列坐標MOV AH,2 INT 10H ;設置光標位置MOV AL,DI MOV BL,0 ;設置字符屬性為0,為黑色PUSH CX MOV CX,1 ;設置字符顯示次數(shù)為1MOV AH,9 INT 10H POP CX ADD DI,4 ;指向下一個要用來擦除的字符LOOP ERASE_NEXT MOV CX,CHAR MOV DI,POINTER MOV DH,LINE INC COL MOV DL,COLRET ERASE

15、 ENDP CODE ENDS END START五、實施結果1、初始界面,如圖5-2所示:圖5-12、輸入1,小鳥從屏幕飛過界面,如圖5-2所示:圖5-23、輸入2,汽車按水平方向從屏幕上開過去界面,如圖5-3所示:圖5-34、輸入3,退出界面,如圖5-4所示:圖5-4六、課程設計體會看到本次微機原理與接口技術課程設計的課題后,我首先從12個課題中選擇了一個我比較感興趣的課題動畫程序設計。確定這個課題之后,我便仔細研究了老師在指導書中給出的設計思路,然后查閱相關書籍,上網(wǎng)查找各種資料,初步確定了設計方案,對整個程序的流程有了大概的順序,對程序先實現(xiàn)什么再實現(xiàn)什么有了一個初步計劃。因為小車使用

16、多字符圖形組合來顯示,所以首先定義出小車的字符圖形表。然后就是在運行程序是要用鍵盤輸入指令1、2、3,以顯示不同的運行結果,此時就要對從鍵盤輸入信息和在顯示器上顯示信息進行定義。因為在顯示小鳥圖形和汽車圖形時,要先清屏,所以在編寫程序要進行清屏宏定義以供調(diào)用。接下來就編寫小鳥子程序,為使小鳥字符圖形顯示的更清晰,則需要編寫延時子程序。最后一大塊,便是編寫汽車子程序。得出完整程序后,便在計算機上運行,初次運行時程序中出現(xiàn)了六處錯誤。有兩處比較明顯的相同錯誤,單引號不慎寫成了雙引號,改正后運行便還剩四處錯誤。根據(jù)計算機提示的錯誤行數(shù),很容易找到了第三處錯誤,英文字母EXIT在輸入時寫成了EXT。第四處錯誤是MOV POINTER,DI中,POINTER和DI之間的“,”寫成了“.”。最后一處錯誤也是最嚴重的一處錯誤,把段寄存器CS當成了目的操作數(shù),修改方式是:用其他通用寄存器代替。通過本次微機原理與接口技術課程設計,培養(yǎng)了我各方面的能力。我更好的學會了把課堂上的理論知識運用到實踐中,通過解決實際問題,不斷地找出自己所學

溫馨提示

  • 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

提交評論