五角星移動(dòng)-匯編語言課程設(shè)計(jì)報(bào)告_第1頁
五角星移動(dòng)-匯編語言課程設(shè)計(jì)報(bào)告_第2頁
五角星移動(dòng)-匯編語言課程設(shè)計(jì)報(bào)告_第3頁
五角星移動(dòng)-匯編語言課程設(shè)計(jì)報(bào)告_第4頁
五角星移動(dòng)-匯編語言課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄目 錄- 1 -正 文- 2-一、題目的具體功能概述- 2 -二、軟件設(shè)計(jì)流程及描述- 2 -三、源程序代碼- 5 -四、課程設(shè)計(jì)體會(huì)- 8-五、參考文獻(xiàn)- 8-正 文一、 題目的具體功能概述1. 顯示提示信息,進(jìn)入歡迎界面后顯示提示信息。2. 清屏。3. 按任意鍵進(jìn)入主界面,顯示操作提示信息。4. 清屏。5. 用s鍵實(shí)現(xiàn)左移,e鍵實(shí)現(xiàn)上移,d鍵實(shí)現(xiàn)下移,f鍵實(shí)現(xiàn)右移,q鍵實(shí)現(xiàn)退出。6. 按下不同的功能鍵,五角星對(duì)應(yīng)不同方向的移動(dòng)。二、軟件設(shè)計(jì)流程及描述1軟件設(shè)計(jì)流程步驟 (1).開始(2).顯示提示信息(3).鍵盤輸入字符(4).清屏(5).定五角星初始位置顯示位置(6).畫五角星(7

2、).檢查按鍵值(8).若為q鍵則退出(9).不是則判斷是否為上(10).是則調(diào)用清除子程序(11).實(shí)現(xiàn)五角星上移(12).否則轉(zhuǎn)與下比較同上. (16).按q鍵退出。2.步驟分析 (1).由于后面畫五角星和清除五角星反復(fù)用到BIOS中斷顯示中斷2號(hào)定位光標(biāo)和9號(hào)寫點(diǎn),首先對(duì)其進(jìn)行了宏定義。(2).用BIOS中斷顯示中斷0號(hào)功能,ah=2選擇80*25黑白文本方式顯示。(3).用DOS系統(tǒng)功能調(diào)用9號(hào)輸出提示信息1和8號(hào)使按任意鍵進(jìn)入下一界面。 (4). 用BIOS中斷顯示中斷6號(hào),al=0清屏。 (5). 用DOS系統(tǒng)功能調(diào)用9號(hào)輸出提示信息2和8號(hào)使按任意鍵進(jìn)入下一界面。(6). 用BIO

3、S中斷顯示中斷6號(hào),al=0清屏。(7). 用BIOS中斷顯示中斷2號(hào),把畫五角星的起始點(diǎn)光標(biāo)定于屏幕中間。(8).用si寄存器存儲(chǔ)每一次畫五角星起始點(diǎn)的 行列值。(9).畫五角星。把si寄存器偏移地址賦給dx,(用一個(gè)si寄存器使為了存放每一次五角星的起始點(diǎn)光標(biāo)行列值,為后面的五角星清除和移動(dòng)帶來方便),引用宏定義,畫出五角星第一個(gè)點(diǎn),然后光標(biāo)行列值不斷變化,依次引用宏定義,畫出完整五角星。(10). 用BIOS中斷鍵盤中斷調(diào)用0號(hào),從鍵盤讀字符到al中,檢查按鍵值。(11).比較按鍵值是否與q鍵相等,若相等,用jz條件轉(zhuǎn)移指令轉(zhuǎn)到退出。若不等,則與e鍵()值比較,若不等于,則轉(zhuǎn)到向下移動(dòng)五

4、角星程序段。若等于,則先調(diào)用qing程序段清除五角星子程序,然后行減1,用jmp指令轉(zhuǎn)到write程序段畫五角星,實(shí)現(xiàn)五角星上移。同理,在后面的下,向左,向右移動(dòng)的 程序中也做此類的分析操作。(12).最后在向左移動(dòng)的程序段中,前面已經(jīng)判斷過不是上,下,右鍵,而為了防止按下的鍵也不是左鍵(而是其他任意鍵)發(fā)生意外情況,則視其操作無效,即五角星不移動(dòng),此時(shí)就用jnz指令轉(zhuǎn)到write還在本為畫五角星,若是s()鍵,則先調(diào)用qing程序段清除五角星子程序,然后si減1,即列減1,用jmp指令轉(zhuǎn)到write程序段畫五角星,實(shí)現(xiàn)五角星左移。(13).若按鍵為q,則退出。 三、源程序代碼data seg

5、ment buff1 db 0dh,0ah,0dh,0ah db Welcome you to run this programme! db 0dh,0ah,0ah db *please press any key to continue*$ ;提示信息1 buff2 db 0dh,0ah,0ah db Now attention please! db 0dh,0ah,0ah db press e turn up,press d turn down,press s to left db 0dh,0ah,0ah db press f to right,press q to quit db 0dh

6、,0ah,0ah db Now please press any key to continue$ ;提示信息2data ends stackes segment db 200 dup(0) stackes endscodes segment assume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,ax wr macro zifu ;宏定義寫點(diǎn) mov ah,2 int 10h ;定位光標(biāo) mov al,zifu mov cx,1 mov ah,0ah int 10h ;寫點(diǎn) endm tu: mov ah,0 mov al,2 int 1

7、0h ;設(shè)定屏幕為80*25黑白文本 lea dx,offset buff1 mov ah,9 int 21h ;顯示提示信息1 mov ah,8 int 21h ;鍵盤輸入字符 mov ax,0600h mov cx,0 mov dx,184fh int 10h ;清屏 mov ah,0 mov al,2 int 10h lea dx,offset buff2 mov ah,9 int 21h ;顯示提示信息2 mov ah,8 int 21h ;鍵盤輸入字符 mov ax,0600h mov cx,0 mov dx,184fh int 10h ;清屏 mov ah,0 mov al,2 i

8、nt 10h mov si,0a27h ;定初始位置顯示位置,用si寄存器存儲(chǔ)每個(gè)五角星的起始點(diǎn)write: mov dx,si ;從起始點(diǎn)畫五角星 wr 2ah add dh,2 sub dl,3 wr 2ah add dl,3 wr 2ah add dl,3 wr 2ah add dh,2 sub dl,4 wr 2ah add dl,3 wr 2ah ;五角星畫完 mov ah,0 int 16h ;檢查按鍵值 cmp al,71h jz exit ;若為q鍵則退出 cmp al,65h ;是否為上 jnz xia ;否則轉(zhuǎn)與下比較 call qing ;是則調(diào)用清除子程序 sub si

9、,0100h jmp write ;實(shí)現(xiàn)五角星上移xia: cmp al,64h ;是否為下 jnz you ; 否則轉(zhuǎn)與右比較 call qing ;是則調(diào)用清除子程序 add si,0100h jmp write ;實(shí)現(xiàn)五角星下移you: cmp al,66h ;是否為右 jnz zuo ;否則轉(zhuǎn)與左比較 call qing ;是則調(diào)用清除子程序 inc si jmp write ;實(shí)現(xiàn)五角星右移zuo: cmp al,73h ;是否為左 jnz write ;否則不移動(dòng) call qing ;是則調(diào)用清除子程序 dec si jmp write ;實(shí)現(xiàn)五角星左移 qing proc mo

10、v dx,si ;清除五角星 wr 0 add dh,2 sub dl,3 wr 0 add dl,3 wr 0 add dl,3 wr 0 add dh,2 sub dl,4 wr 0 add dl,3 wr 0 retqing endp exit: mov ah,4chint 21hcodes ends end start四、課程設(shè)計(jì)體會(huì) 經(jīng)過此次課設(shè),給我最大的感受,就是第一次親手編出這么長的代碼,而且實(shí)現(xiàn)了在此之前看似很難做到的功能,有很大的成就感,讓我對(duì)匯編語言加深了好感。 但課設(shè)之中也讓我收獲了很多經(jīng)驗(yàn)。給 我印象最深的就是,在程序中非常容易出小的毛病,而這些小毛病往往浪費(fèi)大量的時(shí)間也很難檢查出來,讓人煩惱至極。比如,在程序結(jié)束的最后一條指令mov ah,4ch ; int 21h中少寫了h,寫成了int 21,導(dǎo)致程序運(yùn)行時(shí),屏幕一閃而過,沒有運(yùn)行結(jié)果,而且程序也不報(bào)錯(cuò),反復(fù)檢查也 找不到錯(cuò)誤,讓人傷透腦筋。還有在代碼段剛開始時(shí),忘記寫mov ax,data;mov ds,ax導(dǎo)致后面調(diào)用清屏和畫五角星等程序總是出錯(cuò)。此后讓我懂得寫程序一定要仔細(xì),要認(rèn)真寫清每一行代碼。 另外,在編出中也參考了一些其他資料,從中也 學(xué)到了不少編程知識(shí)和經(jīng)驗(yàn),比如編程要先搭好構(gòu)架,畫出流程圖,代碼要寫出必要的注釋

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論