匯編大賽終極版_第1頁(yè)
匯編大賽終極版_第2頁(yè)
匯編大賽終極版_第3頁(yè)
匯編大賽終極版_第4頁(yè)
匯編大賽終極版_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西安郵電大學(xué)匯編語(yǔ)言程序設(shè)計(jì)競(jìng)賽報(bào)告專業(yè)班級(jí) 科技1201班,科技1203班學(xué)生姓名 左陽(yáng) 巨振奇 孫育蘋(píng)學(xué)號(hào) 時(shí)間2014年10月31號(hào)-2014年11月25號(hào) 一、設(shè)計(jì)題目 樂(lè)曲隨時(shí)間的播放二、設(shè)計(jì)內(nèi)容 我們參加了匯編語(yǔ)言大賽,在具體的日期和時(shí)間里,設(shè)計(jì)了3首樂(lè)曲,隨著樂(lè)曲的進(jìn)行,計(jì)時(shí)了每一首演奏的時(shí)間。樂(lè)曲1:<<歌聲與微笑>,2:<<天空之城>>,3:<<草原上升起不落的太陽(yáng)>>。三、 需求分析 利用DOS功能的硬中斷,以實(shí)現(xiàn)日期,時(shí)間,樂(lè)曲播放,計(jì)時(shí)曲長(zhǎng)等功能的調(diào)用。最終將運(yùn)行結(jié)果顯示在屏幕上。按1、2、3依次播放樂(lè)曲

2、,按Q退出。當(dāng)暫停任意一首樂(lè)曲時(shí),按Enter;按其它鍵返回主界面。在運(yùn)行這些程序時(shí),日期和時(shí)間與系統(tǒng)保持一致。若輸入大寫(xiě)字母Q,則退出當(dāng)前狀態(tài)。輸入其他則顯示錯(cuò)誤。如右圖所示: 運(yùn)行環(huán)境:DOSBOX.四、 概要設(shè)計(jì) 1、模塊功能說(shuō)明(1)利用DOS的AH和2CH號(hào)系統(tǒng)功能調(diào)用,將計(jì)算機(jī)系統(tǒng)的時(shí)參(BCD碼送入寄存器。其中CH和CL中保存的是小時(shí)數(shù)和分鐘數(shù)DH中是秒鐘數(shù),CX中保存的是年DL中保存DE的是H,將BCD碼表示的時(shí),分,秒,H,年轉(zhuǎn)換成ASCIl碼并送入字符串并顯示在屏幕上。此程序完成顯示系統(tǒng)的當(dāng)前日期和時(shí)間的功能。 (2)計(jì)算機(jī)中有一個(gè)可編程時(shí)間間隔定時(shí)器8253/54,它能根

3、據(jù)程序提供的計(jì)數(shù)值和工作模式,產(chǎn)生各種計(jì)數(shù)/定時(shí)脈沖,提供給系統(tǒng)的各個(gè)部分使用。先要設(shè)定控制字,以選擇計(jì)數(shù)器,確定工作模式和計(jì)數(shù)的值。要實(shí)現(xiàn)樂(lè)曲的演奏,可通過(guò)調(diào)用發(fā)生程序來(lái)達(dá)到輸出音樂(lè)的效果。在程序中,可以設(shè)定兩個(gè)變量分別用來(lái)存儲(chǔ)音符的頻率值和持續(xù)的時(shí)間,得到兩者的關(guān)系后,定義數(shù)據(jù)表,然后編寫(xiě)程序依次取出其值,調(diào)用程序依次發(fā)聲。 (3)音樂(lè)計(jì)時(shí)器利用1CH中斷,每秒中斷約18次,從而進(jìn)行計(jì)時(shí)。 2、總方案設(shè)計(jì) 開(kāi)始 修改ICH中斷地址開(kāi)定時(shí)器中斷清屏,主界面顯示鍵入字符錯(cuò)誤按鍵提示 Q 其它鍵 1/2/3清屏 , 音樂(lè)界面顯示 播放音樂(lè) 音樂(lè)結(jié)束 按任意鍵恢復(fù)1CH地址結(jié)束五、 詳細(xì)設(shè)計(jì)及運(yùn)行

4、結(jié)果1主程序流程圖:音樂(lè)播放程序:開(kāi)始取對(duì)應(yīng)音樂(lè)的頻率時(shí)延由頻率判斷音樂(lè)是否結(jié)束 N頻率時(shí)延地址自加2,調(diào)用發(fā)聲程序 Y判斷有無(wú)按鍵 N Y判斷是否回車(chē) N Y結(jié)束2.Music子程序流程圖:開(kāi)始 寄存器入棧由頻率時(shí)延發(fā)聲那個(gè)寄存器出棧結(jié)束1、 根據(jù)音節(jié)表和簡(jiǎn)譜為演奏的樂(lè)曲定義一個(gè)頻率表 MUF和一個(gè)時(shí)間表MUD。2、 分別將兩個(gè)表的偏移地址放入SI和BP3、從表中取出音符的頻率放入DI,取出音符的持續(xù)時(shí)間(實(shí)際上是10ms的倍數(shù))放入寄存器。頻率表中最后一個(gè)數(shù)據(jù)-1作為樂(lè)曲的結(jié)束符。4、 調(diào)用通用發(fā)聲子程序SOUNDF發(fā)出音符。該算法的整體思路是在這個(gè)設(shè)計(jì)中用到了BEEP通用發(fā)聲程序,我們利

5、用對(duì)BEEP程序的修改讓它產(chǎn)生任何一種頻率的聲音,也可以讓聲音的持續(xù)時(shí)間更容易被調(diào)整 在編譯的過(guò)程中,用到了子程序調(diào)用,分別根據(jù)輸入調(diào)用music1,music2,music3程序還要調(diào)用子程序sound發(fā)出音調(diào),主要特點(diǎn)是程序簡(jiǎn)單明了,有良好的交互界面。程序的主要功能是給用戶提供三首已經(jīng)寫(xiě)好的短曲,根據(jù)用戶的選擇演奏樂(lè)曲,演奏完一首樂(lè)曲后跳回起始狀態(tài),如此循環(huán),直到用戶輸入結(jié)束的信息為止。本程序設(shè)計(jì)過(guò)程的整體設(shè)計(jì)思路是通過(guò)定義數(shù)據(jù)段,堆棧段和代碼段實(shí)現(xiàn)程序的各種要求。其中堆棧段是為樂(lè)曲的音調(diào)及頻率的數(shù)據(jù)分配空間;數(shù)據(jù)段是記錄程序運(yùn)行過(guò)程中所需的信息,包括字符信息,單調(diào)數(shù)據(jù),音頻數(shù)據(jù);代碼段則

6、是程序算法部分, 通過(guò)對(duì)各數(shù)據(jù)的調(diào)用,實(shí)現(xiàn)音樂(lè)演奏功能。5此子程序的主要功能:給用戶提供三首已經(jīng)寫(xiě)好的短曲,根據(jù)用戶的選擇演奏樂(lè)曲,演奏完一首樂(lè)曲后按任意鍵跳回主界面,如此循環(huán),直到用戶輸入結(jié)束的信息為止。6、本程序通過(guò)Intel匯編語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的音樂(lè)。程序中提供一個(gè)音樂(lè)菜單,用鍵盤(pán)數(shù)字鍵選擇相應(yīng)的音樂(lè)后,便開(kāi)始播放原先編制好的音樂(lè)。演奏音樂(lè)程序: 編寫(xiě)用鍵盤(pán)選擇計(jì)算機(jī)演奏樂(lè)曲的程序,要求程序運(yùn)行首先在屏幕上顯示出樂(lè)曲菜單.如: 1.歌聲與笑臉 2.天空之城 3.草原上升起不落的太陽(yáng)鍵盤(pán)輸入各音樂(lè)對(duì)應(yīng)的數(shù)字,便可播放音樂(lè)。按Enter,則退出。輸入除1到3以外的數(shù)字,提示輸入出錯(cuò),提示再

7、次輸入。播放完音樂(lè),再次提供樂(lè)曲清單??稍俅芜x擇樂(lè)曲。 程序設(shè)計(jì)主要代碼:;數(shù)據(jù)段DATASEGMENT FACE0DB 0AH,0DH,28 DUP(' '),"MUSIC PLAYER"DB 0AH,0DHDB 0AH,0DH,28 DUP(' ')," 1:Song ang smile."DB 0AH,0DH,28 DUP(' ')," 2:The castle in the sky."DB 0AH,0DH,28 DUP(' ')," 3:The rasi

8、ng sun on grassland."DB 0AH,0DHDB 0AH,0DH,28 DUP(' ')," Q:EXIT_$"FACE10 DB 0AH,0DH,28 DUP(' ')," SONG AND SMILE$"FACE20 DB 0AH,0DH,24 DUP(' ')," THE CASTLE IN THE SKY$"FACE30 DB 0AH,0DH,22 DUP(' ')," THE RAISING SUN ON GRASSLAND

9、$"ETIP DB 0AH,0DH,25 DUP(' '),"ERROR.Please try again!$MUF_11 DW 294,294,349,392,440,523,588,294,349,392,440,392,392 DW 392,440,523,523,523,588,440 DW 294,294,349,349,440,523,588,294,349,392,440 DW 392,392,392,440,523,523,262,294,294,349,349,440,523,588 DW 660,698,698,698,698,588,6

10、60,698,698,698,698,698,588,660 DW 698,784,784,784,784,698,784,660,523,588,523,588,660,588 DW 660,698,698,698,698,588,330,698,698,698,698,698,588,660 DW 698,784,784,784,698,660,523,660,588,-1MUD_12 DW 19,19,38,38,13,13,13,13,100,19,19,19,19,19,19,19,19,150 DW 19,19,19,19,38,38,13,13,13,13,100,15,15,1

11、5,15,30,30,30 DW 38,38,13,13,13,13,13,13,19,19,19,19,19,19,38,19,19,19 DW 19,19,19,38,25,25,25,25,25,25,38,38,13,13,13,13,13,13 DW 19,19,19,19,19,19,38,19,19,19,19,19,19,38,19,19,19,19 DW 38,19,19,150MUF_21 DW 440,494,523,494,523,660,494,440,392,330,349,392440,392, DW 440,523,392,330,262,262,262,294

12、,330,349,330,349,523,330 DW 294,330,523,523,588,494,349,349,494, DW 494,100,440,494,523,494,523,660,494,440,392 DW 330,349,392,440,392,440,523,392,330,262,262,294,330 DW 698,262,494,494,523,588,588,660,262,100,523,494 DW 440,440,494,392,440,100,523,588,660,588,660,780 DW 588,100,392,392,523,494,523,

13、660,660,100,100,880,494,523,494DW 523,588,523,392,392,100,698,660,588,523,494,523,588,494 DW 392,784,688,660,660,880,784,784,660,588,528,100,523 DW 588,523,588,588,784,660,100,660,880,784,784,660 DW 588,523,100,523,588,523,588,588,494,440,100,880,494,-1 MUD_22DW 50,50,25,25,25,25,17,17,17,17,17,17,2

14、5,25,25,25DW 33,33,33,33,33,33,50,50,50,50,33,33,33,33,33,33 DW 25,25,25,25,33,33,17,17,25,25,25,25,17,17,17DW 33,33,33,50,50,50,50,33,33,33,33,33,33 DW 33,17,17,17,17,17,11,11,11,33,33,20,20 DW 10,10,20,20,33,33,16,17,25,25,25,25 DW 33,33,16,17,25,25,25,25,33,33,33,13,13,25,25 DW 12,12,25,25,25,25,

15、25,25,25,25,13,12,12,12 DW 25,12,12,50,50,33,33,33,12,12,33,12,13 DW 25,12,12,25,25,33,33,33,33,33,33 DW 12,12,33,12,12,25,12,12,25,25,33,33,12,12 MUF_31 DW 3DUP(220),294,330,330,294,262,220,294,262,294,330,392DW 330,440,330,262,294,330,440,330,294,262,165,196,220DW 196,220,294,330,262,220,-1MUD_32D

16、W 25,13,12,38,12,25,13,12,50,25,13,12,25,13,12,100,25,13DW 12,38,12,25,13,12,25,25,25,13,12,25,13,12DW 100MFLAGDB '0' ;音樂(lè)的播放標(biāo)志ADDRSEDW 0,0;音樂(lè)的頻率和延時(shí)的地址DATA ENDS發(fā)生程序:SOUNDPLAY PROCFARPUSHAX;現(xiàn)場(chǎng)保護(hù) PUSHBXPUSHCXPUSHDXPUSHDI;MOVAL,0B6H;發(fā)伴奏聲模塊OUT43H,ALMOVDX,12HMOVAX,533H*896DIVDIOUT42H,ALMOVAL,AHOUT

17、42H,ALINAL,61HMOVAH,ALORAL,3OUT61H,ALWAIT1:MOVCX,8FF0H;延時(shí)msDELAY1:LOOPDELAY1DECBXJNZWAIT1MOVAL,AHOUT61H,ALPOPDI;恢復(fù)現(xiàn)場(chǎng)POPDXPOPCXPOPBXPOPAX;RETSOUNDPLAY ENDP3.硬中斷:1CH1CH硬中斷程序:日期,時(shí)間和音樂(lè)計(jì)時(shí)。1、 主程序流程圖:開(kāi)始存儲(chǔ)器入棧取本地日期將本地日期存入字符串 顯示日期取本地時(shí)間將本地時(shí)間存入字符串顯示時(shí)間判斷音樂(lè)是否開(kāi)始 NY音樂(lè)開(kāi)始計(jì)時(shí)時(shí)顯示計(jì)時(shí) 寄存器出棧 2、 當(dāng)用戶輸入字符后系統(tǒng)對(duì)用戶輸入的字符進(jìn)行判斷,利用分支程序

18、分別調(diào)用兩個(gè)子程序。兩個(gè)子程序的功能分別是顯示日期(用2AH功能調(diào)用來(lái)取日期),顯示當(dāng)前時(shí)間(用2CH的DOS功能調(diào)用來(lái)取時(shí)間)。必須用到的DOS功能調(diào)用:取當(dāng)前系統(tǒng)日期:功能號(hào)為2AH,返回值送入CX,DX寄存器中。取當(dāng)前系統(tǒng)時(shí)間:功能號(hào)為2CH,返回值送入CX,DX寄存器中。3、程序設(shè)計(jì)主要代碼MOV AH,2AH ;取當(dāng)前系統(tǒng)日期 INT 21HMOV AX,CX ; 將本地日期存入日期字符串 MOV BX,10 LEA SI,DATE+3 ;si指向年份的最后一位 MOV CX,4 PUSH DX ; 堆棧保存月日YEAR:XOR DX,DX DIV BX ;(dx,ax)/bx;,商

19、送ax,余數(shù)送dx ADD DL,30H MOV SI,DL DEC SI LOOP YEAR LEA SI,DATE ADD SI,9 MOV CX,2POP AX PUSH AX MOV AH,0DAY:XOR DX,DX DIV BX ADD DL,30H MOV SI,DL DEC SI LOOP DAY LEA SI,DATE ADD SI,6 MOV CX,2POP AX MOV AL,AHMOV AH,0MONTH:XOR DX,DX DIV BX ADD DL,30H MOV SI,DL DEC SI LOOP MONTH; MOV AH,2CH ;取當(dāng)前本地時(shí)間 INT 21

20、H MOV DX,CX MOV DH,0 ;minute PUSH DX MOV CL,CH MOV CH,0;hour PUSH CX MOV BX,10;將本地時(shí)間存入時(shí)間字符串 LEA SI,TIME ADD SI,1 MOV CX,2 POP AXHOUR:XOR DX,DX DIV BX ;(dx,ax)/bx;,商送ax,余數(shù)送dx ADD DL,30H MOV SI,DL DEC SI LOOP HOUR LEA SI,TIME ADD SI,4 MOV CX,2 POP AXMINUTE: XOR DX,DX DIV BX ADD DL,30H MOV SI,DL DEC SI LOOP MINUTEMOV BH,0;MOV DX,1746H;顯示日期和時(shí)間MOV AH,2INT 10HMOV DX,OFFSET DATEMOV AH,09HINT 21HMOV BH,0MOV DX,1648HMOV AH,2INT 10HMOV DX,OFFSET TIMEMOV AH,09HINT21H 程序調(diào)試結(jié)果圖:主界面:音樂(lè)播放:鍵錯(cuò)提示:六、 調(diào)試情況,設(shè)計(jì)技巧及

溫馨提示

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