匯編打字練習(xí)_第1頁
匯編打字練習(xí)_第2頁
匯編打字練習(xí)_第3頁
匯編打字練習(xí)_第4頁
匯編打字練習(xí)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、攀枝花學(xué)院學(xué)生課程設(shè)計(jì)(論文)題 目: 打字練習(xí) 學(xué)生姓名 學(xué) 號: 所在院(系): 計(jì)算機(jī)學(xué)院 專 業(yè): 2009計(jì)算機(jī)科學(xué)與技術(shù) 班 級: 第 二 組 指 導(dǎo) 教 師: 何老師 職稱: 講師 2010年 01月 07日攀枝花學(xué)院本科學(xué)生課程設(shè)計(jì)任務(wù)書題目打 字 練 習(xí)1、課程設(shè)計(jì)的目的1、使同學(xué)們增進(jìn)對匯編語言的認(rèn)識,加強(qiáng)用匯編語言編程的能力。2、通過查找、運(yùn)用設(shè)計(jì)資料,完成工程設(shè)計(jì)所必備的基本訓(xùn)練。3、使同學(xué)們更深入的了解計(jì)算機(jī)系統(tǒng)內(nèi)部的有關(guān)知識,為以后的學(xué)習(xí)和系統(tǒng)開發(fā)奠定良好的基礎(chǔ)。2、課程設(shè)計(jì)的內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)要求、工作要求等)設(shè)計(jì)內(nèi)容:編程實(shí)現(xiàn)如下功能:將26個字母中

2、的任一字母從屏幕落下,用戶要在這個過程中鍵入落下的字母,如果鍵入正確,字母消失;鍵入不正確,字母繼續(xù)下落。按下列要求設(shè)計(jì)主菜單:按回車鍵進(jìn)入打字練習(xí);按Esc鍵返回主界面;按空格鍵暫停;按大寫字母“E”程序結(jié)束。設(shè)計(jì)思路:循環(huán)調(diào)用BIOS的10H中斷類型的09號功能,顯示一個有提示信息的開始界面。調(diào)用DOS系統(tǒng)功能調(diào)用的1號功能,接受從鍵盤輸入的字符到AL寄存器,如果(AL)為空格,進(jìn)入打字練習(xí)界面;如果(AL)為“E”,則退出程序。在界面的第0行顯示由26個字母組成的字符串。字母下落的設(shè)計(jì)過程是:(1)利用BIOS功能調(diào)用的2號功能,置光標(biāo)位置。(2)10號功能在光標(biāo)位置寫字母。(3)延遲一

3、段時間。(4)重置光標(biāo)位置(列坐標(biāo)不變,改變行坐標(biāo)),利用10號功能在光標(biāo)位置寫空格,延遲一段時間。(5)重復(fù)(1)(4)。打字練習(xí)的實(shí)現(xiàn)過程是:當(dāng)字母下落沒有超過最大行坐標(biāo)時,利用DOS系統(tǒng)功能調(diào)用的6號功能,接受從鍵盤輸入的字符到AL寄存器。如果(AL)為1BH(Esc),則轉(zhuǎn)向主界面顯示的程序段;如果(AL)為空格,則字母在確定光標(biāo)位置顯示,延遲一段時間,直到(AL)再次為空合格;如果(AL)為任意字母,則判斷其是否和下落字母相同,如果相同,則在相應(yīng)光標(biāo)位置顯示空合格;否則,字母繼續(xù)下落。重復(fù)以上過程。操作說明:運(yùn)行可執(zhí)行程序testword.exe,出現(xiàn)菜單主界面,按空格鍵出現(xiàn)由26個

4、字母組成的亂序行,這時其中任一字母落下,在鍵盤上敲入該字母,如果輸入正確,字母消失;否則,字母繼續(xù)下落。按Esc鍵返回主菜單;按空格鍵暫停;按“E”退出。3、主要參考文獻(xiàn)1匯編語言程序設(shè)計(jì),吳向軍等,高等教育出版社,20022IBM-PC匯編語言及程序設(shè)計(jì)實(shí)驗(yàn)教程,沈美明等,清華大學(xué)出版社 ,20013匯編語言程序設(shè)計(jì), 錢曉捷等,電子工業(yè)出版社,20004匯編語言程序設(shè)計(jì)案例精編,李珍香等,中國水利水電出版社,20045 匯編語言程序設(shè)計(jì),白小明,中國鐵道出版社,2009-8-16 匯編語言程序設(shè)計(jì),王成耀,姚琳,機(jī)械工業(yè)出版社,2003-03-014、課程設(shè)計(jì)工作進(jìn)度計(jì)劃時間內(nèi)容安排1天分

5、析設(shè)計(jì)準(zhǔn)備3天編程調(diào)試階段1天 編寫課程設(shè)計(jì)報告指導(dǎo)教師(簽字)日期年 月 日教研室意見:年 月 日學(xué)生(簽字): 接受任務(wù)時間: 年 月 日課程設(shè)計(jì)(論文)指導(dǎo)教師成績評定表題目名稱打 字 練 習(xí)評分項(xiàng)目分值得分評價內(nèi)涵工作表現(xiàn)20%01學(xué)習(xí)態(tài)度6遵守各項(xiàng)紀(jì)律,工作刻苦努力,具有良好的科學(xué)工作態(tài)度。02科學(xué)實(shí)踐、調(diào)研7通過實(shí)驗(yàn)、試驗(yàn)、查閱文獻(xiàn)、深入生產(chǎn)實(shí)踐等渠道獲取與課程設(shè)計(jì)有關(guān)的材料。03課題工作量7按期圓滿完成規(guī)定的任務(wù),工作量飽滿。能力水平35%04綜合運(yùn)用知識的能力10能運(yùn)用所學(xué)知識和技能去發(fā)現(xiàn)與解決實(shí)際問題,能正確處理實(shí)驗(yàn)數(shù)據(jù),能對課題進(jìn)行理論分析,得出有價值的結(jié)論。05應(yīng)用文獻(xiàn)的

6、能力5能獨(dú)立查閱相關(guān)文獻(xiàn)和從事其他調(diào)研;能提出并較好地論述課題的實(shí)施方案;有收集、加工各種信息及獲取新知識的能力。06設(shè)計(jì)(實(shí)驗(yàn))能力,方案的設(shè)計(jì)能力5能正確設(shè)計(jì)實(shí)驗(yàn)方案,獨(dú)立進(jìn)行裝置安裝、調(diào)試、操作等實(shí)驗(yàn)工作,數(shù)據(jù)正確、可靠;研究思路清晰、完整。07計(jì)算及計(jì)算機(jī)應(yīng)用能力5具有較強(qiáng)的數(shù)據(jù)運(yùn)算與處理能力;能運(yùn)用計(jì)算機(jī)進(jìn)行資料搜集、加工、處理和輔助設(shè)計(jì)等。08對計(jì)算或?qū)嶒?yàn)結(jié)果的分析能力(綜合分析能力、技術(shù)經(jīng)濟(jì)分析能力)10具有較強(qiáng)的數(shù)據(jù)收集、分析、處理、綜合的能力。成果質(zhì)量45%09插圖(或圖紙)質(zhì)量、篇幅、設(shè)計(jì)(論文)規(guī)范化程度5符合本專業(yè)相關(guān)規(guī)范或規(guī)定要求;規(guī)范化符合本文件第五條要求。10設(shè)計(jì)

7、說明書(論文)質(zhì)量30綜述簡練完整,有見解;立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理;實(shí)驗(yàn)正確,分析處理科學(xué)。11創(chuàng)新10對前人工作有改進(jìn)或突破,或有獨(dú)特見解。成績指導(dǎo)教師評語指導(dǎo)教師簽名: 年月日摘 要微機(jī)原理及應(yīng)用是一門實(shí)踐性很強(qiáng)的課程;其課程設(shè)計(jì)目的在于綜合運(yùn)用所學(xué)知識,全面掌握微機(jī)計(jì)算機(jī)與DOS方式的工作原理、編程和使用方法;在設(shè)計(jì)中,通過小組協(xié)作提出并論證設(shè)計(jì)方案,進(jìn)行軟件調(diào)試,最后獲得正確結(jié)果,可以加深和鞏固對理論知識的更好掌握,進(jìn)一步建立計(jì)算機(jī)應(yīng)用系統(tǒng)體的概念,初步掌握DOS開發(fā)方法,為以后進(jìn)行實(shí)際的軟件應(yīng)用開發(fā)奠定良好的基礎(chǔ)。 本設(shè)計(jì)是利用Masm for window集成實(shí)驗(yàn)環(huán)境來實(shí)

8、現(xiàn)得打字練習(xí)程序,當(dāng)前,在計(jì)算機(jī)和許多手機(jī)上流行許多小游戲,小軟件,應(yīng)用都很廣泛,比如本次編寫的練習(xí)打字小程序就很有趣,不僅讓我們學(xué)習(xí)打字,更加重要的是我們在編寫的過程中更好的掌握學(xué)過的知識,鍛煉了我們的編程技能。通過運(yùn)用匯編語言中有的循環(huán),子程序調(diào)用等來完成程序的編寫,并且通過對程序的調(diào)試,逐步的掌握匯編語言的功能,在自己不足的方面進(jìn)行改正,進(jìn)一步的鞏固所學(xué)的知識,熟練應(yīng)用匯編語言進(jìn)行一些程序的制作,進(jìn)一步培養(yǎng)了對編程的興趣關(guān)鍵詞 課程設(shè)計(jì),軟件調(diào)試,打字練習(xí),編程1 設(shè)計(jì)內(nèi)容簡介1.1 設(shè)計(jì)任務(wù)設(shè)計(jì)主菜單:按回車鍵進(jìn)入打字練習(xí);按ESC鍵進(jìn)入延緩界面;按空格鍵暫停;按大寫字母“E”程序結(jié)束

9、。將兩位十進(jìn)制數(shù)從屏幕上方落下,用戶要在這個過程中鍵入落下的字母,在下落的過程中鍵入落下的數(shù)字,如果正確,數(shù)字消失;鍵入不正確,數(shù)字繼續(xù)下落。若鍵入正確,則得分,沒有鍵入正確,不扣分。在打字的過程中,每下落十個數(shù)記一次總成績。1.2 設(shè)計(jì)思想 用匯編語言實(shí)現(xiàn)打字程序的思想,首先用BIOS的10H中斷類型的02H功能置光標(biāo)位置,接著用DOS的21H中斷類型的09H功能顯示字符串來顯示主界面;調(diào)用DOS的21H的08H功能,接受從鍵盤輸入的字符到AL寄存器,判斷AL如果為回車以默認(rèn)速度開始游戲,如為S鍵則進(jìn)入速度選擇界面,如為E鍵則退出程序;進(jìn)入速度選擇界面后,調(diào)用DOS的21H的08H

10、功能,選擇速度后進(jìn)入游戲;進(jìn)入游戲后,隨機(jī)落下一字母,通過21H的06H功能調(diào)用,接受從鍵盤輸入的字符到AL寄存器,如鍵入ESC進(jìn)入成績界面,如鍵入空格則暫停游戲,如沒有得到輸入或輸入錯誤則繼續(xù)下落,輸入正確則字母消失,并通過21H的02H功能調(diào)用發(fā)生響鈴;接著繼續(xù)下落其他字母,如果落下的字母數(shù)大于78個則退出游戲進(jìn)入成績界面。進(jìn)入成績界面后通過DOS的21H的02H功能調(diào)用顯示擊中字母的個數(shù)和丟失字母的個數(shù),暫停大概2秒鐘后自動回到主界面。1.3 設(shè)備環(huán)境 16位Windows 2000操作系統(tǒng),文本編輯器使用寫字板,匯編程序使用MASM.EXE,連接程序使用LINK.EXE,調(diào)試程序使用D

11、EBUG.EXE。1.4 知識點(diǎn)運(yùn)用Windows 2000操作系統(tǒng)、寫字板、匯編程序等的基本使用規(guī)則;調(diào)用BIOS的1號功能、2號功能、6號功能、09號功能、10號功能等;匯編語言中,循環(huán)語句、判斷語句的使用和嵌套;文本的建立,程序鏈接的方法;繪圖和屏幕截圖的方法;DEBUG調(diào)試程序。2 程序流程設(shè)計(jì) 主要流程圖開始清屏,顯示開始界面按空格鍵進(jìn)入打字練習(xí)界面光標(biāo)初始化在第一行顯示由26個字母組成的字符串任一字母下落鍵入字符輸入字母正確嗎?消去字母字符為空格鍵嗎?字符為Esc鍵嗎?字母暫停鍵入任意字符返回主界面輸入“E”結(jié) 束 圖2.1打字練習(xí)程序流程圖3 程序代碼設(shè)計(jì)Init_game ma

12、cro op1,op2,op3,op4,op5,op6 mov cx,00h mov dh,op1 mov dl,op2op6:mov ah,02h mov bh,00h int 10h push cx mov ah,0ah mov al,op3 mov bh,00h mov cx,01h int 10h pop cx inc cx inc op4 cmp cx,op5 jne op6 endmclear_screen macro op1,op2,op3,op4 ;本段程序主要是通過定義變量和調(diào)用實(shí)現(xiàn)清屏宏定義 mov ah,06h mov al,00h mov bh,07h mov ch,o

13、p1 mov cl,op2 mov dh,op3 mov dl,op4 int 10h mov ah,02h mov bh,00h mov dh,00h mov dl,00h int 10hendmmenu macro op1,op2,op3 ; 本段程序主要是通過定義變量和調(diào)用來實(shí)現(xiàn)菜單顯示宏定義 mov ah,02h mov bh,00h mov dh,op1 mov dl,op2 int 10h mov ah,09h lea dx,op3 int 21hendmdata segment ZK db "WELCOME TO PLAY$" no db "date

14、:2010-12-31$"meg db "press Enter key to continue.$"meg1 db "when a letter is dropping,please hit it!$"meg2 db "press space key to pause!$"meg3 db "press ESC key to return main interface!$"meg4 db "press letter 'E' to exit!$"speed dw 600d

15、letters db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda"letters_bak db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda"letter_counter db 0 life_flag

16、db 78 dup(0)position_flag db 78 dup(0) present_position db 1 data ends;本段主要用于主界面的顯示,起到提示作用stack segment para stack 'stack' db 64 dup(0)stack endscode segment main proc far assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov letter_counter,00h mov present_position,1 lea si,positi

17、on_flag mov ah,00h mov cx,00hinit_postion_flag: mov si,ah inc si inc cx cmp cx,78d jne init_postion_flag lea di,letters lea si,letters_bak mov cx,00hinit_letters: mov ah,si mov di,ah inc si inc di inc cx cmp cx,78d jne init_letters mov ah,00h lea si,life_flag mov cx,00hinit_life_flag: mov si,ah inc

18、si inc cx cmp cx,78d jne init_life_flag mov cx,00h mov ah,01h or ch,00010000b int 10hclear_screen 00d,00d,24d,79d Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2 Init_game 00d,00d,0ah,dh,25d,nextsign3 Init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ; 本段程序主要是對菜單信息

19、的宏調(diào)用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4put: mov ah,02h ;此段用來設(shè)置光標(biāo)位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;通過本段代碼,能夠從鍵盤輸入任意字符 int 21h cmp al,0dh je speed3 cmp al,45h je exit exit: mov ah,4ch int 21h speed3: mov ax,spe

20、ed+12 mov speed,ax jmp begin begin: clear_screen 01d,01d,23d,78d ;第二次使用清屏宏調(diào)用 clear_screen 01d,01d,23d,78d Init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,lettersnextletter: mov ah,02h ;用來示字母 mov dl,si int 21h inc si inc cx cmp cx,78d je ne

21、xtcycle jmp extletterfrom_front: sub present_position,78d jmp gobackto_sifind_zero: cmp letter_counter,78d je recycle cmp present_position,78d je from_one mov ah,00h nextsi: add present_position,01h inc si cmp si,ah je gobackto_di cmp present_position,78d je from_one jmp nextsifrom_one:mov present_p

22、osition,01h jmp gobackto_si recycle:mov letter_counter,00h mov present_position,01d lea si,position_flag mov cx,00h mov ah,00hclearsi: mov si,ah inc cx cmp cx,78d je nextcycle inc si jmp clearsinextcycle: lea di,letters lea si,position_flag add present_position,31d cmp present_position,78 ja from_fr

23、ontgobackto_si: add si,word ptr present_position dec si mov ah,si cmp ah,01h je find_zerogobackto_di: mov ah,01h mov si,ah add di,word ptr present_position dec di mov dl,present_position mov ah,02h mov bh,00h mov dh,01h int 10h mov cx,00hnextrow: push cx mov cx,00hout_cycle: ;時間的延遲 push cx mov cx,00

24、hin_cycle: add cx,01h cmp cx,1000 jne in_cycle push dx mov ah,06h ;從鍵盤輸入字符 mov dl,0ffh int 21h pop dx jz pass cmp al,1bh ;如果鍵入ESC,則返回主菜單 je to_start1 cmp al," " ;如果鍵入SPACE,則游戲暫停 je pause cmp al,di ;輸入字母正確!則字母消失 je disappearpass: pop cx inc cx cmp cx,speed je print jmp out_cyclepause: push

25、dx ;用來暫停處理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al," " jne pause jmp passto_start1: ;用于返回主菜單 jmp startprint: mov ah,0ah ;在當(dāng)前光標(biāo)位置寫空格 mov al," " mov bh,00h mov cx,01h int 10h inc dh mov ah,02h ;用來改變光標(biāo)位置 mov bh,00h int 10h mov ah,0ah ;在當(dāng)前光標(biāo)位置寫字母 mov al,di mov bh,00h mov cx,01h

26、int 10h pop cx inc cx cmp cx,21d je print_next_letter jmp nextrow ;下一行disappear: ;擊中字母后輸出空格 pop cx pop cx mov ah,0ah mov al," " mov bh,00h mov cx,01h int 10h jmp hit print_next_letter: lea si,life_flag add si,word ptr present_position dec si mov ah,0ah mov al," " mov bh,00h mov c

27、x,01h int 10h inc dh mov ah,02h mov bh,00h int 10h mov ah,0ah mov al," " mov bh,00h mov cx,01h int 10h mov ah,1 mov si,ah hit: mov ah,02h mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,di ; 出現(xiàn)下一個新字母的數(shù)法 add al,7 cmp al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int

28、10h mov di,al add letter_counter,01h jmp nextcycle convey_letter: sub al,7ah add al,61h mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycle clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,20d int 10h inc dh inc dh mov ah,02h mov bh,00h int 10hnotk

29、ey: mov ah,07h int 21h cmp al,0dh je to_start cmp al,1bh je over jmp notkeyto_start: clear_screen 00,00,24,79 jmp startover: clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,15h int 10h mov ah,02h mov bh,00h mov dh,13d mov dl,15h int 10h mov ah,07h int 21h mov ah,07h int 21h clear_screen 00,00,24,79 mov ax,4c00h int 21hmain endpcode endsend start ;程序結(jié)束4 程序調(diào)試運(yùn)行41調(diào)試階段(1)打開windows命令窗口,進(jìn)入masm程序的安裝目錄,匯編源文件,如圖:圖 文件鏈接圖(2)鏈接原文件,并運(yùn)行可執(zhí)行文件,如下圖:圖 運(yùn)行可執(zhí)行文件圖(3)進(jìn)入主程序段顯示提示信息,程序功能應(yīng)該實(shí)現(xiàn)下圖所示:圖 程序主界面圖42運(yùn)行階段(1)按回車鍵進(jìn)入打字練習(xí)頁面,并且開始練習(xí)打字,如下圖:圖 打字主界面圖(2)在打字

溫馨提示

  • 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

提交評論