汽車動(dòng)畫程序設(shè)計(jì)微機(jī)課程設(shè)計(jì)說(shuō)明書_第1頁(yè)
汽車動(dòng)畫程序設(shè)計(jì)微機(jī)課程設(shè)計(jì)說(shuō)明書_第2頁(yè)
汽車動(dòng)畫程序設(shè)計(jì)微機(jī)課程設(shè)計(jì)說(shuō)明書_第3頁(yè)
汽車動(dòng)畫程序設(shè)計(jì)微機(jī)課程設(shè)計(jì)說(shuō)明書_第4頁(yè)
汽車動(dòng)畫程序設(shè)計(jì)微機(jī)課程設(shè)計(jì)說(shuō)明書_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué) 號(hào): xxx課 程 設(shè) 計(jì)題 目汽車動(dòng)畫程序?qū)W 院自動(dòng)化學(xué)院專 業(yè)自動(dòng)化班 級(jí)自動(dòng)化1304班姓 名屈升指導(dǎo)教師石云2015年12月25日課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 屈升 專業(yè)班級(jí): 自動(dòng)化1304班 指導(dǎo)教師: 石云 工作單位: 自動(dòng)化學(xué)院 題 目: 汽車動(dòng)畫程序 初始條件:顯示汽車從屏幕由左向右駛過(guò)的程序,按P暫停,按S起動(dòng),按B喇叭發(fā)聲。按Q退出程序。要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書撰寫等具體要求)(1) 設(shè)計(jì)任務(wù)及要求分析(2) 方案比較及認(rèn)證說(shuō)明(3) 系統(tǒng)原理闡述(4) 硬件設(shè)計(jì)課題需要說(shuō)明:硬件原理,電路圖,采用器件的功能說(shuō)明(5) 軟件設(shè)計(jì)課

2、題需要說(shuō)明:軟件思想,流程圖,源程序及程序注釋(6) 調(diào)試記錄及結(jié)果分析(7) 總結(jié)(8) 參考資料(9) 附錄:芯片資料或程序清單,軟件演示屏幕拷貝圖或硬件實(shí)物圖時(shí)間安排:12月3日12月6日:收集資料,方案選擇12月7日12月19日:整體流程,程序細(xì)節(jié),調(diào)試程序12月21日12月30日: 課程設(shè)計(jì)報(bào)告撰寫1月4:交報(bào)告,程序演示,答辯指導(dǎo)教師簽名: 年 月 日 系主任(或責(zé)任教師)簽名: 年 月 日武漢理工大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計(jì)說(shuō)明書目錄摘要11主程序的編程思路22主程序流程框圖23各子程序編程思想與流程框圖33.1.1CLEAR_SCREEN編程思想33.1.2CLEAR_SCR

3、EEN流程框圖33.2子程序XIANSHIQICHE43.2.1XIANSHIQICHE編程思想43.2.2XIANSHIQICHE流程框圖53.3子程序MOVE_SHAPE73.3.1子程序編程思想73.3.2子程序流程框圖83.4子程序ERASE113.4.1子程序編程思想113.4.2子程序流程框圖113.5子程序DLY_QRTR123.5.1子程序編程思想123.5.2子程序流程框圖123.6子程序HORN133.6.1子程序編程思想133.6.2子程序流程框圖144調(diào)試記錄與結(jié)果分析15參考文獻(xiàn)16本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表17摘要隨著計(jì)算機(jī)的快速發(fā)展,用匯編語(yǔ)言來(lái)實(shí)現(xiàn)動(dòng)畫更簡(jiǎn)單,直接

4、和便捷,它的目標(biāo)代碼簡(jiǎn)短,占用內(nèi)存較少,執(zhí)行速度較快,是高效的程序設(shè)計(jì)語(yǔ)言。本次課程設(shè)計(jì)的題目是編寫一個(gè)汽車動(dòng)畫設(shè)計(jì)程序,并通過(guò)匯編集成軟件進(jìn)行編譯調(diào)試運(yùn)行,通過(guò)在鍵盤上輸入不同的字母PBQS對(duì)程序的控制,采用段內(nèi)調(diào)用子程序的方法來(lái)實(shí)現(xiàn),使用了堆棧技術(shù)和中斷技術(shù),其中DOS/BIOS調(diào)用是整個(gè)程序設(shè)計(jì)的核心,本次試驗(yàn)主要應(yīng)用了DOS調(diào)用的8號(hào)功能用于鍵盤輸入和0BH功能用于檢查是否有鍵盤輸入;BIOS調(diào)用則應(yīng)用了屏幕顯示INT 10H的各項(xiàng)功能,用于將汽車圖形顯示在屏幕上。本次課程設(shè)計(jì)實(shí)現(xiàn)四項(xiàng)功能:分別是顯示汽車從屏幕由左向右駛過(guò)的程序,按P暫停,按S起動(dòng),按B喇叭發(fā)聲。按Q退出程序。在課程設(shè)

5、計(jì)任務(wù)書的基礎(chǔ)上,進(jìn)一步加入一項(xiàng)功能,即在屏幕上顯示該汽車動(dòng)畫程序的操作說(shuō)明,我認(rèn)為這對(duì)程序本身的完整性來(lái)說(shuō)是個(gè)很好的補(bǔ)充。與此同時(shí),本文將詳細(xì)說(shuō)明該匯編源程序的基本原理解析。關(guān)鍵詞:DOS/BIOS調(diào)用;子程序調(diào)用;鍵盤輸入;圖像顯示汽車動(dòng)畫程序1主程序的編程思路此程序四項(xiàng)功能:分別是顯示汽車從屏幕由左向右駛過(guò)的程序,按P暫停,按S起動(dòng),按B喇叭發(fā)聲。按Q退出程序。考慮該動(dòng)畫程序的實(shí)際含義,運(yùn)行程序后,屏幕上應(yīng)當(dāng)在合適的位置顯示汽車的圖形,該位置作為動(dòng)畫的起始位置。本程序設(shè)計(jì)時(shí),首先通過(guò)調(diào)用一個(gè)子程序CLEAR_SCREEN,該子程序?qū)崿F(xiàn)DOS調(diào)用的清屏功能初始化窗口,然后調(diào)用一個(gè)子程序XI

6、ANSHIQINCHE,該子程序設(shè)計(jì)在(10,0)處即屏幕的10行0列處依次顯示汽車圖形,同時(shí),設(shè)計(jì)在屏幕的3到6行顯示該程序的操作說(shuō)明。之后設(shè)置一個(gè)調(diào)用的8好功能,在鍵盤上輸入四個(gè)不同的命令字母,通過(guò)CMP指令將AL寄存器與各個(gè)命令字母字符比較,分別調(diào)轉(zhuǎn)到相應(yīng)功能對(duì)應(yīng)的程序段。如果鍵盤上輸入的不是所需要的四個(gè)命令字幕,則跳轉(zhuǎn)到開(kāi)始的DOS調(diào)用功能的程序段,等待下一個(gè)鍵盤輸入命令。2主程序流程框圖START初始化YStart_upAL=S?調(diào)用子程序CLEAR_SCREEN清屏YNNSOUNDAL=B?Al調(diào)用子程序XIANSHIQICHE在屏幕初始位置顯示汽車并且在屏幕上方指定位置顯示操作說(shuō)

7、明NNNNAL=Q?ALFIRSTYOVERODOS調(diào)用鍵盤輸,AL=ASCLL碼,CMP指令將AL與字母比較ENDEND圖1主程序流程框圖SOUNDStart_up調(diào)用子程MOVE_SHAPE用于實(shí)現(xiàn)是汽車啟動(dòng),同時(shí)在每次顯示汽車下一位置的延時(shí)之后檢查是否有鍵盤輸入,進(jìn)入相應(yīng)功能調(diào)用子程序HORN實(shí)現(xiàn)喇叭發(fā)聲FIRSTOVEREND圖2(續(xù))主程序流程框圖3各子程序編程思想與流程框圖3.1清屏子程序CLEAR_SCREEN3.1.1CLEAR_SCREEN編程思想此子程序編程相對(duì)簡(jiǎn)單,是一個(gè)順序結(jié)構(gòu)。其核心是調(diào)用DOS中斷INT 10H的7號(hào)功能,設(shè)置入口參數(shù)AH、AL、DH、DL、BH,實(shí)

8、現(xiàn)對(duì)窗口的初始化。3.1.2CLEAR_SCREEN流程框圖CLEAR_SCREEN設(shè)置入口參數(shù)AH=6 AL=0 DH=24DL=79 BH=7子程序返回 圖3子程序CLEAR_SCREEN流程框圖3.2子程序XIANSHIQICHE3.2.1XIANSHIQICHE編程思想此子程序的功能是在初始位置顯示汽車圖形,并在屏幕上方顯示程序操作提示。在調(diào)用子程序此子程序之前有3行指令,分別是將數(shù)據(jù)段定義的變量CAR的偏移地址給DI,并設(shè)置初始位置DH=10,DL=0表示10行0列。其中變量CAR里面放的是組成汽車圖形的7個(gè)字符的ASCLL碼值、顯示屬性以及相對(duì)位移。這3個(gè)寄存器作為子程序的入口參數(shù)

9、,子程序首先DOS調(diào)用讀取當(dāng)前顯示狀態(tài),然后利用寄存器DI將數(shù)據(jù)段變量CAR中的字符數(shù)量給CL以及變量CHAR_CNT,將首字符給POINTER,將車的起始位置的行列給變量LINE_ON和COL_ON,這項(xiàng)預(yù)留的變量操作是為了后面啟動(dòng)啟動(dòng)汽車時(shí)汽車被擦除后再次顯示提供字符位置參數(shù)。之后設(shè)計(jì)一個(gè)循環(huán)結(jié)構(gòu),在循環(huán)體內(nèi),用變址相對(duì)尋址的方式分別給DOS調(diào)用的相應(yīng)存儲(chǔ)器賦值光標(biāo)的行列,以及字符ASCLL碼和字符屬性,然后是DI加四指向下一條字符,用LOOP 指令,沒(méi)顯示一個(gè)字符,CX減去1,CX大于零則回到循環(huán)開(kāi)始。這樣就可以顯示7個(gè)組成完整汽車的字符了。除此之外,考慮整個(gè)程序的完整性,在原有的功能之

10、上,我還加入了一項(xiàng)功能:在屏幕上方顯示此汽車動(dòng)畫程序的操作說(shuō)明。在此之前,已經(jīng)在數(shù)據(jù)段定義了四段字符變量,里面的內(nèi)容便是需要在屏幕上顯示的操作提示字符串。在以上循環(huán)結(jié)構(gòu)結(jié)束之后,此后是一個(gè)順序結(jié)構(gòu),先利用BIOS中斷設(shè)置光標(biāo)位置,然后字符變量偏移地址給DX,然后利用DOS中斷的9號(hào)功能將字符串顯示在指定位置,然后再次設(shè)置光標(biāo)位置,不過(guò)與上一次相比,行號(hào)加一,列號(hào)不變,然后再次顯示字符串。依次將四個(gè)字符串顯示在屏幕的四行。3.2.2XIANSHIQICHE流程框圖DI 變量CAR偏移地址DH=10 行號(hào)DL=0列號(hào) CX 7;字符個(gè)數(shù) DI DI+4子程序XIANSHIQICHECX CX-1A

11、H 0FHINT 10H讀當(dāng)前顯示方式Y(jié)CX0?CH清零, CL DI;CL=7INC DICHAR_CNT CXPOINTER DILINE_ON DHCOL_ON DLNOPERATEPLOT_NEXT通過(guò)DI相對(duì)尋址設(shè)置光標(biāo)位置DH DI+2 , DL DI+3DH為行號(hào),DL為列號(hào)BIOS調(diào)用顯示汽車組成字符通過(guò)DI相對(duì)尋址提供字符和字符屬性AL DI BL DI+1圖4子程序XIANSHIQICHE流程框圖OPERATE事先在數(shù)據(jù)段定義變量放入需要顯示的字符串,四個(gè)字符串分別是:STRING1 STRING2STRING3 STRING4DOS調(diào)用多字符輸出屏幕字符串STRING1設(shè)

12、置光標(biāo)位置(3,5)DOS調(diào)用多字符輸出屏幕字符串STRING2設(shè)置光標(biāo)位置(4,5)DOS調(diào)用多字符輸出屏幕字符串STRING3設(shè)置光標(biāo)位置(5,5)DOS調(diào)用多字符輸出屏幕字符串STRING3設(shè)置光標(biāo)位置(6,5)子程序XIANSHIQICHE返回 圖5(續(xù))子程序XIANSHIQICHE流程框圖3.3子程序MOVE_SHAPE3.3.1子程序編程思想此主程序的的功能是在屏幕上將顯示的汽車圖形從左向右移動(dòng),并在移動(dòng)過(guò)程中能夠通過(guò)鍵盤輸入控制能夠發(fā)出聲音或者退出,并且還能夠暫停同時(shí)還能從暫停中再次通過(guò)鍵盤命令使汽車再次啟動(dòng)。因此,程序的編程思想是在以上已經(jīng)在初始位置顯示汽車圖形的基礎(chǔ)上,先調(diào)

13、用一個(gè)延時(shí)程序,該延時(shí)程序的目的是在圖形顯示后在屏幕上存在的時(shí)間,也就是汽車前后兩個(gè)位置之間的時(shí)間,因此延遲程序從某中意義上說(shuō)是整個(gè)汽車動(dòng)畫程序的速度量度。延時(shí)程序返回后,調(diào)用DOS中斷的0BH號(hào)功能,用于檢查是否有鍵盤輸入,如果沒(méi)有則用跳轉(zhuǎn)指令跳轉(zhuǎn)到下一個(gè)程序段調(diào)用擦除子程序擦除原有圖形,然后再在行號(hào)不變列號(hào)加一處顯示下一個(gè)汽車圖形;如果有鍵盤輸入,則繼續(xù)調(diào)用DOS中斷8號(hào)功能,將鍵盤輸入值的ASCLL碼值傳送到AL寄存器中,然后通過(guò)CMP指令將AL分別與字符QSBP比較,用條件跳轉(zhuǎn)指令分別進(jìn)入相應(yīng)的程序段。其中通過(guò)與P比較進(jìn)入暫停程序段比較特殊和復(fù)雜,需要詳細(xì)說(shuō)明,跳轉(zhuǎn)到PAUSE程序段之

14、后,還是要檢查是否有鍵盤輸入,如果沒(méi)有,則設(shè)計(jì)一個(gè)無(wú)限循環(huán)在該P(yáng)AUSE中一直運(yùn)行,此舉的目的是實(shí)現(xiàn)暫停之后,如果沒(méi)有鍵盤輸入或者沒(méi)有啟動(dòng)鍵盤命令輸入,則程序一直在次暫停程序段運(yùn)行,汽車圖形位置不變,用以實(shí)現(xiàn)暫停功能。同時(shí),在暫停時(shí)還能檢查鍵盤是否有其他字符的命令,然后又可以跳轉(zhuǎn)到相應(yīng)的程序段。同時(shí)考慮該汽車程序的完整性,在完成擦除功能之后,然后設(shè)置下一個(gè)汽車圖形的顯示位置時(shí),還有考慮位置是否出屏,通過(guò)將列號(hào)與80比較,如果小于則認(rèn)為沒(méi)有出屏繼續(xù)指令后面顯示下個(gè)位置圖形的程序,如果不是則再次調(diào)用擦除程序?qū)D形擦除,然后退出整個(gè)程序。3.3.2子程序流程框圖子程序MOVE_SHAPEDOS中斷字

15、符輸入AL=ASCLL入棧保護(hù)現(xiàn)場(chǎng)AX,BX,CX,DX,DI入棧YSOUND2AL=B?CONTINUENYPAUSEAL=P?調(diào)用延時(shí)程序DLY_QRTRNBACKYAL=S?NDOS中斷調(diào)用檢查鍵盤輸入NAL=Q?NYAL=0?OVERYSOONEND圖6子程序MOVE_SHAPE流程框圖SOUND2PAUSE保護(hù)CX入棧 CX 10DOS中斷調(diào)用檢查鍵盤輸入調(diào)用子程序HORN發(fā)聲子程序HORN返回AL=0?DOS中斷字符輸入AL=ASCLL調(diào)用子程序HORN發(fā)聲并返回AL=B?SOUND1 ENDOVERAL=Q?AL=S?SOONCX出棧CX0?圖7(續(xù))子程序MOVE_SHAPE流

16、程框圖SOON調(diào)用子程序ERASE擦除現(xiàn)有圖形NEXT改變行列位置DH DH+DI+2DL DL+DI+3N出屏調(diào)用子程序ERASE擦除現(xiàn)有圖形DL0?Y圖8(續(xù))子程序MOVE_SHAPE流程框圖3.4子程序ERASE3.4.1子程序編程思想此程序目的在于擦除已顯示的汽車圖形,為下個(gè)位置的圖形做準(zhǔn)備。同時(shí)這個(gè)子程序永遠(yuǎn)包含于以上的MOVE_SHAPE之中,兩者是互相匹配的,無(wú)法分開(kāi)。在以上汽車顯示后,經(jīng)過(guò)延時(shí),此子程序現(xiàn)將數(shù)據(jù)段變量CHAR_CNT、POINTER、LINE_ON、COL_ON里的數(shù)據(jù)分別傳送個(gè)CX、DI、DH、DL表示字符個(gè)數(shù),字符碼和顯示位置,實(shí)際上,這個(gè)擦除子程序并不是

17、調(diào)用中斷窗口初始化,而是將字符顯示但是借助字符屬性將圖形顯示為黑底黑字,一次來(lái)達(dá)到擦出的目的。用一個(gè)循環(huán)結(jié)構(gòu)完成擦除后,再次將以上變量里數(shù)據(jù)傳送個(gè)以上寄存器,只不過(guò)變量COL_ON是先加一再傳送,為返回到MOVE_SHAPE子程序里顯示下個(gè)位置的圖形提供坐標(biāo)。完成這些工作,程序才返回。3.4.2子程序流程框圖調(diào)用子程序ERASEDEC CXCX CHAR_CNT;字符個(gè)數(shù)DI POINTER;字符指針DH LINE_ON;車起始位置DL COL_ONYCX0?NERASE_NEXTCX CHAR_CNTDI POINTERDH LINE_ONINCCOL_ONDL COL_ON設(shè)置顯示位置(D

18、I+2,DI+3)AL DIBL=0;黑底黑字子程序ERASE返回CX=7DI DI+4圖9子程序ERASE流程框圖3.5子程序DLY_QRTR3.5.1子程序編程思想次子程序的目的在于在圖形顯示與擦除之間設(shè)置一個(gè)時(shí)間緩沖,相對(duì)簡(jiǎn)單。由于里面要用到寄存器DX與CX,因此應(yīng)該想將他們?nèi)霔1Wo(hù)現(xiàn)場(chǎng),之后利用DX與CX設(shè)置內(nèi)外兩個(gè)循環(huán)體,完成循環(huán)之后,將入棧的兩個(gè)寄存器彈出,返回子程序。3.5.2子程序流程框圖調(diào)用子程序DLY_QRTRDX與CX入棧DX=500CX=1000CX CX-1YCX0?NDECDXYDX0?NDX與CX入棧子程序返回 圖10子程序DLY_QRTR流程框圖3.6子程序HO

19、RN3.6.1子程序編程思想這個(gè)喇叭子程序的發(fā)生原理是利用8253定時(shí)器產(chǎn)生方波與8255的B端口的低二位配合使揚(yáng)聲器發(fā)出聲音。其電路原圖如下。在該子程序中由于要用到AX、BX、CX寄存器,首先將他們?nèi)霔1Wo(hù)現(xiàn)場(chǎng),然后設(shè)置AL的值傳送到8253的控制端口定義通道2的工作方式為方式3產(chǎn)生方波,之后再設(shè)置AX的值分別先低位后高位寫入8253通道2端口作為時(shí)間常數(shù)。然后設(shè)置AL的值為03H送到8255的B口使D1D0為高電平,從而使圖中與門打開(kāi)揚(yáng)聲器響,從后再設(shè)計(jì)一個(gè)循環(huán)程序段延時(shí)使聲音維持一段時(shí)間,最后再設(shè)置AL的值為0送到8255的B口使揚(yáng)聲器關(guān)閉。最后將入棧的寄存器彈出,子程序返回。圖11控制

20、揚(yáng)聲器發(fā)聲原理圖3.6.2子程序流程框圖調(diào)用子程序HORNAX、BX、CX入棧AL=0B6H8253控制口地址43H43H ALDEC BXAX=1200H8253通道2地址42H42H AXYBX0?AL=03H將AL傳送給8255的B口使揚(yáng)聲器打開(kāi)NAL=0將AL傳送給8255的B口使揚(yáng)聲器關(guān)閉BH=80HCX=12500AX、BX、CX出棧CX-1YCX0?調(diào)用子程序返回N圖12子程序HORN流程框圖4調(diào)試記錄與結(jié)果分析圖13調(diào)試記錄1這個(gè)問(wèn)題是,在初始位置顯示汽車圖形后,按Q能夠是程序退出,按B能夠使汽車發(fā)出聲音,但是按S卻不能是汽車啟動(dòng)。如上圖所示這個(gè)時(shí)候我考慮是不是讓汽車啟動(dòng)的子程

21、序出了問(wèn)題,于是我將汽車圖形初始位置后面的中斷鍵盤輸入字符用注釋號(hào)去掉,使編譯的時(shí)候直接顯示圖形后就啟動(dòng)汽車。結(jié)果汽車是可以運(yùn)動(dòng)的,如圖調(diào)試記錄2。圖14調(diào)試記錄2于是我斷定是在汽車啟動(dòng)前的鍵盤輸入的問(wèn)題上出現(xiàn)了問(wèn)題,于是通過(guò)仔細(xì)檢查,發(fā)現(xiàn)在子程序MOVE_SHAPE里面的延遲子程序后面我加入的中斷調(diào)用是鍵盤輸入字符的程序段有問(wèn)題,因?yàn)樵阪I盤輸入之前沒(méi)有檢查是否鍵盤輸入,因此每次S命令啟動(dòng)是一步一步的,這顯然不符合課設(shè)任務(wù)要求,于是我在此之前加入鍵盤檢查的相關(guān)指令并對(duì)源程序做出適當(dāng)修改,結(jié)果,整個(gè)程序可以按照任務(wù)要求運(yùn)行。實(shí)際上,除此之外,還有一些其他的問(wèn)題,比如汽車的行駛速度太快或太慢,這個(gè)

22、問(wèn)題并不難解決,通過(guò)分析,可以知道,通過(guò)直接修改延遲子程序的相關(guān)參數(shù)就可以直接改變速度,多次調(diào)試得到較為合適的行駛速度。與此同理,關(guān)于汽車?yán)劝l(fā)聲的持續(xù)時(shí)間,也是通過(guò)修改子程序的相關(guān)參數(shù),反復(fù)調(diào)試得到較為滿意的結(jié)果。參考文獻(xiàn)1 沈美明、溫冬嬋編著.IBMPC匯編語(yǔ)言程序設(shè)計(jì)(第二版).北京:清華大學(xué)出版社. 2005年2周佩玲、彭虎編著.微機(jī)原理與接口技術(shù)(第二版).北京:電子工業(yè)出版社.2005年3趙雪巖編著.微機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社.2001年4康華光編著.電子技術(shù)基礎(chǔ)(第五版).北京:高等教育出版社.2005年5羅云彬編著.Windows環(huán)境下32位匯編語(yǔ)言程序設(shè)計(jì).北京

23、:電子工業(yè)出版社.2013年本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表姓 名屈升性 別男專業(yè)、班級(jí)自動(dòng)化1304班課程設(shè)計(jì)題目:汽車動(dòng)畫程序課程設(shè)計(jì)答辯或質(zhì)疑記錄:成績(jī)?cè)u(píng)定依據(jù):評(píng) 定 項(xiàng) 目評(píng)分成績(jī)1考勤、態(tài)度(10分)2. 查閱資料能力(10分)3. 系統(tǒng)設(shè)計(jì)(25分)包括系統(tǒng)實(shí)現(xiàn)原理、框圖、方案的說(shuō)明4編寫程序,調(diào)試結(jié)果(25分)5設(shè)計(jì)說(shuō)明書質(zhì)量及規(guī)范化、參考文獻(xiàn)充分(不少于5篇)(10分)6答辯(20分)總分: 最終評(píng)定成績(jī)(以優(yōu)、良、中、及格、不及格評(píng)定)指導(dǎo)教師簽字: 年 月 日程序附錄: DATA SEGMENT CAR DB 7 ;字符圖形表 DB 43H,70,0,0 DB 0B1H,70H,

24、0,1 DB 41H,70,0,1 DB 52H,70,0,1 DB 4FH,7,1,0 DB 4FH,7,0,-3 DB 2,7,-2,1 CHAR_CNT DW ? POINTER DW ? LINE_ON DB ? COL_ON DB ? STRING1 DB P.press for pause ;, 0DH, 0AH, $ STRING2 DB S.press for start up ;, 0DH, 0AH, $ STRING3 DB B.press for voices ;, 0DH, 0AH, $ STRING4 DB Q.press to exit ;, 0DH, 0AH, $

25、 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;初始化DS CALL CLEAR_SCREEN LEA DI,CAR MOV DH,10 ;車身起始位置(10,0) MOV DL,0 CALL XIANSHIQICHE FIRST: MOV AH,8 INT 21H CMP AL,s JZ START_UP CMP AL,S JZ START_UP CMP AL,b JZ SOUND CMP AL,B JZ SOUND CMP AL,q JZ OVER CMP AL,Q JZ OVER J

26、MP FIRST SOUND: CALL HORN JMP FIRST OVER: MOV AH,4CH INT 21H START_UP: CALL MOVE_SHAPE JMP OVER HORN PROC NEAR PUSH BX PUSH AX PUSH CX MOV AL,0B6H OUT 43H,AL MOV AX,1200H OUT 42H, AL MOV AL,AH OUT 42H,AL ;送時(shí)間常數(shù) MOV AL,03H OUT 61H,AL ;使與門打開(kāi),GETE2有效,揚(yáng)聲器響 MOV BX,80H ;聲音頻率 DELAY2: MOV CX,12500 DELAY1: L

27、OOP DELAY1 ;延時(shí)10ms,使聲音維持 DEC BX JNZ DELAY2 ;根據(jù)BX的內(nèi)容延遲 MOV AL,00H OUT 61H,AL ;關(guān)閉揚(yáng)聲器 POP CX POP AX POP BX RET HORN ENDP MOVE_SHAPE PROC NEAR PUSH AX ;保護(hù)現(xiàn)場(chǎng) PUSH BX PUSH CX PUSH DX PUSH DI CONTINUE: CALL DLY_QRTR ;調(diào)用延時(shí)子程序 BACK: MOV AH,0BH INT 21H CMP AL,0 JZ SOON MOV AH,8 INT 21H CMP AL,b JZ SOUND2 CMP

28、AL,B JZ SOUND2 CMP AL,p JZ PAUSE CMP AL,P JZ PAUSE CMP AL,Q JZ PAUSE CMP AL,q JZ OVER CMP AL,s JNZ BACK CMP AL,S JNZ BACK JMP SOON SOUND2: CALL HORN JMP BACK PAUSE: MOV CX,7 MOV AH,0BH INT 21H CMP AL,0 JZ PAUSE MOV AH,8 INT 21H CMP AL,b JZ SOUND1 CMP AL,B JZ SOUND1 CMP AL,q JZ OVER CMP AL,Q JZ OVER

29、CMP AL,s JZ SOON CMP AL,S JZ SOON LOOP PAUSE SOUND1: CALL HORN JMP PAUSE SOON: CALL ERASE ;調(diào)用擦除子程序 NEXT: ADD DH,DI+2 ;改變行列位置 ADD DL,DI+3 CMP DL,80 ;出屏否? JB MOV_CRSR CALL ERASE ;擦除屏幕 JMP OVER MOV_CRSR: MOV AH,2 ;移動(dòng)光標(biāo)位置 INT 10H MOV AL,DI ;取字符 MOV BL,DI+1 ;取字符屬性 PUSH CX MOV CX,1 ;顯示次數(shù) MOV AH,09 INT 10H

30、 ;顯示字符 POP CX ADD DI,4 ;DI指向下一個(gè)字符 LOOP NEXT JMP CONTINUE RET MOVE_SHAPE ENDP ERASE PROC NEAR MOV CX,CHAR_CNT ;字符個(gè)數(shù) MOV DI,POINTER ;字符R地址送DI MOV DH,LINE_ON ;車起始位置 MOV DL,COL_ON ERASE_NEXT: ADD DH,DI+2 ;計(jì)算顯示字符的行列值 ADD DL,DI+3 MOV AH,2 INT 10H ;設(shè)置光標(biāo)位置DH行,DL列 MOV AL,DI MOV BL,0 ;黑底黑字 PUSH CX MOV CX,1 MOV AH,9 INT 10H POP CX ADD DI,4 ;指向下一個(gè)字符 LOOP ERASE_NEXT ;擦除顯示痕跡 MOV CX,CHAR_CNT ;重新初始化 MOV DI,POINTER MOV DH,LINE_ON INC COL_ON ;指向下一行 MOV DL,COL_ON RET ERASE ENDP DLY_QRTR PROC NEAR ;延時(shí)子程序 PUSH CX PUSH DX MOV DX,500 D11: MOV CX,1000 D12: LOOP D12 DEC DX J

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論