吃豆子程序 匯編語言與微機(jī)原理課程設(shè)計_第1頁
吃豆子程序 匯編語言與微機(jī)原理課程設(shè)計_第2頁
吃豆子程序 匯編語言與微機(jī)原理課程設(shè)計_第3頁
吃豆子程序 匯編語言與微機(jī)原理課程設(shè)計_第4頁
吃豆子程序 匯編語言與微機(jī)原理課程設(shè)計_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院課程論文(設(shè)計)學(xué) 部:理工學(xué)部班 級:08姓 名: 學(xué) 號:課程論文(設(shè)計)題目:吃豆子程序課程名稱:匯編語言與微機(jī)原理評閱成績:評閱意見:成績評定教師簽名:日期: 年 月 日目錄一、概要及關(guān)鍵詞.1二、課程設(shè)計題目.2三、設(shè)計思想簡述.2四、程序流程圖.3五、程序源代碼.4-7六、程序運(yùn)行過程.8七、課程設(shè)計總結(jié)報告.9-10八、參考文獻(xiàn).10 吃豆子程序?qū)W 生:WC摘要:本程序通過匯編語言來實(shí)現(xiàn)在屏幕上顯示多行“豆子”(用“.”表示),用一個“嘴巴”(用字符“C”表示),程序運(yùn)行時,單擊空格,“嘴巴”開始從左到右逐行還是“吃豆子”,一直到“豆子”被吃完停止或者單擊

2、空格暫停。這個程序是在Windows xp的平臺上的MASM5進(jìn)行編譯的。此程序提供一個可視化游戲界面,通過鍵盤輸入相應(yīng)的操作后,便可以執(zhí)行整個游戲程序。當(dāng)再次空格或整局游戲完成后重新開始整個游戲,也可以通過鍵盤輸入定義的字符后,退出程序。通過本次匯編程序的設(shè)計,使我進(jìn)一步熟練掌握了匯編程序中的一些相關(guān)命令的使用。講書本理論知識在現(xiàn)實(shí)中得到實(shí)際的應(yīng)用,幫助我進(jìn)一步的了解匯編語言編程的一些原理關(guān)鍵詞:數(shù)據(jù)段中斷子程序代碼段 調(diào)用主程序Abstract:This assembly language program to achieve through the screen displays mul

3、tiple lines of "beans"(with "." representation), with a "mouth"(with the character "C" that), the program runs, click the box, "Mouth "line by line starting from left to right or " Pacman "has always been to " beans "is finished c

4、lick the box to stop or pause. This program is in the platform Windows xp MASM5 compiled. This program provides a visual game interface, the corresponding operation by keyboard input, then they can execute the game program. When the space or the entire Board again after the game to start the game, y

5、ou can also define the character keyboard input, exit the program. Through the design of this assembler so I further mastered some of the associated assembler commands. Theoretical knowledge about the book been in the real practical application, to help me better understand some of the principles of

6、 assembly language programmingKeywords:Data segment Interrupt Subroutine Code segmentThe main program一、 課程設(shè)計題目(分析)我選擇匯編語言與微機(jī)原理課程設(shè)計的題目是吃豆子程序。之所以選擇這個題目,是因?yàn)槲矣X得這個課程設(shè)計做出來會比較有意思,對于愛好游戲的廣大學(xué)生來說也有一定的實(shí)用價值;這個題目相對而言不是很簡單,它不但要運(yùn)用我們上課所學(xué)的知識,還涉及到許多課外的內(nèi)容。吃豆子程序設(shè)計題目要求:在屏幕上顯示多行“豆子”(用“.”表示),用一個“嘴巴”(用字符“C”表示),程序運(yùn)行時,單擊空格,“

7、嘴巴”開始從左到右逐行還是“吃豆子”,一直到“豆子”被吃完停止或者單擊空格暫停。用字符“C”表示嘴巴。用“.”表示豆子;首先屏幕上要布滿“.”也就是豆子;然后字符“C”每走一步,此時豆子也要在相應(yīng)位置減少一個,直到豆子被吃完或者按空格鍵停止游戲。二、 設(shè)計思想簡述對于這個題目我的設(shè)計思想是:首先定義一個字符串,內(nèi)容為字符“C”的ASC值還有其他的一些相關(guān)信息,然后把屏幕設(shè)置多行豆子,或者布滿豆子,把“C”每往前走一格就把該位子上的豆子變?yōu)榭崭矜I,即“C”遇到非空格就跳轉(zhuǎn)到下一步;這樣一顆豆子就吃掉了,只要依次循環(huán)下去,就可以把豆子全部吃掉,或者中間按空格,暫停游戲。三、主要程序框圖開 始輸入界

8、面提示CX/DX出棧恢復(fù)現(xiàn)場空格->STRDI輸入任意字符AL輸出字符串STRC->STRDIDI+1->DI字符串STR首地址DI為空輸出修改字符串CX/DX入棧保護(hù)現(xiàn)場RUZHAN程序結(jié)束調(diào)用延時程序四、 程序源代碼assume cs:code,es:data ;assue:段寄存器偽指令。所謂關(guān)聯(lián),指某一段寄存器使用某一指定的段空間。cs:code ,ds:data , 代碼段寄存器cs與code關(guān)聯(lián);數(shù)據(jù)段寄存器ds與data關(guān)聯(lián)。data segment ;定義數(shù)據(jù)段 temp1 dw ? temp2 dw ? ;定義段temp1和temp2data endscod

9、e segment ;定義程序代碼段in al,60H ;從端口60輸入內(nèi)容并傳送到alcmp al,57;比較送到al的數(shù)與57(在ascll碼中代表十進(jìn)制的9)的差jnz nospace ;執(zhí)行跳轉(zhuǎn)mov cx,1 ;把立即數(shù)1送到cxnospace:mov al,20H ;設(shè)置INT 1Fh字體指針out 20H,al ;向0x20 I/O地址送0x20的數(shù)據(jù)iret ;中斷返回程序start:mov ah,00H ;00H設(shè)置顯示模式mov al,02H ;02H用文本坐標(biāo)下設(shè)置光標(biāo)位置 int 10H ;BIOS 對屏幕及顯示器所提供的服務(wù)程序mov ah,02H ;02H用文本坐標(biāo)

10、下設(shè)置光標(biāo)位置mov dl,'.' ;取要顯示的字符到DL中mov cx,80*25 ;dos最大屏幕表示量,默認(rèn)最大顯示量就是80*25setpoint: int 21H ;調(diào)用系統(tǒng)中斷,鍵盤輸入loop setpoint;循環(huán)指令testkey: ;模擬鍵盤的空格健動作mov ah,07H ;調(diào)用07H設(shè)置屏幕滾屏顯示int 21H ;調(diào)用系統(tǒng)中斷,鍵盤輸入cmp al,' ' ;比較指令,保證全為空格jnz exit ;不為空格則跳轉(zhuǎn)mov ax,0 mov ds,ax ;把段地址0通過寄存器ax送到dsmov ax,data mov es,ax mov

11、bx,9*4+2 ;把偏移地址送到bxmov ax,bx ;寄存器間接尋址方式,把bx地址所指的值送給axmov es:temp1,axmov ax,codemov bx,ax ;把AX的值賦予BX所指向的內(nèi)存單元mov bx,9*4 ;把段地址送到bxmov ax,bxmov es:temp2,axmov word ptr bx,0 ;類型操作符對名字或標(biāo)號的類型屬性進(jìn)行有關(guān)設(shè)置mov ah,02H ;02H用文本坐標(biāo)下設(shè)置光標(biāo)位置mov bh,0xor dx,dx ;二進(jìn)制運(yùn)算做清0操作,dx清0int 10Hmovax,0B800H ;文本模式下顯存起始地址;0a000h是圖形模式下顯存

12、起始地址mov ds,ax ;把a(bǔ)x的值送到數(shù)據(jù)段xor bx,bx ;二進(jìn)制運(yùn)算做清0操作,bx清0mov cx,80*25 ;dos最大屏幕表示量,默認(rèn)最大顯示量就是80*25eatpea:mov si,0FFFFH;代表在25×80的文本顯示方式下,屏幕可有2000個字符位置,(si為源變址寄存器,si與di有自動增量和自動減量功能,用于變址很方便)mov di,004FFHdelay:sub si,1 ;將si-1的值送到sijnz delay;不為0就繼續(xù)si-1,即吃下一個豆子sub di,1;將di-1的值送到dijnz delay;不為0就繼續(xù)di-1,即翻到下一頁m

13、ov byte ptr bx,' ' ;把“”的第一個字節(jié)的內(nèi)容送到bx并把它的操作類型定義為字節(jié) mov byte ptr bx+2,'C'把“C”的第一個字節(jié)的內(nèi)容送到bx+2并把它的操作類型定義為字節(jié)add bx,2 ;將bx+2的值賦給bxloop eatpeamov ax,0 mov ds,ax ;把立即數(shù)0通過ax寄存器送到ds數(shù)據(jù)段寄存器mov bx,9*4+2 mov ax,es:temp1;把附加段中temp1中的內(nèi)容通過ax送到bxmov bx,ax mov bx,9*4 mov ax,es:temp2mov bx,ax ;把附加段中temp

14、2中的內(nèi)容通過ax送到bxin al,60h ;讀取鍵盤值cmp al,10h je quit ;執(zhí)行跳轉(zhuǎn)jmp start ;空格鍵則跳到開始quit: mov ax,4c00h int 21h ;中斷調(diào)用程序exit:mov ah,07H ;利用07號DOS系統(tǒng)功能調(diào)用退回DOSint 21H ;調(diào)用系統(tǒng)中斷mov ax,4C00H ;調(diào)用 INT 21H 的 4CH 號中斷,安全退出程序int 21H ;調(diào)用系統(tǒng)中斷code endsend start五、程序運(yùn)行過程(1)編譯:*:在windows xp系統(tǒng)下運(yùn)行MASM匯編軟件,編譯程序,無錯誤與警告,執(zhí)行下一步。(2)鏈接:*:在編

15、譯無錯誤警告之后進(jìn)行鏈接,出現(xiàn)警告,因?yàn)椴挥绊戇\(yùn)行結(jié)果,繼續(xù)執(zhí)行下一步。(3)執(zhí)行:*:上示截圖為運(yùn)行時的畫面,通過鍵盤輸入空格鍵后執(zhí)行吃豆子游戲程序。六、課程設(shè)計總結(jié)報告(1) 課程設(shè)計中所遇到的主要問題和解決方法。 在課程設(shè)計的過程當(dāng)中遇到的主要問題就是對整個匯編知識不是很熟悉,部分代碼不能靈活運(yùn)用,也有部分代碼不能理解,因此在設(shè)計過程中花了較多時間查閱書籍跟瀏覽網(wǎng)上資料;在編寫完整個程序后,編譯、鏈接、運(yùn)行時,第一次按空格鍵開始吃豆子,再按空格鍵停止吃豆子,但是第三次按空格鍵時則出現(xiàn)D:MASM>等字符,如果繼續(xù)按空格鍵則出現(xiàn)了手動吃豆子的現(xiàn)象,如果在D:MASM>后輸入“文

16、件名”則重新開始整個游戲;但是通過對整個程序的檢查,我發(fā)現(xiàn)在源代碼循環(huán)部分后少了一部分退出游戲的源代碼,因此我加了一段關(guān)于按空格鍵退出或重新開始游戲的源代碼解決了此問題;再一個就是DOS指令不能靈活運(yùn)用,導(dǎo)致程序運(yùn)行過程中紕漏百出,這樣也浪費(fèi)了不少時間,最后通過多次嘗試修改,終于完成了整個程序設(shè)計。(2) 創(chuàng)新和得意之處。這個吃豆子游戲的程序的創(chuàng)新之處主要體現(xiàn)在整個程序能以一種可視化的動態(tài)界面看到類似于“吃豆子”的動作;當(dāng)然這個過程也是比較巧妙的,字符“C”本身就象形與吃豆子的嘴,而“.”也很像豆子,整個程序運(yùn)行起來生動形象,再者就是整個游戲通過空格鍵控制游戲的開始,重新開或者退出游戲,整個過

17、程快捷方便。(3) 課程設(shè)計中存在的不足,需要進(jìn)一步改進(jìn)的設(shè)想。這個程序設(shè)計存在的不足主要表現(xiàn)在當(dāng)?shù)谝淮伟纯崭矜I暫停后,再按空格鍵就重新開始游戲了,或者按空格鍵,然后回車鍵,再輸入“文件名”就重新開始整個游戲了,此點(diǎn)需要改進(jìn)應(yīng)當(dāng)編寫成按空格鍵開始游戲,再按空格鍵暫停,又按空格鍵繼續(xù),按回車鍵退出游戲;當(dāng)然如果能達(dá)到一定的高度,這個吃豆子游戲也可以修改成人為操作的一個小游戲程序,可人手動以控制吃豆子的方向,速度等,因此我會繼續(xù)努力,不斷提高自己編程的能力,編寫出有趣味的小游戲程序。(4) 課程設(shè)計的感想和心得體會。通過本次匯編語言課程設(shè)計,讓我更加明白實(shí)踐的重要性,如果整天的學(xué)習(xí)課本上的理論知識

18、而不拿來用那肯定是很煩的,不但要去理解各種指令的功能,還要學(xué)習(xí)相應(yīng)的硬件知識。再者,學(xué)習(xí)理論知識的目的還是要拿來運(yùn)用,通過實(shí)踐來鞏固所學(xué)的理論知識。并且通過這次課程設(shè)計實(shí)踐,讓我一改往日的厭學(xué)情緒,尤其是當(dāng)程序運(yùn)行正確的時候,那種來自內(nèi)心的成就感,讓我更加有信心學(xué)好匯編語言了。通過本次課程設(shè)計讓我更深刻的明白學(xué)習(xí)的重要性,遇到不懂得問題要敢于向同學(xué)提問,沒有什么不好意思的,不懂就是不懂。如果遇到問題了還坐那里發(fā)呆,那肯定完成不了任務(wù)。還有遇到問題多和同學(xué)探討,所謂“獨(dú)學(xué)而無友,則孤陋而寡聞”就是這個道理,或許就在和同學(xué)的討論過程中,點(diǎn)開了你的思路,問題就迎刃而解了??傊?,這次匯編語言課程設(shè)計讓我受益匪淺,我不但收獲了

溫馨提示

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

評論

0/150

提交評論