微機(jī)原理課程設(shè)計(jì)-電子琴的設(shè)計(jì)_第1頁
微機(jī)原理課程設(shè)計(jì)-電子琴的設(shè)計(jì)_第2頁
微機(jī)原理課程設(shè)計(jì)-電子琴的設(shè)計(jì)_第3頁
微機(jī)原理課程設(shè)計(jì)-電子琴的設(shè)計(jì)_第4頁
微機(jī)原理課程設(shè)計(jì)-電子琴的設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-.z.課程設(shè)計(jì)任務(wù)書學(xué)生姓名:劉沛專業(yè)班級(jí):電氣0901指導(dǎo)教師:銳工作單位:自動(dòng)化學(xué)院題目:計(jì)算機(jī)電子琴軟件軟件設(shè)計(jì)初始條件:1.用于調(diào)試程序的IBM兼容PC機(jī)一臺(tái);2.安裝DOS/WIN98操作系統(tǒng)或運(yùn)行于DOS/WIN98兼容方式;3.EDIT等文本編輯器輸入80*86匯編程序,MASM5.0編譯及鏈接程序。要求完成的主要任務(wù):〔包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求〕1.使用匯編語言設(shè)計(jì)一個(gè)運(yùn)行于計(jì)算機(jī)的電子琴軟件,軟件應(yīng)實(shí)現(xiàn)彈奏功或演奏。其中彈奏:用戶每按一琴鍵彈奏相應(yīng)音符;演奏:按下*鍵后自動(dòng)彈奏預(yù)存琴譜功能;還可以附加變調(diào)、變速和記錄創(chuàng)作等其它功能。2.說明書撰寫格式應(yīng)符合"課程設(shè)計(jì)說明書統(tǒng)一書寫格式"。時(shí)間安排:1.程序框圖設(shè)計(jì),3天2.編程,4天3.調(diào)試,3天4.編寫設(shè)計(jì)報(bào)告,4天指導(dǎo)教師簽名:年月日系主任〔或責(zé)任教師〕簽名:年月日-.z.目錄摘要································································=1\*ROMANI1設(shè)計(jì)任務(wù)和思路····················································11.1設(shè)計(jì)任務(wù)······················································11.2設(shè)計(jì)思路······················································12更件局部工作原理··················································22.18255工作原理·················································22.28253工作原理·················································23程序流程圖························································43.1主程序流程圖··················································43.2演奏子程序流程················································53.3音樂播放子程序流程············································63.4彈奏子程序流程圖··············································63.5發(fā)音子程序流程圖·············································74各局部功能實(shí)現(xiàn)說明················································74.1發(fā)音局部功能實(shí)現(xiàn)··············································74.2變調(diào)功能的實(shí)現(xiàn)················································84.3彈奏功能的實(shí)現(xiàn)················································84.4演奏功能的實(shí)現(xiàn)················································94.4.1歌曲選擇功能實(shí)現(xiàn)········································94.4.2音樂播放功能實(shí)現(xiàn)········································95程序運(yùn)行結(jié)果·····················································10完畢語·····························································12參考文獻(xiàn)···························································13附錄程序清單······················································14成績(jī)?cè)u(píng)定表·························································19-.z.摘要匯編語言是一種功能很強(qiáng)的程序設(shè)計(jì)語言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語言。利用匯編語言能夠直接訪問與硬件相關(guān)的存儲(chǔ)器或I/O端口,從而最大限度地發(fā)揮硬件的功能。本文主要介紹了利用匯編語言設(shè)計(jì)一個(gè)運(yùn)行于計(jì)算機(jī)的電子琴軟件,軟件能夠?qū)崿F(xiàn)彈奏,演奏的功能,當(dāng)按下彈奏鍵時(shí),實(shí)現(xiàn)彈奏功能,發(fā)出音符對(duì)應(yīng)頻率的聲音,按下演奏鍵時(shí),實(shí)現(xiàn)演奏功能,播放預(yù)存的音樂,按下指定的音調(diào)選擇按鍵后,選擇低音,中音或高音,則分別用低音,中音或高音進(jìn)展彈奏或演奏。首先介紹了PC機(jī)內(nèi)揚(yáng)聲器的控制電路,接著介紹了相關(guān)接口芯片8255和8253的內(nèi)部構(gòu)造和工作原理,接著講述了各局部功能的具體實(shí)現(xiàn)方法。關(guān)鍵詞:匯編語言,8255,8253,揚(yáng)聲器-.z.計(jì)算機(jī)電子琴軟件設(shè)計(jì)1設(shè)計(jì)任務(wù)和思路1.1設(shè)計(jì)任務(wù)使用匯編語言設(shè)計(jì)一個(gè)運(yùn)行于計(jì)算機(jī)的電子琴軟件,軟件應(yīng)實(shí)現(xiàn)彈奏功能或演奏功能。其中彈奏:用戶每按一琴鍵彈奏相應(yīng)音符;演奏:按下*鍵后自動(dòng)彈奏預(yù)存琴譜功能;還可以附加變調(diào)、變速和記錄創(chuàng)作等其它功能。軟件預(yù)想功能為:按數(shù)字1-8為彈奏功能;按字母p為演奏功能;按d選擇低音,按z選擇中意,按g選擇高音。1.2設(shè)計(jì)思路電子琴的設(shè)計(jì)實(shí)際上就是要設(shè)計(jì)一個(gè)程序,能夠通過該程序控制PC機(jī)內(nèi)揚(yáng)聲器的發(fā)聲規(guī)律,按下相應(yīng)的按鍵后,揚(yáng)聲器能發(fā)出指定頻率的聲音。PC機(jī)內(nèi)的揚(yáng)聲器是通過并行接口芯片8255和定時(shí)芯片8253來控制發(fā)音的,其電路連接方式如下列圖所示。8255A8255APB1PB0CLK28253GATE2OUT2&揚(yáng)聲器1.19318MHZ1.19318MHZ圖1PC機(jī)內(nèi)揚(yáng)聲器控制電路由圖可知,揚(yáng)聲器是由8253通道2產(chǎn)生的方波信號(hào)和8255的PB1相與后驅(qū)動(dòng)發(fā)聲的,且通道2的門信號(hào)由8255的PB0提供,要想讓揚(yáng)聲器發(fā)聲,PB0和PB1必須同時(shí)為高電平,因此,可以通過對(duì)8255的PB0和PB1的設(shè)置來控制揚(yáng)聲器的開通和關(guān)斷,而其發(fā)音頻率可以通過對(duì)8253通道2的計(jì)數(shù)初值的設(shè)置來控制。所設(shè)計(jì)程序的任務(wù)就是要通過對(duì)按鍵的判斷來設(shè)置8255的PB0和PB1輸出電平的上下,以及8253通道2計(jì)數(shù)初值的設(shè)置。計(jì)數(shù)初值N=時(shí)鐘頻率/音階頻率.各音階的頻率如下表所示。表1各音符頻率表音符1234567頻率(低)131147165175196220247頻率(中)262294330349392440494頻率(高)5245886606987848809882硬件局部工作原理2.18255工作原理8255的內(nèi)部構(gòu)造圖如圖2所示,它有3個(gè)數(shù)據(jù)端口,分為兩組,A組由A口和C口高四位組成,B組由B口和C口低四位組成。其方式控制字如圖3所示。圖28255內(nèi)部構(gòu)造圖圖38255方式控制字圖38255方式控制字方式控制字的特征位D0D7D6D5D4D3D2D11A組工作方式00——方式001——方式11——方式2B組工作方式0——方式01——方式1A口輸入/輸出1——輸入0——輸出PC7PC4輸入/輸出1——輸入0——輸出B口輸入/輸出1——輸入0——輸出PC3PC0輸入/輸出1——輸入0——輸出PC機(jī)內(nèi)8255的A口,B口,C口和控制口的端口地址分別為:60H,61H,62H,63H。2.28253工作原理8253芯片中有3個(gè)計(jì)數(shù)通道,稱為通道0,1,2,它們與外部電路相連的信號(hào)線有3根:CLK,GATE,OUT,CLK是脈沖輸入端,GATE是門控信號(hào),OUT是輸出信號(hào),計(jì)數(shù)器工作在減1狀態(tài)。其內(nèi)部構(gòu)造圖和方式控制字格式如圖4,圖5所示。其中當(dāng)計(jì)數(shù)器工作在方式3時(shí),輸出信號(hào)為方波信號(hào)。內(nèi)內(nèi)部總線A1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7計(jì)數(shù)器0計(jì)數(shù)器2計(jì)數(shù)器1控制存放器A0數(shù)據(jù)總線緩沖器R/W邏輯電路圖48253內(nèi)部構(gòu)造圖D7D6D5D4D3D2D1D0計(jì)數(shù)器選擇計(jì)數(shù)器選擇00計(jì)數(shù)器001計(jì)數(shù)器110計(jì)數(shù)器211不用00計(jì)數(shù)器鎖存01讀寫低8位10讀寫高8位11讀寫16位工作方式選擇000方式0001方式1×10方式2×11方式3100方式4101方式5計(jì)數(shù)方式0二進(jìn)制1BCD計(jì)數(shù)圖58253控制字格式PC機(jī)內(nèi)8253的通道0,通道1,通道2,控制口的端口地址分別為:40H,41H,42,43H。因?yàn)閾P(yáng)聲器是由通道2來控制的,故應(yīng)選擇通道2,工作方式選為方式3,輸出的信號(hào)則為方波信號(hào)。3程序流程圖3.1主程序流程圖主程序的流程圖如下列圖所示:為d?為d?為z?為g?開場(chǎng)顯示輸入提示信息從鍵盤讀入字符為q?完畢選擇低音選擇中音選擇高音顯示輸入提示從鍵盤讀入字符為q?為p?為1~8?調(diào)用演奏子程序調(diào)用彈奏子程序NNYYNYNYYYYNYNNNYYYNYNNNYYNN圖6主程序流程圖3.2演奏子程序流程圖當(dāng)按鍵為p為時(shí),調(diào)用音樂播放子程序,音樂播放子程序的流程圖如下列圖所示。顯示輸入提示顯示輸入提示從鍵盤讀入字符從鍵盤讀入字符Y為q?Y為q?YN返回調(diào)用音樂1播放子程序?yàn)??為2?YN返回調(diào)用音樂1播放子程序?yàn)??為2?NNY調(diào)用音樂2播放子程序Y調(diào)用音樂2播放子程序NN顯示輸入提示顯示輸入提示從鍵盤讀入字符為q?為c?YYN返回N返回YNYN圖7音樂播放子程序流程圖3.3音樂播放子程序流程圖演奏時(shí),通過判斷按鍵為1或2來調(diào)用音樂播放子程序1或2,音樂播放子程序流程圖如圖8所示。計(jì)數(shù)器清零計(jì)數(shù)器清零CL自增1CL自增1YCL>歌曲長(zhǎng)度?YCL>歌曲長(zhǎng)度?N返回查表得相應(yīng)頻率計(jì)算計(jì)數(shù)初值N返回查表得相應(yīng)頻率計(jì)算計(jì)數(shù)初值調(diào)用發(fā)音子程序圖8音樂播放子程序流程圖3.4彈奏子程序流程圖當(dāng)按鍵為1-8時(shí),調(diào)用演奏子程序,演奏子程序的流程圖如下列圖所示:查表得相應(yīng)頻率查表得相應(yīng)頻率計(jì)算計(jì)數(shù)初值返回調(diào)用發(fā)音子程序圖9演奏子程序流程圖3.5發(fā)音子程序流程圖在彈奏和演奏時(shí)都需調(diào)用發(fā)音子程序,發(fā)音子程序的作用是控制揚(yáng)聲器的發(fā)音,其流程圖如下:8253初始化8253初始化開揚(yáng)聲器延時(shí)關(guān)揚(yáng)聲器返回圖10發(fā)音子程序流程圖4各局部功能實(shí)現(xiàn)說明4.1發(fā)音局部功能實(shí)現(xiàn)由更件的連接形式可知,揚(yáng)聲器的開斷是由8255的PB0和PB1以及8253通道2同時(shí)控制的,PB0和PB1同時(shí)為高電平時(shí),揚(yáng)聲器開,有一個(gè)為低電平時(shí),揚(yáng)聲器關(guān)斷,又知8255B口地址為61H,8253通道2地址為42H,控制口地址為43H。具體程序編寫如下。8253初始化程序段:moval,10110110b;選擇8253的通道2,并設(shè)置為工作方式3out43h,almova*,b*out42h,al;將計(jì)數(shù)初值的低8位寫入計(jì)數(shù)通道m(xù)oval,ahout42h,al;將計(jì)數(shù)初值的高8位寫入計(jì)數(shù)通道開揚(yáng)聲器程序段:inal,61h;讀入B口數(shù)據(jù)oral,03h;將PB0和PB1置1out61h,al;將設(shè)置好的數(shù)據(jù)送回B口關(guān)揚(yáng)聲器程序段:inal,61h;讀入B口數(shù)據(jù)andal,0fch;將PB0和PB1置0out61h,a;將設(shè)置好的數(shù)據(jù)送回B口4.2變調(diào)功能的實(shí)現(xiàn)揚(yáng)聲器發(fā)音的頻率是由8253產(chǎn)生方波的頻率決定的,而方波頻率又是由通道的計(jì)數(shù)初值來決定的,因此可以通過改變通道的計(jì)數(shù)初值來實(shí)現(xiàn)變調(diào)功能。計(jì)數(shù)初值N=時(shí)鐘頻率/音階頻率,時(shí)鐘頻率為1.19318MHZ=1234DCH,可以將相應(yīng)音調(diào)對(duì)應(yīng)的時(shí)鐘頻率存入內(nèi)存單元,中選擇相應(yīng)的音調(diào)時(shí),計(jì)算計(jì)數(shù)初值時(shí),采用對(duì)應(yīng)的時(shí)鐘頻率值,具體程序如下。cmpal,'d';為d則選擇低音jnej1movnum2,50jmpchoicej1:cmpal,'z';為z則選擇中音jnej2movnum2,12hjmpchoicej2:cmpal,'g';為g則選擇高音jneloop0movnum2,06h其中,num1和num2中存放的是時(shí)鐘頻率值,num1中固定為34DCH,選擇低音時(shí),num2值設(shè)為50,中音時(shí)設(shè)為12H,高音時(shí)設(shè)為06H。計(jì)算計(jì)數(shù)初值程序如下:mova*,num1movd*,num2div音符頻率通過這樣的設(shè)置,即可實(shí)現(xiàn)電子琴的變調(diào)功能。4.3彈奏功能的實(shí)現(xiàn)當(dāng)按鍵為數(shù)字1-8時(shí),選擇彈奏功能,通過對(duì)按鍵的判斷,求得其偏移地址,然后通過查表得其相應(yīng)頻率值,再由上述計(jì)算計(jì)數(shù)初值的方法求得計(jì)數(shù)初值,然后將計(jì)數(shù)初值送人8253的通道2,最后調(diào)用發(fā)音子程序即實(shí)現(xiàn)彈奏功能。具體程序段如下:subal,31h;求偏移量shlal,1movbl,al;保存偏移量movbh,0mova*,num1;計(jì)算計(jì)數(shù)初值movd*,num2divwordptr[tab+b*]movb*,a*;保存計(jì)數(shù)初值4.3演奏功能的實(shí)現(xiàn)4.3.1歌曲選擇功能實(shí)現(xiàn)當(dāng)按鍵為p時(shí),選擇演奏功能,播放預(yù)存的音樂,由于預(yù)存了兩首歌曲,因此需進(jìn)展選擇,按下p后,顯示輸入提示信息,按1或2選擇對(duì)應(yīng)的歌曲,然后調(diào)用相應(yīng)的音樂播放子程序,播放完后顯示輸入提示信息,按q退出,按c繼續(xù)。具體程序?qū)崿F(xiàn)如下:loop2:movd*,offsetmesg1;顯示輸入提示信息movah,09hint21hmovah,07h;從鍵盤讀入一個(gè)字符int21hcmpal,'q';為q則退出jechoicecmpal,'1';為1則選擇歌曲1jnene*t1callmusic1jmploop3ne*t1:cmpal,'2';為2則選擇歌曲2jneloop2;不為q,1,2則重新選擇callmusic2loop3:movd*,offsetmesg2;播放完后顯示輸入提示信息movah,09hint21hmovah,7;從鍵盤讀入一個(gè)字符int21hcmpal,'q';為q則返回jechoicecmpal,'c';為c則繼續(xù)播放jeloop2jmploop34.3.2音樂播放功能實(shí)現(xiàn)選擇歌曲后,調(diào)用對(duì)應(yīng)的音樂播放子程序,音樂播放需用到循環(huán)構(gòu)造,首先將計(jì)數(shù)器清零,接著計(jì)數(shù)器自增1,求得偏移量,然后通過查表的到相應(yīng)的頻率,再計(jì)算計(jì)數(shù)初值,將計(jì)數(shù)初值送人8253計(jì)數(shù)通道,調(diào)用發(fā)音子程序,假設(shè)計(jì)數(shù)器的值大于歌曲長(zhǎng)度,則返回。具體程序段如下。movcl,0;將計(jì)數(shù)器清零ad:inccl;計(jì)數(shù)器值自增1cmpcl,31;計(jì)數(shù)器值假設(shè)大于歌曲長(zhǎng)度,則返回jereturnmoval,clsubal,1;求偏移量shlal,1movbl,al;保存偏移量movbh,0mova*,num1;計(jì)算計(jì)數(shù)初值movd*,num2divwordptr[song2+b*]movb*,a*callspeaker;調(diào)用發(fā)音子程序jmpad5程序運(yùn)行結(jié)果運(yùn)行程序后,顯示如下界面,等待輸入字符。圖11程序運(yùn)行結(jié)果圖1按提示輸入字符,按q則退出,按d選擇低音,按z選擇中音,按g選擇高音,選擇音調(diào)后,顯示如下界面:圖12程序運(yùn)行結(jié)果圖2等待輸入字符,按q則退出,按p則演奏,按數(shù)字1-8則彈奏。按下p后,程序運(yùn)行如下:圖13程序運(yùn)行結(jié)果圖3按提示輸入字符,按下q則返回,按下1或2進(jìn)展歌曲選擇,歌曲播放完后程序運(yùn)行如下:圖14程序運(yùn)行結(jié)果圖4按提示按下鍵盤,假設(shè)按下q,則推出,假設(shè)按下c,則繼續(xù)播放歌曲。下面是按下c后的運(yùn)行結(jié)果:圖15程序運(yùn)行結(jié)果圖5完畢語通過這次課程設(shè)計(jì),我從中學(xué)到了許多從課本上學(xué)不到的東西,鍛煉了自己編程的能力,最后程序運(yùn)行時(shí)能夠?qū)崿F(xiàn)目標(biāo),我感到很有成就感,從中也獲得了很多樂趣,當(dāng)然,最重要的是加深了我對(duì)課本理論知識(shí)的理解。當(dāng)剛看到這個(gè)課設(shè)題目時(shí),我感到無從下手,因?yàn)槲叶疾恢繮C機(jī)的內(nèi)部具體構(gòu)造,從理論課上只是了解了CPU的構(gòu)造和工作原理,以及幾個(gè)接口芯片的工作原理,還有匯編語言的一些根本指令。但我沒有被嚇到,我冷靜下來思考后,發(fā)現(xiàn)其本質(zhì)就是控制PC機(jī)內(nèi)揚(yáng)聲器的發(fā)音,通過查閱資料我了解了PC機(jī)內(nèi)揚(yáng)聲器的電路連接形式,發(fā)現(xiàn)它是由接口芯片8255和8253共同控制的,8255的PB0作為8253通道2的門信號(hào),而8255的PB1和8253通道2的輸出相與后的信號(hào)作為揚(yáng)聲器的驅(qū)動(dòng)信號(hào),了解了其內(nèi)部接線方式后,思路也就有了,要想讓揚(yáng)聲器發(fā)聲,8255的PB0和PB1必須同時(shí)為高電平,其中之一為低電平時(shí),揚(yáng)聲器就不能發(fā)聲,而發(fā)聲的音調(diào)則可通過改變8253的計(jì)數(shù)初值來實(shí)現(xiàn),接下來的任務(wù)就是通過編程來控制8255和8253,從而間接地控制揚(yáng)聲器的發(fā)聲規(guī)律,而8255和8253這兩個(gè)接口芯片在理論課上都已介紹過,對(duì)其工作原理和編程方法都有一定的了解,看到這些熟悉的內(nèi)容時(shí),我淡定了很多。有了思路之后,我并沒有急著寫程序,因?yàn)槲乙尚氖遣皇敲颗_(tái)PC機(jī)的揚(yáng)聲器接線方式都是這樣的,所以我開場(chǎng)只編了一段控制揚(yáng)聲器發(fā)音的程序,來看看程序運(yùn)行時(shí)揚(yáng)聲器到底發(fā)不發(fā)音,結(jié)果發(fā)聲了,這讓我很驚喜,也很有動(dòng)力,更加激發(fā)了我的興趣,接下來我就開場(chǎng)編寫實(shí)現(xiàn)指定功能的程序了,首先是最簡(jiǎn)單的彈奏功能,通過對(duì)按鍵的判斷來發(fā)出相應(yīng)頻率的聲音,因?yàn)橐袛喟存I,所以很自然地就想到了CMP指令,在計(jì)算計(jì)數(shù)初值時(shí),因?yàn)橐玫较鄳?yīng)音符的頻率,所以需要將按鍵轉(zhuǎn)換為音符的頻率,我開場(chǎng)想用課本上常見的*LAT換碼指令,但AL存放的數(shù)最大為128,很明顯容量不夠,于是我采用了基址+變址的尋址方法,在編程的過程中,由于要程序?qū)崿F(xiàn)多個(gè)功能,所以用子程序的構(gòu)造會(huì)比擬方便,需要完成*個(gè)功能時(shí),只需調(diào)用相應(yīng)子程序就可以了,這樣會(huì)使得程序的構(gòu)造清楚明了;在開揚(yáng)聲器和關(guān)揚(yáng)聲器之間需要一定的延時(shí),當(dāng)把計(jì)數(shù)器置為0ffffh時(shí),延時(shí)還是顯得太短,于是延時(shí)我采用了A*和C*相配合的方式,使得延時(shí)到達(dá)預(yù)期的目的;在完成根本功能后,我還試著加上一些附加功能,比方變調(diào),錄音,通過我的不斷嘗試,終于把變調(diào)功能實(shí)現(xiàn)了,但錄音功能沒能像預(yù)期的那樣。總之,這次課程設(shè)計(jì)讓我學(xué)到了許多從課本上學(xué)不到的知識(shí),加深了對(duì)理論知識(shí)的理解,激發(fā)了我對(duì)匯編語言的興趣。上理論課時(shí),只是教師講,我們聽,那些指令讓我感到很枯燥,因?yàn)椴恢浪降子惺裁醋饔茫@次課程設(shè)計(jì)剛好把這些指令應(yīng)用到了實(shí)際中來,加深了對(duì)各種指令功能的理解,最后功能實(shí)現(xiàn)時(shí),感到很有成就感,覺得匯編語言很神奇,激發(fā)了我對(duì)它的興趣。參考文獻(xiàn)[1]彭虎,周佩玲.微機(jī)原理與接口技術(shù)〔第二版〕.電子工業(yè)出版社,2010[2]陳慧杰.計(jì)算機(jī)揚(yáng)聲器發(fā)聲的控制.內(nèi)蒙古民族大學(xué)出版社,2001[3]PeterAbel著,沈美明等譯.IBMPC匯編語言設(shè)計(jì)程序.人民郵電出版社,2002[4]馮繼超.微機(jī)原理實(shí)驗(yàn)指導(dǎo)書.武漢理工大學(xué)出版社,2010附錄程序清單datasegmentmesgdb'pressqtoquit,pressdorzorhtochoseyindiao',0ah,0dh,'$'mesg1db'pressqtoreturn,press1or2tochosemusic',0ah,0dh,'$'mesg2db'pressqtoreturn,pressctocontinue',0ah,0dh,'$'mesg3db'pressqtoreturn,pressptoplaymusic,press1~8tohandplay',0ah,0dh,'$'num1dw34dchnum2dw12htabdw262,294,330,347,392,440,494,524song1dw262,294,330,262,262,294,330,262dw330,347,392,330,347,392,392,440dw392,347,330,262,392,440,392,347dw330,262,392,262,392,392,262,392;兩只老虎song2dw330,330,347,392,392,347,330,294dw262,262,294,330,330,294,294,330dw330,347,392,392,347,330,294,262dw262,294,330,294,262,262;歡樂頌dataendscodesegment assumecs:code,ds:datastart:mova*,datamovds,a*loop0:movd*,offsetmesg;顯示輸入提示信息movah,09hint21loop1:movah,07h;讀入字符int21hcmpal,'q';為q則退出jedonecmpal,'d';為d,選擇低音jnej1movnum2,50jmpchoicej1:cmpal,'z';為z選擇中音jnej2movnum2,12hjmpchoicej2:cmpal,'g';為g選擇高音jneloop0movnum2,06hchoice:movd*,offsetmesg3movah,09hint21hput1:movah,07hint21hcmpal,'q';為q則返回jeloop0cmpal,'p';為p選擇演奏jnene*tcallplayjmpput1ne*t:cmpal,'1';為1-8,選擇彈奏jlloop1cmpal,'8'jgput1callhandjmpput1handprocnear;彈奏子程序subal,31hshlal,1movbl,almovbh,0mova*,num1movd*,num2divwordptr[tab+b*]movb*,a*callspeakerrethandendpplayprocnear;演奏子程序loop2:movd*,offsetmesg1movah,09hint21hmovah,07h;讀入字符int21hcmpal,'q';為q則返回jechoicecmpal,'1';為1,播放歌曲1jnene*t1callmusic1jmploop3ne*t1:cmpal,'2';為2,播放歌曲2jneloop2callmusic2loop3:movd*,offsetmesg2movah,09hint21hmovah,7;讀入字符int21hcmpal,'q';為q則退出jechoicecmpal,'c';為c則繼續(xù)jeloop2jmploop3retplayendpmusic1procnear;音樂1播放子程序movcl,0ad:incclcmpcl,33jereturnmoval,clsubal,1;取偏移量shlal,1m

溫馨提示

  • 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. 人人文庫(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)論