




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(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 等文本編輯器輸入80x86匯編程序,MASM 5.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)、變速和記
2、錄創(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é)任教師)簽名: 年 月 日目錄摘要I1 設(shè)計(jì)任務(wù)和思路11.1設(shè)計(jì)任務(wù)11.2設(shè)計(jì)思路12更件部分工作原理22.1 8255工作原理22.2 8253工作原理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)9
3、 4.4.1歌曲選擇功能實(shí)現(xiàn)9 4.4.2 音樂播放功能實(shí)現(xiàn)95 程序運(yùn)行結(jié)果10結(jié)束語12參考文獻(xiàn)13附錄 程序清單14成績?cè)u(píng)定表19摘要匯編語言是一種功能很強(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)行彈奏或演奏。首先介紹了
4、PC機(jī)內(nèi)揚(yáng)聲器的控制電路,接著介紹了相關(guān)接口芯片8255和8253的內(nèi)部結(jié)構(gòu)和工作原理,接著講述了各部分功能的具體實(shí)現(xiàn)方法。關(guān)鍵詞:匯編語言,8255,8253,揚(yáng)聲器 計(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)
5、聲器的發(fā)聲規(guī)律,按下相應(yīng)的按鍵后,揚(yáng)聲器能發(fā)出指定頻率的聲音。PC機(jī)內(nèi)的揚(yáng)聲器是通過并行接口芯片8255和定時(shí)芯片8253來控制發(fā)音的,其電路連接方式如下圖所示。 8255A PB1 PB0 CLK2 8253GATE2 OUT2 &揚(yáng)聲器1.19318MHZ 圖1 PC機(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è)置來控制。
6、所設(shè)計(jì)程序的任務(wù)就是要通過對(duì)按鍵的判斷來設(shè)置8255的PB0和PB1輸出電平的高低,以及8253通道2計(jì)數(shù)初值的設(shè)置。計(jì)數(shù)初值N=時(shí)鐘頻率/音階頻率.各音階的頻率如下表所示。表1 各音符頻率表音符1234567頻率(低)131147165175196220247頻率(中)262294330349392440494頻率(高)5245886606987848809882硬件部分工作原理2.1 8255工作原理8255的內(nèi)部結(jié)構(gòu)圖如圖2所示,它有3個(gè)數(shù)據(jù)端口,分為兩組,A組由A口和C口高四位組成,B組由B口和C口低四位組成。其方式控制字如圖3所示。圖2 8255內(nèi)部結(jié)構(gòu)圖圖3 8255方式控制字方式
7、控制字的特征位D0D7D6D5D4D3D2D1 1 A組工作方式0 0方式00 1方式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.2 8253工作原理 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)部結(jié)構(gòu)圖和方式控制字格式如圖4,圖5所示
8、。其中當(dāng)計(jì)數(shù)器工作在方式3時(shí),輸出信號(hào)為方波信號(hào)。內(nèi)部總線A1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7計(jì)數(shù)器0計(jì)數(shù)器2計(jì)數(shù)器1控制寄存器A0數(shù)據(jù)總線緩沖器R/W邏輯電路圖4 8253內(nèi)部結(jié)構(gòu)圖D7D6D5D4D3D2D1D0計(jì)數(shù)器選擇00 計(jì)數(shù)器001計(jì)數(shù)器110 計(jì)數(shù)器211 不用00 計(jì)數(shù)器鎖存01 讀寫低8位10 讀寫高8位11 讀寫16位工作方式選擇000 方式0001 方式110 方式211 方式3100 方式4101 方式5計(jì)數(shù)方式0 二進(jìn)制1 BCD計(jì)數(shù)圖5 8253控制字格式PC機(jī)內(nèi)8253的通道0,通道1,通道2,控制口的端口地
9、址分別為:40H,41H,42,43H。因?yàn)閾P(yáng)聲器是由通道2來控制的,故應(yīng)選擇通道2,工作方式選為方式3,輸出的信號(hào)則為方波信號(hào)。3程序流程圖3.1主程序流程圖 主程序的流程圖如下圖所示:為d?為z?為g?開始顯示輸入提示信息從鍵盤讀入字符為q?結(jié)束選擇低音選擇中音選擇高音顯示輸入提示從鍵盤讀入字符為q?為p?為18?調(diào)用演奏子程序調(diào)用彈奏子程序NYNYYYNNYYNNYN圖6 主程序流程圖3.2演奏子程序流程圖當(dāng)按鍵為p為時(shí),調(diào)用音樂播放子程序,音樂播放子程序的流程圖如下圖所示。顯示輸入提示從鍵盤讀入字符Y為q?YN返回調(diào)用音樂1播放子程序?yàn)??為2?NY調(diào)用音樂2播放子程序N顯示輸入提示從
10、鍵盤讀入字符為q?為c?YN返回YN圖7 音樂播放子程序流程圖3.3 音樂播放子程序流程圖 演奏時(shí),通過判斷按鍵為1或2來調(diào)用音樂播放子程序1或2,音樂播放子程序流程圖如圖8所示。計(jì)數(shù)器清零CL自增1YCL歌曲長度?N返回查表得相應(yīng)頻率計(jì)算計(jì)數(shù)初值調(diào)用發(fā)音子程序圖8 音樂播放子程序流程圖3.4彈奏子程序流程圖 當(dāng)按鍵為1-8時(shí),調(diào)用演奏子程序,演奏子程序的流程圖如下圖所示:查表得相應(yīng)頻率計(jì)算計(jì)數(shù)初值返回調(diào)用發(fā)音子程序 圖9 演奏子程序流程圖3.5 發(fā)音子程序流程圖 在彈奏和演奏時(shí)都需調(diào)用發(fā)音子程序,發(fā)音子程序的作用是控制揚(yáng)聲器的發(fā)音,其流程圖如下:8253初始化開揚(yáng)聲器延時(shí)關(guān)揚(yáng)聲器返回 圖10
11、 發(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)斷,又知8255 B口地址為61H,8253通道2地址為42H,控制口地址為43H。具體程序編寫如下。 8253初始化程序段: mov al,b ;選擇8253的通道2,并設(shè)置為工作方式3out 43h,al mov ax,bxout 42h,al ;將計(jì)數(shù)初值的低8位寫入計(jì)數(shù)通道m(xù)ov al,ahout 42h,al ;將計(jì)數(shù)初值的高8位寫入計(jì)數(shù)通道開揚(yáng)聲器程序段:in a
12、l,61h ;讀入B口數(shù)據(jù)or al,03h ;將PB0 和PB1置1out 61h,al ;將設(shè)置好的數(shù)據(jù)送回B口關(guān)揚(yáng)聲器程序段:in al,61h ;讀入B口數(shù)據(jù) and al,0fch ;將PB0 和PB1置0out 61h,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)存單元,當(dāng)選擇相應(yīng)的音調(diào)時(shí),計(jì)算計(jì)數(shù)初值時(shí),采用對(duì)應(yīng)的時(shí)鐘頻率值,
13、具體程序如下。 cmp al,d ;為d則選擇低音 jne j1 mov num2,50 jmp choice j1:cmp al,z ;為z則選擇中音 jne j2 mov num2,12h jmp choice j2:cmp al,g ;為g則選擇高音 jne loop0 mov num2,06h其中,num1和num2中存放的是時(shí)鐘頻率值,num1中固定為34DCH,選擇低音時(shí),num2值設(shè)為50,中音時(shí)設(shè)為12H,高音時(shí)設(shè)為06H。計(jì)算計(jì)數(shù)初值程序如下:mov ax,num1 mov dx,num2 div 音符頻率通過這樣的設(shè)置,即可實(shí)現(xiàn)電子琴的變調(diào)功能。 4.3 彈奏功能的實(shí)現(xiàn)當(dāng)按
14、鍵為數(shù)字1-8時(shí),選擇彈奏功能,通過對(duì)按鍵的判斷,求得其偏移地址,然后通過查表得其相應(yīng)頻率值,再由上述計(jì)算計(jì)數(shù)初值的方法求得計(jì)數(shù)初值,然后將計(jì)數(shù)初值送人8253的通道2,最后調(diào)用發(fā)音子程序即實(shí)現(xiàn)彈奏功能。具體程序段如下: sub al,31h ;求偏移量 shl al,1 mov bl,al ;保存偏移量 mov bh,0 mov ax,num1 ;計(jì)算計(jì)數(shù)初值 mov dx,num2 div word ptrtab+bx mov bx,ax ;保存計(jì)數(shù)初值4.3 演奏功能的實(shí)現(xiàn)4.3.1 歌曲選擇功能實(shí)現(xiàn) 當(dāng)按鍵為p時(shí),選擇演奏功能,播放預(yù)存的音樂,由于預(yù)存了兩首歌曲,因此需進(jìn)行選擇,按下p
15、后,顯示輸入提示信息,按1或2選擇對(duì)應(yīng)的歌曲,然后調(diào)用相應(yīng)的音樂播放子程序,播放完后顯示輸入提示信息,按q退出,按c繼續(xù)。具體程序?qū)崿F(xiàn)如下:loop2: mov dx,offset mesg1 ;顯示輸入提示信息mov ah,09hint 21h mov ah,07h ;從鍵盤讀入一個(gè)字符int 21hcmp al,q ;為q則退出je choicecmp al,1 ;為1則選擇歌曲1jne next1 call music1jmp loop3next1:cmp al,2 ;為2則選擇歌曲2jne loop2 ;不為q,1,2則重新選擇call music2loop3:mov dx,offse
16、t mesg2 ;播放完后顯示輸入提示信息 mov ah,09h int 21hmov ah,7 ;從鍵盤讀入一個(gè)字符int 21hcmp al,q ;為q則返回je choicecmp al,c ;為c則繼續(xù)播放je loop2jmp loop34.3.2 音樂播放功能實(shí)現(xiàn) 選擇歌曲后,調(diào)用對(duì)應(yīng)的音樂播放子程序,音樂播放需用到循環(huán)結(jié)構(gòu),首先將計(jì)數(shù)器清零,接著計(jì)數(shù)器自增1,求得偏移量,然后通過查表的到相應(yīng)的頻率,再計(jì)算計(jì)數(shù)初值,將計(jì)數(shù)初值送人8253計(jì)數(shù)通道,調(diào)用發(fā)音子程序,若計(jì)數(shù)器的值大于歌曲長度,則返回。具體程序段如下。 mov cl,0 ;將計(jì)數(shù)器清零ad:inc cl ;計(jì)數(shù)器值自增1
17、cmp cl,31 ;計(jì)數(shù)器值若大于歌曲長度,則返回je returnmov al,cl sub al,1 ;求偏移量shl al,1mov bl,al ;保存偏移量mov bh,0mov ax,num1 ;計(jì)算計(jì)數(shù)初值mov dx,num2div word ptrsong2+bxmov bx,axcall speaker ;調(diào)用發(fā)音子程序jmp ad5 程序運(yùn)行結(jié)果 運(yùn)行程序后,顯示如下界面,等待輸入字符。圖11 程序運(yùn)行結(jié)果圖1 按提示輸入字符,按q則退出,按d選擇低音,按z選擇中音,按g選擇高音,選擇音調(diào)后,顯示如下界面:圖12 程序運(yùn)行結(jié)果圖2等待輸入字符,按q則退出,按p則演奏,按數(shù)
18、字1-8則彈奏。按下p后,程序運(yùn)行如下: 圖13 程序運(yùn)行結(jié)果圖3按提示輸入字符,按下q則返回,按下1或2進(jìn)行歌曲選擇,歌曲播放完后程序運(yùn)行如下:圖14 程序運(yùn)行結(jié)果圖4按提示按下鍵盤,若按下q,則推出,若按下c,則繼續(xù)播放歌曲。下面是按下c后的運(yùn)行結(jié)果: 圖15 程序運(yùn)行結(jié)果圖5結(jié)束語通過這次課程設(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)部具體結(jié)構(gòu),從理論課上只是了解了CPU的結(jié)構(gòu)和工作原理,
19、以及幾個(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)聲
20、器的發(fā)聲規(guī)律,而8255和8253這兩個(gè)接口芯片在理論課上都已介紹過,對(duì)其工作原理和編程方法都有一定的了解,看到這些熟悉的內(nèi)容時(shí),我淡定了很多。有了思路之后,我并沒有急著寫程序,因?yàn)槲覒岩墒遣皇敲颗_(tái)PC機(jī)的揚(yáng)聲器接線方式都是這樣的,所以我開始只編了一段控制揚(yáng)聲器發(fā)音的程序,來看看程序運(yùn)行時(shí)揚(yáng)聲器到底發(fā)不發(fā)音,結(jié)果發(fā)聲了,這讓我很驚喜,也很有動(dòng)力,更加激發(fā)了我的興趣,接下來我就開始編寫實(shí)現(xiàn)指定功能的程序了,首先是最簡單的彈奏功能,通過對(duì)按鍵的判斷來發(fā)出相應(yīng)頻率的聲音,因?yàn)橐袛喟存I,所以很自然地就想到了CMP指令,在計(jì)算計(jì)數(shù)初值時(shí),因?yàn)橐玫较鄳?yīng)音符的頻率,所以需要將按鍵轉(zhuǎn)換為音符的頻率,我開始
21、想用課本上常見的XLAT換碼指令,但AL存放的數(shù)最大為128,很明顯容量不夠,于是我采用了基址+變址的尋址方法,在編程的過程中,由于要程序?qū)崿F(xiàn)多個(gè)功能,所以用子程序的結(jié)構(gòu)會(huì)比較方便,需要完成某個(gè)功能時(shí),只需調(diào)用相應(yīng)子程序就可以了,這樣會(huì)使得程序的結(jié)構(gòu)清楚明了;在開揚(yáng)聲器和關(guān)揚(yáng)聲器之間需要一定的延時(shí),當(dāng)把計(jì)數(shù)器置為0ffffh時(shí),延時(shí)還是顯得太短,于是延時(shí)我采用了AX和CX相配合的方式,使得延時(shí)達(dá)到預(yù)期的目的;在完成基本功能后,我還試著加上一些附加功能,比如變調(diào),錄音,通過我的不斷嘗試,終于把變調(diào)功能實(shí)現(xiàn)了,但錄音功能沒能像預(yù)期的那樣??傊?,這次課程設(shè)計(jì)讓我學(xué)到了許多從課本上學(xué)不到的知識(shí),加深了
22、對(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è)出版社,20102 陳慧杰. 計(jì)算機(jī)揚(yáng)聲器發(fā)聲的控制. 內(nèi)蒙古民族大學(xué)出版社,20013 Peter Abel著,沈美明等譯. IBM PC匯編語言設(shè)計(jì)程序. 人民郵電出版社,20024 馮繼超.微機(jī)原理實(shí)驗(yàn)指導(dǎo)書.武漢理工大學(xué)出版社,2010附錄 程序清單da
23、ta segmentmesg db press q to quit,press d or z or h to chose yin diao,0ah,0dh,$mesg1 db press q to return,press 1 or 2 to chose music,0ah,0dh,$mesg2 db press q to return,press c to continue,0ah,0dh,$mesg3 db press q to return,press p to play music,press 18 to hand play,0ah,0dh,$ num1 dw 34dchnum2 dw
24、 12htab dw 262,294,330,347,392,440,494,524 song1 dw 262,294,330,262,262,294,330,262 dw 330,347,392,330,347,392,392,440 dw 392,347,330,262,392,440,392,347 dw 330,262,392,262,392,392,262,392 ;兩只老虎 song2 dw 330,330,347,392,392,347,330,294 dw 262,262,294,330,330,294,294,330 dw 330,347,392,392,347,330,29
25、4,262 dw 262,294,330,294,262,262 ;歡樂頌 data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,ax loop0:mov dx,offset mesg ;顯示輸入提示信息 mov ah,09h int 21 loop1:mov ah,07h ;讀入字符 int 21h cmp al,q ;為q則退出 je done cmp al,d ;為d,選擇低音 jne j1 mov num2,50 jmp choice j1:cmp al,z ;為z選擇中音 jne j2 mov num
26、2,12h jmp choice j2:cmp al,g ;為g選擇高音 jne loop0 mov num2,06hchoice:mov dx,offset mesg3 mov ah,09h int 21h put1:mov ah,07h int 21h cmp al,q ;為q則返回 je loop0 cmp al,p ;為p選擇演奏 jne next call play jmp put1 next: cmp al,1 ;為1-8,選擇彈奏 jl loop1 cmp al,8 jg put1 call hand jmp put1 hand proc near ;彈奏子程序 sub al,3
27、1h shl al,1 mov bl,al mov bh,0 mov ax,num1 mov dx,num2 div word ptrtab+bx mov bx,ax call speaker rethand endpplay proc near ;演奏子程序loop2: mov dx,offset mesg1 mov ah,09h int 21h mov ah,07h ;讀入字符 int 21h cmp al,q ;為q則返回 je choice cmp al,1 ;為1,播放歌曲1 jne next1 call music1 jmp loop3next1:cmp al,2 ;為2,播放歌曲2 jne loop2 call music2 loop3:mov dx,offset mesg2 mov ah,09h int 21h mov ah,7 ;讀入字符 int 21h cmp al,q ;為q則退出 je choice cmp al,c ;為c則繼續(xù) je loop2 jmp loop3 retplay endpmusic1 proc near ;音樂1播放子程序 mov cl,0 ad:inc cl cmp cl,33 je return mov al,cl sub al,1 ;取偏移量 shl al,1 m
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年寧波象山縣大徐鎮(zhèn)人民政府招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波慈溪市公共項(xiàng)目建筑中心(局)選調(diào)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 【2025】江蘇淮安市宏信國有資產(chǎn)投資管理有限公司及下屬子筆試考點(diǎn)考試試題及答案
- 2025年支撐螺栓項(xiàng)目可行性研究報(bào)告
- 浙江專用2025版高考數(shù)學(xué)大一輪復(fù)習(xí)第六章數(shù)列與數(shù)學(xué)歸納法第3講等比數(shù)列及其前n項(xiàng)和練習(xí)含解析
- 山東省2024年高考生物一輪復(fù)習(xí)考點(diǎn)掃描專題09酶和ATP含解析
- 高中語文文摘異域納粹為什么要屠殺精神病人
- 江蘇專用2025版高考?xì)v史大一輪復(fù)習(xí)第八單元近代中國經(jīng)濟(jì)與近現(xiàn)代社會(huì)生活的變遷單元綜合提升教案含解析新人教版
- 2024浙江寧波市水務(wù)環(huán)境集團(tuán)有限公司招聘16人筆試參考題庫附帶答案詳解
- 專業(yè)導(dǎo)論(設(shè))知到課后答案智慧樹章節(jié)測試答案2025年春重慶工業(yè)職業(yè)技術(shù)學(xué)院
- 早產(chǎn)兒與低出生體重兒袋鼠式護(hù)理技術(shù)規(guī)
- 統(tǒng)編版(2024新版)七年級(jí)下冊(cè)道德與法治期末復(fù)習(xí)背誦知識(shí)點(diǎn)提綱
- 《田野調(diào)查方法》課件
- 火電工程達(dá)標(biāo)投產(chǎn)考核標(biāo)準(zhǔn)(2024版)
- 《信號(hào)工程施工》課件全套 穆中華 項(xiàng)目1-3 信號(hào)圖紙識(shí)讀、施工技能訓(xùn)練、信號(hào)聯(lián)鎖試驗(yàn)
- 全新網(wǎng)絡(luò)安全教案:應(yīng)對(duì)2024年網(wǎng)絡(luò)威脅
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》真題及解析
- 【2×600MW火電廠電氣部分設(shè)計(jì)(論文)16000字】
- 醫(yī)學(xué)教程 常見動(dòng)物咬蟄傷應(yīng)急救護(hù)課件
- 組合型浮式防波堤水動(dòng)力響應(yīng)與消浪性能研究
- 商業(yè)綜合體應(yīng)急預(yù)案編制與演練效果評(píng)估考核試卷
評(píng)論
0/150
提交評(píng)論