字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)1總體方案論證1.1題目功能分析(1)屏幕提示輸入字符串;(2)輸入完成后,字符動(dòng)畫顯示,顯示方式可為:從無(wú)到有,從左到右,從上到下,大小寫變化、顏色變化等;(3)可連續(xù)顯示或定時(shí)顯示,直至單擊“Q”或“q”鍵退出程序。1.2算法說明(1)屏幕提示輸入字符串主要運(yùn)用中斷INT 21H的0A H功能;(2)在確定光標(biāo)位置后,通過循環(huán)改變其行列數(shù)值來達(dá)到左右上下移動(dòng)功能; 大小寫變化則通過將輸入字符與a和z比較,若為小寫字母,則減去20H,否 則不變; 顏色變化則通過INT 10H的09H功能循環(huán)調(diào)用實(shí)現(xiàn);(3)退出功能通過將輸入Q和q

2、與其ASC比較,跳轉(zhuǎn)到退出程序;而退出程序主 要通過INT 21H的4C H功能實(shí)現(xiàn)。 2流程圖設(shè)計(jì)及說明2.1主程序流程圖設(shè)計(jì)字符串右移結(jié)束開始 段地址初始化 進(jìn)入Dos窗口輸出提示信息輸入字符串顯示輸入字符串YN字符串向下移動(dòng)字符串小寫變大寫 三色變換閃爍按Q,q?圖2-1 主程序流程圖 圖2-1 字符串動(dòng)畫總流程圖2.2分布具體功能實(shí)現(xiàn)流程圖設(shè)計(jì)2.2.1字符串右移結(jié)束 輸完?獲取字符串YYN圖2-2 字符串右移流程圖開始 輸出字符串設(shè)置光標(biāo)起始位置延遲1輸出空白覆蓋字符串延遲2 結(jié)束?N橫坐標(biāo)更新2.2.2字符串下移結(jié)束 輸完?獲取字符串YYN圖2-3 字符串下移流程圖開始 輸出字符串

3、設(shè)置光標(biāo)起始位置延遲1輸出空白覆蓋字符串延遲2 結(jié)束?N縱坐標(biāo)更新2.2.3字符串閃爍結(jié)束Y圖2-4 字符串閃爍流程圖N獲取字符串開始N是否輸完?Y輸出字符串設(shè)置起始位置延遲1設(shè)置字符串顏色次數(shù)已到?3軟件設(shè)計(jì)關(guān)鍵問題或程序段落說明3.1提示輸入字符串顯示功能實(shí)現(xiàn) 屏幕提示輸入字符串主要運(yùn)用中斷INT 21H的0A H功能,輸入后回車則完成字符串在特定位置的顯示。另外,在此段程序中,還通過用空字符串的逐個(gè)顯示來完成字符從無(wú)到有的功能實(shí)現(xiàn)。 lea dx,buf mov ah,0ah int 21h mov bx,2 ;多字符輸入,回車結(jié)束,有效內(nèi)容自第三個(gè)始。 mov di,0B1: mov

4、al,bufbx cmp al,13 ;是否是回車? je AG1 mov buff1di,al inc bx inc di jmp B1AG1: mov ah,0 mov al,2 int 10h;黑白文本OTHER: mov cx,0ffffh;AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ;頁(yè)號(hào)為0 int 10h ;置光標(biāo)位置 lea dx,buff1 mov ah,9 int 21h ;顯示字符串 mov dh,7 mov dl,35 mov ah,2 mov bh,0 int 10h ;置光標(biāo)位置 lea dx,buff2

5、mov ah,9 int 21h; sub cx,1 ; jnz AG ;不等于轉(zhuǎn)移3.2向右、向下移動(dòng)功能實(shí)現(xiàn) 如流程圖可知,向下和向右移動(dòng),程序基本相同,只不過一個(gè)改變的是行,另一個(gè)改變的是列,以下以向右移動(dòng)為例。主要通過INT 10H 調(diào)用,且循環(huán)操作一定次數(shù)實(shí)現(xiàn)。其中,在下一次輸出時(shí),為了清除前一個(gè)位置的輸出,用空字符串替代。另外,通過延時(shí)控制移動(dòng)速度。程序如下: mov al,3 mov ah,0 int 10h ;16色文本 mov dl,0 ;字符串向右移動(dòng), 給出起始列bbb2: MOV SI,OFFSET buff1 mov di,0bbb1: mov dh,7 ;dh ha

6、ng dl lie inc dl mov ah,2 int 10h ;置光標(biāo)位置 2號(hào)置光標(biāo)位置 9號(hào)指定輸出,每次顯示一個(gè) mov ah,09 ;9號(hào)功能 inc di mov al,si inc si mov bh,0 ;顯示頁(yè) mov bl,0eh ;color mov cx,01 ;顯示字符的次數(shù) int 10h cmp di,0fh ; 立即數(shù)大小取決于字符串大小 jb bbb1 call delay1 sub dl,0fh ; 設(shè)置列 mov SI,OFFSET buff2 mov di,0ccc1: mov dh,7 ;dh hang dl lie inc dl mov ah,2

7、 int 10h ;置光標(biāo)位置 mov ah,09 ;9號(hào)功能 inc di mov al,si inc si mov bh,0 ;顯示頁(yè) mov bl,0eh ;color mov cx,01 ;字符重復(fù)一次 int 10h cmp di,0fh jb ccc1 call delay2 ; mov ah,07 ; int 21h 首先在一個(gè)位置輸出 然后輸出空白覆蓋掉在輸出下一個(gè)位置 cmp dl,25 jnb xiangxia ; 在這里跳出右移, 轉(zhuǎn)到向下 sub dl,0dh jmp bbb23.3字符串大小寫變化實(shí)現(xiàn) 因?yàn)樵贏SC表中大小寫相差20H,所以通過將輸入字符與a和z比較,

8、若為小寫字母,則減去20H,否則不變。程序如下:daxiaoxie: mov dl,7 mov dh,35 MOV SI,OFFSET buff1 mov di,0a1: mov al,SI cmp al,'$' je shansuo cmp al,'a' jb next cmp al,'z' ja next sub al,20h mov SI,alnext:inc SI jmp a13.4顏色變化功能實(shí)現(xiàn) 顏色變化功能實(shí)現(xiàn)相當(dāng)于對(duì)字符串屬性定義,表現(xiàn)出顏色差別,然后循環(huán)調(diào)用并插入延時(shí)。以下程序效果是三種顏色閃爍,其中aaa1表示黃色,aaa2表

9、示綠色,aaa3表示紅色。具體程序如下:shansuo: ;三種顏色閃爍 call aaa1 call delay1 call aaa2 call delay1 ;內(nèi)部轉(zhuǎn)換后 還是用BIOS 10h 9號(hào)功能調(diào)用 call aaa3 call delay1 jmp shansuo 3.5退出功能實(shí)現(xiàn) 退出功能通過將輸入Q和q與其ASC比較,跳轉(zhuǎn)到退出程序;而退出程序主要通過INT 21H的4C H功能實(shí)現(xiàn)。 mov ah,08h;q鍵退出 int 21H cmp AL,'Q' je exit cmp AL,'q'je exit exit: mov ah,4ch

10、int 21h 4調(diào)試說明、結(jié)果記錄及分析4.1調(diào)試說明 所謂程序調(diào)試,是將編制的程序投入實(shí)際運(yùn)行前,用手工或編譯程序等方法進(jìn)行測(cè)試,修正語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤的過程。這是保證計(jì)算機(jī)信息系統(tǒng)正確性的必不可少的步驟。編完計(jì)算機(jī)程序,必須送入計(jì)算機(jī)中測(cè)試。 調(diào)試過程中出現(xiàn)很多問題。很多次,程序更改后得不到目標(biāo)文件,主要原因是編程過程中不夠細(xì)心,而且沒有整體把握。例如,有段名重復(fù)的錯(cuò)誤,還有對(duì)調(diào)用不熟悉造成編程過程很痛苦。 4.2結(jié)果記錄與分析 4.2.1 提示輸入字符串 以下是在運(yùn)行程序后窗口出現(xiàn)的界面,提示輸入字符串以及按Q或q退出。如圖3.1: 圖3.1 提示輸入字符串4.2.2輸入后顯示字符串以

11、下是輸入字符串后按回車前顯示的界面。如圖3.2: 圖3.2 輸入字符串4.2.3在特定位置從無(wú)到有顯示 以下是按完回車鍵后依照程序設(shè)定位置,光標(biāo)先跳到第七行、第三十五列,然后逐個(gè)字符循環(huán)顯示字符串的界面對(duì)比。如圖3.3: 圖3.3 字符串從無(wú)到有4.2.4在特定位置向右移動(dòng) 以下是字符串從第七行、第零列開始右移的對(duì)比界面。如圖3.4: 圖3.4 字符串右移4.2.5在特定位置向下移動(dòng) 以下是字符串從第七行、第零列開始下移的對(duì)比界面。如圖3.5: 圖3.5 字符串下移4.2.6小寫變成大寫加閃爍 以下是字符串中所有小寫字母變成大寫后進(jìn)行黃、綠、紅依次變化現(xiàn)象對(duì)比界面。如圖3.6: 圖3.6 字符

12、串顏色變化5課程設(shè)計(jì)收獲及心得 學(xué)完微機(jī)原理與接口技術(shù),本以為自己學(xué)到的東西挺多,直到課程設(shè)計(jì)開始,才深刻了解到自己似乎只了解個(gè)皮毛。作為微原中的核心,匯編語(yǔ)言的程序設(shè)計(jì)在課程學(xué)習(xí)中只有一章,而且書本上的例題與這次課程設(shè)計(jì)任務(wù)相比,難度不大。 幾乎整整一周的微原課程設(shè)計(jì)結(jié)束,對(duì)于我,感受頗深,收獲頗多。除了一些以前學(xué)過的指令,最深的感觸是對(duì)中斷INT 21H和INT 10H中一些常用功能的運(yùn)用。經(jīng)過此次課程設(shè)計(jì),我通過自己查資料、自己設(shè)計(jì)編程到最后完成功能實(shí)現(xiàn),最終的成就感比平時(shí)更大,因?yàn)槲腋惺艿搅藢W(xué)以致用,將理論用于實(shí)際的效果。 在以后的學(xué)習(xí)中,我會(huì)繼續(xù)保持這樣良好的態(tài)度對(duì)待任何學(xué)習(xí),不論是

13、課程設(shè)計(jì)還是實(shí)習(xí),抑或只是平時(shí)課程學(xué)習(xí),我將為了提高自身實(shí)踐能力而有目的的學(xué)習(xí)與收獲,而不僅僅是為了應(yīng)付考試或者拿到學(xué)位證。6參考文獻(xiàn)1 彭虎等編著微機(jī)原理與接口技術(shù)(第二版)北京:電子工業(yè)出版社,20082 沈美明,溫東禪IBM-PC匯編語(yǔ)句程序設(shè)計(jì)(第2版)北京:清華大學(xué)出版社,20013 任向明,盧惠林匯編語(yǔ)言程序設(shè)計(jì)實(shí)用教程北京:清華大學(xué)出版社,20094 馬力妮80x86匯編語(yǔ)言程序設(shè)計(jì)北京:機(jī)械工業(yè)出版社,20045 艾德才Pentium系列微型計(jì)算機(jī)原理與接口技術(shù)北京:高等教育出版社,2000附錄:程序清單data segmentbuff1 db ' $' buf

14、f2 db ' $'buf db 100 dup('$')buff3 db 'please input a string !',13,10,'$'buff4 db 'Press Q or q to exit!',13,10,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax lea dx,buff3;顯示提示信息 mov ah,09h int 21h lea dx,buff4;顯示提示信息 mov ah

15、,09h int 21h lea dx,buf mov ah,0ah int 21h mov bx,2 ;多字符輸入,回車結(jié)束,有效內(nèi)容自第三個(gè)始。 mov di,0B1: mov al,bufbx cmp al,13 ;是否是回車? je AG1 mov buff1di,al inc bx inc di jmp B1AG1: mov ah,0 mov al,2 int 10h;黑白文本OTHER: mov cx,0ffffh;AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ;頁(yè)號(hào)為0 int 10h ;置光標(biāo)位置 lea dx,buff

16、1 mov ah,9 int 21h ;顯示字符串 mov dh,7 mov dl,35 mov ah,2 mov bh,0 int 10h ;置光標(biāo)位置 lea dx,buff2 mov ah,9 int 21h; sub cx,1 ; jnz AG ;不等于轉(zhuǎn)移;* mov al,3 mov ah,0 int 10h ;16色文本 mov dl,0 ;字符串向右移動(dòng), 給出起始列bbb2: MOV SI,OFFSET buff1 mov di,0bbb1: mov dh,7 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光標(biāo)位置 2號(hào)置光標(biāo)位置 9號(hào)指

17、定輸出,每次顯示一個(gè) mov ah,09 ;9號(hào)功能 inc di mov al,si inc si mov bh,0 ;顯示頁(yè) mov bl,0eh ;color mov cx,01 ;顯示字符的次數(shù) int 10h cmp di,0fh ; 立即數(shù)大小取決于字符串大小 jb bbb1 call delay1;* sub dl,0fh ; 設(shè)置列 MOV SI,OFFSET buff2 mov di,0ccc1: mov dh,7 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光標(biāo)位置 mov ah,09 ;9號(hào)功能 inc di mov al,si i

18、nc si mov bh,0 ;顯示頁(yè) mov bl,0eh ;color mov cx,01 ;字符重復(fù)一次 int 10h cmp di,0fh jb ccc1 call delay2 ; mov ah,07 ; int 21h 首先在一個(gè)位置輸出 然后輸出空白覆蓋掉在輸出下一個(gè)位置 cmp dl,25 jnb xiangxia ; 在這里跳出右移, 轉(zhuǎn)到向下 sub dl,0dh jmp bbb2xiangxia: ;字符串向下移動(dòng) mov dl,0 mov dh,7 ;dh hang dl lieddd2: MOV SI,OFFSET buff1 mov di,0eee1: inc d

19、l mov ah,2 int 10h ;置光標(biāo)位置 mov ah,09 ;9號(hào)功能 inc di mov al,si inc si mov bh,0 ;顯示頁(yè) mov bl,0ah ;color mov cx,01 ;字符重復(fù)一次 int 10h cmp di,0fh jb eee1 call delay1 sub dl,0fh ; 列回到原處,輸出空白覆蓋 MOV SI,OFFSET buff2 mov di,0fff1: inc dl mov ah,2 int 10h ;置光標(biāo)位置 mov ah,09 ;9號(hào)功能 inc di mov al,si inc si mov bh,0 ;顯示頁(yè)

20、mov bl,0eh ;color mov cx,01 ;字符重復(fù)一次 int 10h cmp di,0fh jb fff1 call delay2 cmp dh,13 ;從第7行 下移到13行 退出到大小寫轉(zhuǎn)換 jnb daxiaoxie inc dh sub dl,0fh jmp ddd2 ;字符串向下移動(dòng) 結(jié)束daxiaoxie: mov dl,7 mov dh,35 MOV SI,OFFSET buff1 mov di,0a1: mov al,SI cmp al,'$' je shansuo cmp al,'a' jb next cmp al,'

21、z' ja next sub al,20h mov SI,alnext:inc SI jmp a1shansuo: ;三種顏色閃爍 call aaa1 call delay1 call aaa2 call delay1 ;內(nèi)部轉(zhuǎn)換后 還是用BIOS 10h 9號(hào)功能調(diào)用 call aaa3 call delay1 MOV AH,08h;q鍵退出 INT 21H cmp AL,'Q' je exit cmp AL,'q' je exit jmp shansuo exit: mov ah,4ch int 21h ;*aaa1 proc near ;黃色 MO

22、V SI,OFFSET buff1 mov di,0 mov dl,20aa1: mov dh,20 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光標(biāo)位置 mov ah,09 ;9號(hào)功能 inc di mov al,si inc si mov bh,0 ;顯示頁(yè) mov bl,0eh ;color mov cx,01 ;字符重復(fù)一次 int 10h cmp di,0ch jb aa1 retaaa1 endp;*aaa2 proc near ;綠色MOV SI,OFFSET buff1mov di,0mov dl,20aa2: mov dh,20 ;dh

23、 hang dl lieinc dlmov ah,2int 10h ;置光標(biāo)位置mov ah,09 ;9號(hào)功能inc dimov al,siinc simov bh,0 ;顯示頁(yè)mov bl,0ah ;colormov cx,01 ;字符重復(fù)一次int 10hcmp di,0chjb aa2retaaa2 endp;*aaa3 proc near ;紅色MOV SI,OFFSET buff1mov di,0mov dl,20aa3: mov dh,20 ;dh hang dl lieinc dlmov ah,2int 10h ;置光標(biāo)位置mov ah,09 ;9號(hào)功能inc dimov al,

24、siinc simov bh,0 ;顯示頁(yè)mov bl,05h ;colormov cx,01 ;字符重復(fù)一次int 10hcmp di,0chjb aa3retaaa3 endp ;三種顏色閃爍;*delay1 proc nearpush cxpush bxmov bx,1fffhwait4: mov cx,0ffffhwait5: loop wait5dec bxjnz wait4pop bxpop cxretdelay1 endp; 延遲1 比延遲二長(zhǎng);*delay2 proc nearpush cxpush bxmov bx,0ffhwait2: mov cx,0ffffhwait3: loop wait3dec bxjnz wait2pop bxpop cxretdelay2 endp ;字符串向右移動(dòng)結(jié)束code endsend start本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表姓 名張丹性 別女專業(yè)、班級(jí) 自動(dòng)化專業(yè)、自動(dòng)化0805班課程設(shè)計(jì)題目:字符串動(dòng)畫顯示匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)答辯或質(zhì)疑記錄:成績(jī)?cè)u(píng)定依據(jù):詳見成績(jī)?cè)u(píng)分表最終評(píng)定成績(jī)(以

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論