




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院課程論文(設(shè)計(jì))學(xué) 部:理工學(xué)部班 級(jí):08姓 名: 學(xué) 號(hào):課程論文(設(shè)計(jì))題目:吃豆子程序課程名稱:匯編語言與微機(jī)原理評(píng)閱成績:評(píng)閱意見:成績?cè)u(píng)定教師簽名:日期: 年 月 日目錄一、概要及關(guān)鍵詞.1二、課程設(shè)計(jì)題目.2三、設(shè)計(jì)思想簡述.2四、程序流程圖.3五、程序源代碼.4-7六、程序運(yùn)行過程.8七、課程設(shè)計(jì)總結(jié)報(bào)告.9-10八、參考文獻(xiàn).10 吃豆子程序?qū)W 生:WC摘要:本程序通過匯編語言來實(shí)現(xiàn)在屏幕上顯示多行“豆子”(用“.”表示),用一個(gè)“嘴巴”(用字符“C”表示),程序運(yùn)行時(shí),單擊空格,“嘴巴”開始從左到右逐行還是“吃豆子”,一直到“豆子”被吃完停止或者單擊
2、空格暫停。這個(gè)程序是在Windows xp的平臺(tái)上的MASM5進(jìn)行編譯的。此程序提供一個(gè)可視化游戲界面,通過鍵盤輸入相應(yīng)的操作后,便可以執(zhí)行整個(gè)游戲程序。當(dāng)再次空格或整局游戲完成后重新開始整個(gè)游戲,也可以通過鍵盤輸入定義的字符后,退出程序。通過本次匯編程序的設(shè)計(jì),使我進(jìn)一步熟練掌握了匯編程序中的一些相關(guān)命令的使用。講書本理論知識(shí)在現(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ì)題目(分析)我選擇匯編語言與微機(jī)原理課程設(shè)計(jì)的題目是吃豆子程序。之所以選擇這個(gè)題目,是因?yàn)槲矣X得這個(gè)課程設(shè)計(jì)做出來會(huì)比較有意思,對(duì)于愛好游戲的廣大學(xué)生來說也有一定的實(shí)用價(jià)值;這個(gè)題目相對(duì)而言不是很簡單,它不但要運(yùn)用我們上課所學(xué)的知識(shí),還涉及到許多課外的內(nèi)容。吃豆子程序設(shè)計(jì)題目要求:在屏幕上顯示多行“豆子”(用“.”表示),用一個(gè)“嘴巴”(用字符“C”表示),程序運(yùn)行時(shí),單擊空格,“
7、嘴巴”開始從左到右逐行還是“吃豆子”,一直到“豆子”被吃完停止或者單擊空格暫停。用字符“C”表示嘴巴。用“.”表示豆子;首先屏幕上要布滿“.”也就是豆子;然后字符“C”每走一步,此時(shí)豆子也要在相應(yīng)位置減少一個(gè),直到豆子被吃完或者按空格鍵停止游戲。二、 設(shè)計(jì)思想簡述對(duì)于這個(gè)題目我的設(shè)計(jì)思想是:首先定義一個(gè)字符串,內(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)用延時(shí)程序四、 程序源代碼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 對(duì)屏幕及顯示器所提供的服務(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: ;模擬鍵盤的空格健動(dòng)作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 ;類型操作符對(duì)名字或標(biāo)號(hà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個(gè)字符位置,(si為源變址寄存器,si與di有自動(dòng)增量和自動(dòng)減量功能,用于變址很方便)mov di,004FFHdelay:sub si,1 ;將si-1的值送到sijnz delay;不為0就繼續(xù)si-1,即吃下一個(gè)豆子sub di,1;將di-1的值送到dijnz delay;不為0就繼續(xù)di-1,即翻到下一頁m
13、ov byte ptr bx,' ' ;把“”的第一個(gè)字節(jié)的內(nèi)容送到bx并把它的操作類型定義為字節(jié) mov byte ptr bx+2,'C'把“C”的第一個(gè)字節(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號(hào)DOS系統(tǒng)功能調(diào)用退回DOSint 21H ;調(diào)用系統(tǒng)中斷mov ax,4C00H ;調(diào)用 INT 21H 的 4CH 號(hào)中斷,安全退出程序int 21H ;調(diào)用系統(tǒng)中斷code endsend start五、程序運(yùn)行過程(1)編譯:*:在windows xp系統(tǒng)下運(yùn)行MASM匯編軟件,編譯程序,無錯(cuò)誤與警告,執(zhí)行下一步。(2)鏈接:*:在編
15、譯無錯(cuò)誤警告之后進(jìn)行鏈接,出現(xiàn)警告,因?yàn)椴挥绊戇\(yùn)行結(jié)果,繼續(xù)執(zhí)行下一步。(3)執(zhí)行:*:上示截圖為運(yùn)行時(shí)的畫面,通過鍵盤輸入空格鍵后執(zhí)行吃豆子游戲程序。六、課程設(shè)計(jì)總結(jié)報(bào)告(1) 課程設(shè)計(jì)中所遇到的主要問題和解決方法。 在課程設(shè)計(jì)的過程當(dāng)中遇到的主要問題就是對(duì)整個(gè)匯編知識(shí)不是很熟悉,部分代碼不能靈活運(yùn)用,也有部分代碼不能理解,因此在設(shè)計(jì)過程中花了較多時(shí)間查閱書籍跟瀏覽網(wǎng)上資料;在編寫完整個(gè)程序后,編譯、鏈接、運(yùn)行時(shí),第一次按空格鍵開始吃豆子,再按空格鍵停止吃豆子,但是第三次按空格鍵時(shí)則出現(xiàn)D:MASM>等字符,如果繼續(xù)按空格鍵則出現(xiàn)了手動(dòng)吃豆子的現(xiàn)象,如果在D:MASM>后輸入“文
16、件名”則重新開始整個(gè)游戲;但是通過對(duì)整個(gè)程序的檢查,我發(fā)現(xiàn)在源代碼循環(huán)部分后少了一部分退出游戲的源代碼,因此我加了一段關(guān)于按空格鍵退出或重新開始游戲的源代碼解決了此問題;再一個(gè)就是DOS指令不能靈活運(yùn)用,導(dǎo)致程序運(yùn)行過程中紕漏百出,這樣也浪費(fèi)了不少時(shí)間,最后通過多次嘗試修改,終于完成了整個(gè)程序設(shè)計(jì)。(2) 創(chuàng)新和得意之處。這個(gè)吃豆子游戲的程序的創(chuàng)新之處主要體現(xiàn)在整個(gè)程序能以一種可視化的動(dòng)態(tài)界面看到類似于“吃豆子”的動(dòng)作;當(dāng)然這個(gè)過程也是比較巧妙的,字符“C”本身就象形與吃豆子的嘴,而“.”也很像豆子,整個(gè)程序運(yùn)行起來生動(dòng)形象,再者就是整個(gè)游戲通過空格鍵控制游戲的開始,重新開或者退出游戲,整個(gè)過
17、程快捷方便。(3) 課程設(shè)計(jì)中存在的不足,需要進(jìn)一步改進(jìn)的設(shè)想。這個(gè)程序設(shè)計(jì)存在的不足主要表現(xiàn)在當(dāng)?shù)谝淮伟纯崭矜I暫停后,再按空格鍵就重新開始游戲了,或者按空格鍵,然后回車鍵,再輸入“文件名”就重新開始整個(gè)游戲了,此點(diǎn)需要改進(jìn)應(yīng)當(dāng)編寫成按空格鍵開始游戲,再按空格鍵暫停,又按空格鍵繼續(xù),按回車鍵退出游戲;當(dāng)然如果能達(dá)到一定的高度,這個(gè)吃豆子游戲也可以修改成人為操作的一個(gè)小游戲程序,可人手動(dòng)以控制吃豆子的方向,速度等,因此我會(huì)繼續(xù)努力,不斷提高自己編程的能力,編寫出有趣味的小游戲程序。(4) 課程設(shè)計(jì)的感想和心得體會(huì)。通過本次匯編語言課程設(shè)計(jì),讓我更加明白實(shí)踐的重要性,如果整天的學(xué)習(xí)課本上的理論知識(shí)
18、而不拿來用那肯定是很煩的,不但要去理解各種指令的功能,還要學(xué)習(xí)相應(yīng)的硬件知識(shí)。再者,學(xué)習(xí)理論知識(shí)的目的還是要拿來運(yùn)用,通過實(shí)踐來鞏固所學(xué)的理論知識(shí)。并且通過這次課程設(shè)計(jì)實(shí)踐,讓我一改往日的厭學(xué)情緒,尤其是當(dāng)程序運(yùn)行正確的時(shí)候,那種來自內(nèi)心的成就感,讓我更加有信心學(xué)好匯編語言了。通過本次課程設(shè)計(jì)讓我更深刻的明白學(xué)習(xí)的重要性,遇到不懂得問題要敢于向同學(xué)提問,沒有什么不好意思的,不懂就是不懂。如果遇到問題了還坐那里發(fā)呆,那肯定完成不了任務(wù)。還有遇到問題多和同學(xué)探討,所謂“獨(dú)學(xué)而無友,則孤陋而寡聞”就是這個(gè)道理,或許就在和同學(xué)的討論過程中,點(diǎn)開了你的思路,問題就迎刃而解了。總之,這次匯編語言課程設(shè)計(jì)讓我受益匪淺,我不但收獲了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 翻譯(法語)崗位考試試卷及答案
- 《洮藏黑山羊》地方標(biāo)準(zhǔn)編制說明2025
- 新型膜分離技術(shù)在水處理領(lǐng)域的效能評(píng)估
- 2025年江蘇省市場監(jiān)督管理局下屬事業(yè)單位招聘考試筆試試題【答案】
- 硝化工藝上崗證考試題及答案(含答案)
- 消費(fèi)電子行業(yè)概況
- 2025年2月實(shí)習(xí)版主個(gè)人述職報(bào)告范文
- 2025年P(guān)M10自動(dòng)采樣器及測(cè)定儀項(xiàng)目發(fā)展計(jì)劃
- 2025年智能壓力發(fā)生器合作協(xié)議書
- 2025年實(shí)木類家具項(xiàng)目建議書
- 《思想道德與法治》學(xué)習(xí)通課后章節(jié)答案期末考試題庫2025年
- 清廉講堂活動(dòng)方案
- 家居落地活動(dòng)方案
- 2025年醫(yī)保知識(shí)考試題庫及答案:醫(yī)保信息化建設(shè)應(yīng)用法律法規(guī)試題
- 環(huán)境現(xiàn)場采樣培訓(xùn)
- 2025年 汕頭市公安局警務(wù)輔助人員招聘考試筆試試卷附答案
- 車輛傷害事故桌面功能演練方案、腳本
- XX公司年產(chǎn)10萬噸陽極銅及5萬噸銅桿項(xiàng)目環(huán)境影響報(bào)告書
- 陜西省專業(yè)技術(shù)人員繼續(xù)教育2025公需課《黨的二十屆三中全會(huì)精神解讀與高質(zhì)量發(fā)展》20學(xué)時(shí)題庫及答案
- 財(cái)務(wù)考試試題及答案大全
- 2024-2025學(xué)年人教版數(shù)學(xué)五年級(jí)下學(xué)期期末試卷(含答案)
評(píng)論
0/150
提交評(píng)論