匯編程序課程設(shè)計(jì)報(bào)告樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)-武漢理工_第1頁
匯編程序課程設(shè)計(jì)報(bào)告樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)-武漢理工_第2頁
匯編程序課程設(shè)計(jì)報(bào)告樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)-武漢理工_第3頁
匯編程序課程設(shè)計(jì)報(bào)告樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)-武漢理工_第4頁
匯編程序課程設(shè)計(jì)報(bào)告樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)-武漢理工_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)ibm-pc匯編語言程序設(shè)計(jì)課程設(shè)計(jì)學(xué) 號: 課 程 設(shè) 計(jì)題 目樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)班 級姓 名指導(dǎo)教師2010年1月15日課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 專業(yè)班級:計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)教師: 工作單位:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 題目: 樂曲程序的設(shè)計(jì)與實(shí)現(xiàn)初始條件:理論:完成了匯編語言程序設(shè)計(jì)課程,對微機(jī)系統(tǒng)結(jié)構(gòu)和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設(shè)計(jì)的基本方法和技巧。實(shí)踐:完成了匯編語言程序設(shè)計(jì)的4個(gè)實(shí)驗(yàn),熟悉了匯編語言程序的設(shè)計(jì)環(huán)境并掌握了匯編語言程序的調(diào)試方法。要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技

2、術(shù)要求,以及說明書撰寫等具體要求)進(jìn)一步理解和掌握程序直接控制i/o方式,掌握計(jì)算機(jī)發(fā)聲程序的設(shè)計(jì)。具體的設(shè)計(jì)任務(wù)及要求:1采用位觸發(fā)方式編寫程序,使計(jì)算機(jī)發(fā)出音響并奏出兩只老虎的樂曲。1) 通過查閱相關(guān)資料,進(jìn)一步理解程序直接控制i/o方式和位觸發(fā)方式控制聲音的工作原理。2) 一首樂曲是由不同頻率和節(jié)拍的音調(diào)組成,因此控制脈沖的頻率和持續(xù)時(shí)間是編寫樂曲程序的關(guān)鍵。根據(jù)已知的音符頻率對照表,給出樂曲的頻率表;設(shè)二分音符持續(xù)時(shí)間為0.5秒(50*10ms),50作為2拍的計(jì)數(shù)值,給出樂曲的節(jié)拍時(shí)間表;3) 編寫程序并調(diào)試通過。2進(jìn)一步學(xué)習(xí)利用定時(shí)器產(chǎn)生聲音的方法,使計(jì)算機(jī)奏出樂曲(例如兩只老虎等

3、)。在完成設(shè)計(jì)任務(wù)后,按要求撰寫課程設(shè)計(jì)說明書;對課程設(shè)計(jì)說明書的具體要求請見課程設(shè)計(jì)指導(dǎo)書。閱讀資料:1)ibmpc匯編語言程序設(shè)計(jì)實(shí)驗(yàn)教程3.1節(jié)2)ibmpc匯編語言程序設(shè)計(jì)(第2版)10.4節(jié),10.5節(jié)時(shí)間安排:設(shè)計(jì)安排一周:周1、周2:完成系統(tǒng)分析及設(shè)計(jì)。周3、周4:完成程序調(diào)試,和驗(yàn)收。周5:撰寫課程設(shè)計(jì)報(bào)告。指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日1設(shè)計(jì)內(nèi)容及要求1.1.采用位觸發(fā)方式編寫程序,使計(jì)算機(jī)發(fā)出音響并奏出兩只老虎的樂曲。1.2.根據(jù)已知的音符頻率對照表,給出樂曲的頻率表。1.3.設(shè)二分音符持續(xù)時(shí)間為0.5秒(50*10ms),50作為2拍的計(jì)

4、數(shù)值,給出樂曲的節(jié)拍時(shí)間表。2設(shè)計(jì)中使用的關(guān)鍵技術(shù)和方法2.1.在8253/54定時(shí)器內(nèi)部有3個(gè)獨(dú)立工作的計(jì)數(shù)器:count0,count1,count2,端口地址分別為40h、41h和42h。其中count2用來控制發(fā)聲器發(fā)聲。設(shè)裝入計(jì)數(shù)器2的計(jì)數(shù)器初值為x則ibm中的beep子程序能在mode3下產(chǎn)生頻率為1.19318mhz/x的聲音。8253/54內(nèi)部還有一個(gè)公用的控制寄存器,端口地址為43h。三個(gè)計(jì)數(shù)器是分別編程的,對任一個(gè)計(jì)數(shù)器編程時(shí),首先將控制字節(jié)寫入寇埴寄存器??刂谱止?jié)各位含義如下:sc1sc0rl1rl0m2m1m0bcd 0 二進(jìn)制 00 計(jì)數(shù)器鎖存操作 1 bcd碼 01

5、 只讀/寫 lsb 10 只讀/寫 msb 000 mode0 11 讀/寫lsb,msb 001 mode1 x10 mode2 x11 mode300 選擇count0 100 mode4 01 選擇count1 101 mode5 10 選擇count2 11 無效其次,向count2送入一個(gè)計(jì)數(shù)初值,指定發(fā)聲頻率。2.2.揚(yáng)聲器驅(qū)動(dòng)方式7 6 5 4 3 2 1 061h count2clk2 out2gate2&pb1pb01.193mhzvcc如圖所示,gate2與端口61h的pb0相連,當(dāng)pb0=1時(shí),gate2獲得高電平,使定時(shí)器可以在mode3下工作。定時(shí)器的out2與端口6

6、1h的pb1通過一個(gè)與門與揚(yáng)聲器的驅(qū)動(dòng)電路相連。當(dāng)pb1=1時(shí),允許out2的輸出信號到達(dá)揚(yáng)聲器電路。2.380x86 pc的時(shí)間延遲ibm采用了一種利用硬件產(chǎn)生時(shí)間延遲的方法,即通過監(jiān)控端口61h的pb4每15.08s觸發(fā)一次,以產(chǎn)生一個(gè)固定不變的時(shí)間基準(zhǔn)。2.4.樂曲程序樂曲是按照一定的高低、長短和強(qiáng)弱關(guān)系組成的已調(diào),每個(gè)音符的音高和音長與頻率和節(jié)拍有關(guān)。音高與頻率如下表1234567123456711311471651751962202472622943303493924404945233設(shè)計(jì)方案說明3.1.程序結(jié)構(gòu)及各功能模塊說明主程序music將音符的頻率送入di寄存器,將音符的持續(xù)

7、時(shí)長送入bx;然后調(diào)用soundf子程序。soundf子程序用di中的數(shù)據(jù)去除12348h的到商送入42h,使其產(chǎn)生制定頻率的信號;然后置61h的pb0,pb1為11,使揚(yáng)聲器發(fā)出相應(yīng)的聲音;根據(jù)bx中的數(shù)據(jù)重復(fù)調(diào)用waitf子程序,是揚(yáng)聲器發(fā)聲得以延續(xù);最后恢復(fù)61h的初始設(shè)置。waitf子程序中,根據(jù)cx中的數(shù)據(jù)產(chǎn)生固定的延時(shí)。3.2算法流程圖見下頁初始化si-didi=-1?ds:bp-bxcall soundfsi=si+2bp=bp+2結(jié)束music主程序begin12348/di-axax-42h保存61h端口設(shè)置打開揚(yáng)聲器663-cxcall waitfbx=bx-1bx=0?恢

8、復(fù)61h端口設(shè)置endsoundf子程序beginpb4=1?cx=cx-1cx=0?endwaitf子程序nnyyynyn3.4數(shù)據(jù)結(jié)構(gòu)的定義和說明dseg segmentfreq dw 2 dup(262,292,330,262) dw 2 dup(330,349,392) dw 2 dup(392,440,392,349,330,262) dw 2 dup(262,330,262) dw -1time dw 8 dup(40) dw 2 dup(40,40,80) dw 2 dup(30,10,30,10,40,40) dw 2 dup(40,40,50)dseg ends其中freq是

9、音符頻率表的首地址,time是音符的持續(xù)時(shí)長表首地址。4測試及評估在如下平臺(tái)測試程序:計(jì)算機(jī): 計(jì)算機(jī)類型 acpi multiprocessor pc 操作系統(tǒng) microsoft windows xp professional 操作系統(tǒng)版本升級(sp) service pack 3 directx 4.09.00.0904 (directx 9.0c) 日期/時(shí)間 2010-01-14 / 17:31 主板: cpu 類型 dualcore amd athlon 64 x2, 2800 mhz (14 x 200) 5400+ 主板名稱 colorful c.a770 v1.5 主板芯片組

10、 amd 770, amd hammer 系統(tǒng)內(nèi)存 2048 mb (ddr2-800 ddr2 sdram) bios 類型 ami (08/28/08) 通訊端口 通訊端口 (com1) 通訊端口 打印機(jī)端口 (lpt1)當(dāng)在cx中存放663時(shí),音符延續(xù)時(shí)間很短以致辨別不清,初步斷定問題在于硬件,將cx中的數(shù)值增大至8000后,扥到記過符合預(yù)期5設(shè)計(jì)心得5.1在soundf子程序中曾對ax,bx,cx,dx,di進(jìn)行了進(jìn)站出站操作,經(jīng)過仔細(xì)分析,這些操作是沒用用的,刪除了這些操作,簡化了程序。5.2對該程序進(jìn)一步改進(jìn)擴(kuò)展的設(shè)想音符和頻率之間有一定的對應(yīng)關(guān)系,如果計(jì)算機(jī)鍵盤上的一些鍵和音符、

11、頻率也形成一種對應(yīng)關(guān)系,則可通過鍵盤控制揚(yáng)聲器發(fā)出各種音符聲音,這時(shí)計(jì)算機(jī)鍵盤就變成了鋼琴鍵盤,就可以用他彈奏出簡單的樂曲了。六參考文獻(xiàn) 大眾樂譜網(wǎng)ibmpc匯編語言程序設(shè)計(jì)實(shí)驗(yàn)教程3.1節(jié) 沈美明 溫冬禪 編著ibmpc匯編語言程序設(shè)計(jì)(第2版)10.4節(jié),10.5節(jié) 沈美明 溫冬禪 編著七附錄:源程序清單dseg segmentfreq dw 2 dup(262,292,330,262) dw 2 dup(330,349,392) dw 2 dup(392,440,392,349,330,262) dw 2 dup(262,330,262) dw -1time dw 8 dup(40) d

12、w 2 dup(40,40,80) dw 2 dup(30,10,30,10,40,40) dw 2 dup(40,40,50)dseg endscseg segmentassume cs:cseg,ds:dsegmusic proc farmov ax,dsegmov ds,axlea si,freqlea bp,ds:timelable1:mov di,sicmp di,-1je lable2mov bx,ds:bpcall soundfadd si,2add bp,2jmp lable1lable2:mov ax,4c00hint 21hmusic endpsoundf proc farmov al,0b6hout 43h,almov dx,12hmov ax,348chdiv diout 42h,almov al,ahout 42h,alin al,61hmov ah,alor al,3out 61h,aldelay: mov cx,8000 call waitf dec bx jnz delay mov al,ah out 61h,al retsoundf endp waitf proc nearpush axwaitf1:in al,61hand al,10hcmp al,ahje waitf1mov ah,alloop waitf1pop axretwaitf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論