《匯編語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)音樂(lè)樂(lè)曲演奏程序_第1頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)音樂(lè)樂(lè)曲演奏程序_第2頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)音樂(lè)樂(lè)曲演奏程序_第3頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)音樂(lè)樂(lè)曲演奏程序_第4頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)音樂(lè)樂(lè)曲演奏程序_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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、目 錄1、問(wèn)題定義21.1設(shè)計(jì)目的21.2設(shè)計(jì)內(nèi)容22、需求分析32.1流程圖32.2通用發(fā)聲程序設(shè)計(jì)原理43、詳細(xì)設(shè)計(jì)63.1主要的宏和過(guò)程的實(shí)現(xiàn)63.1.1display顯示宏63.1.2address音樂(lè)地址宏63.1.3music宏73.1.4通用發(fā)生程序gensound83.1.5waitf延時(shí)程序93.1.6clear清屏程序103.1.7retu退出113.2主程序?qū)崿F(xiàn)113.2.1數(shù)據(jù)段定義113.2.2堆棧段定義123.2.3初始化133.2.4程序執(zhí)行過(guò)程134、系統(tǒng)調(diào)試145、收獲體會(huì)176、附錄187、參考文獻(xiàn)251、問(wèn)題定義1.1設(shè)計(jì)目的1使學(xué)生能夠較全面地鞏固和應(yīng)用

2、課堂中所學(xué)的基本理論和程序設(shè)計(jì)方法,能夠較熟練地完成匯編語(yǔ)言程序的設(shè)計(jì)和調(diào)試。2培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成匯編程序課題的能力。3培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。4提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的基本素質(zhì)。5培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。6對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書(shū)面及口頭表達(dá)能力進(jìn)行考核。1.2設(shè)計(jì)內(nèi)容要求完成一個(gè)音樂(lè)程序,即通過(guò)按下鍵盤(pán)上某個(gè)按鍵

3、就可以按預(yù)先設(shè)定的程序播放音樂(lè)或者終止程序。(比如:按大寫(xiě)字母“a”,唱樂(lè)曲“瑪麗有只小羔羊”;按大寫(xiě)字母“b”,唱樂(lè)曲“太湖船”按大寫(xiě)字母“c”,唱樂(lè)曲“兩只老虎”;按q鍵,退出。)此程序涉及到過(guò)程和宏的調(diào)用,要求學(xué)生掌握關(guān)于過(guò)程和宏的定義和使用。(比如:可以設(shè)定播放某一段音樂(lè)為一個(gè)過(guò)程,設(shè)定對(duì)音樂(lè)進(jìn)行播放的操作為一個(gè)宏操作。)2、需求分析2.1流程圖圖2-1 系統(tǒng)流程圖開(kāi)始顯示提示信息接收鍵盤(pán)輸入是“q”?是“a”?是“c”?是“b”?退出程序?qū)⒁魳?lè)節(jié)拍頻率地址導(dǎo)入address調(diào)用music,播放音樂(lè)顯示錯(cuò)誤提示調(diào)用清屏程序是是是是否否否否2.2通用發(fā)聲程序設(shè)計(jì)原理pc機(jī)發(fā)聲系統(tǒng)以825

4、4的2號(hào)計(jì)數(shù)器為核心。系統(tǒng)初始化時(shí),2號(hào)計(jì)數(shù)器i作在“方波發(fā)生器”方式,初值為二進(jìn)制數(shù),寫(xiě)入順序?yàn)橄鹊秃蟾?,clk2為1193182mhz,當(dāng)計(jì)數(shù)初值為533h時(shí),out2輸出的方波大約為900hz,經(jīng)過(guò)簡(jiǎn)單的濾波之后,送至揚(yáng)聲器。改變1.4號(hào)計(jì)數(shù)器的計(jì)數(shù)初值就可以使揚(yáng)聲器發(fā)出不同頻率的音響。rom bios 中有個(gè)beep子程序,這能根據(jù)bl中組出的時(shí)間計(jì)數(shù)值控制8254定時(shí)器,產(chǎn)生持續(xù)時(shí)間為1個(gè)或幾個(gè)0.5秒,頻率為896hz的聲音,我們可以利用并修改beep,使其產(chǎn)生任一頻率的聲音。為此我們需要做兩點(diǎn)修改,首先,beep程序只能產(chǎn)生896hz的聲音,我們的通用發(fā)聲程序應(yīng)能產(chǎn)生任一頻率的聲

5、音。其次,beep產(chǎn)生聲音的持續(xù)時(shí)間(音長(zhǎng))只能是0.5秒的倍數(shù),我們希望聲音的持續(xù)時(shí)間更易于調(diào)整,例如可以是10ms的倍數(shù)。我們知道beep能將計(jì)數(shù)值533h送給定時(shí)器2產(chǎn)生896hz的聲音的,那么產(chǎn)生其它頻率聲音的時(shí)間計(jì)數(shù)值應(yīng)為:533h896給定頻率=123280h給定頻率發(fā)聲程序包括3個(gè)步驟: (1)在8253中的42端口送一個(gè)控制字0b6h(10110110b),該控制字對(duì)定時(shí)器2進(jìn)行初始化,使定時(shí)器2準(zhǔn)備接收計(jì)數(shù)初值。 (2)在8253中的42h端口(timer2)裝入一個(gè)16位的計(jì)數(shù)值(533h895/頻率),以建立將要產(chǎn)生的聲音頻率。 (3)把輸出端口61h的pb0、pb1兩位

6、置1,發(fā)出聲音。 對(duì)于發(fā)音部分。pc機(jī)上的大多數(shù)輸入/輸出(i/o)都是由主板上的8255(或8255a)可編程序外圍接口芯片(ppi)管理的。ppi包括3個(gè)8位寄存器,兩個(gè)用于輸入功能,一個(gè)用于輸出功能。輸入寄存器分配的i/o端口號(hào)為60h和62h,輸出寄存器分配的i/o端口號(hào)為61h。由ppi輸出寄存器中的0、1兩位來(lái)選擇揚(yáng)聲器的驅(qū)動(dòng)方式。連接到揚(yáng)聲器上的是定時(shí)器2,從上圖可以看到,gate2與端口61h的pb0相連,當(dāng)pb0=1時(shí),gate2獲得高電平,使定時(shí)器2可以在模式3(方波)下工作。定時(shí)器2的out2與端口61h的pb1通過(guò)一個(gè)與門與揚(yáng)聲器的驅(qū)動(dòng)電路相連。當(dāng)pb1=1時(shí),允許ou

7、t2的輸出信號(hào)到達(dá)揚(yáng)聲器電路。因此,只有pb0和pb1同時(shí)為“1”時(shí),才能驅(qū)動(dòng)揚(yáng)聲器地聲。通過(guò)以下指令實(shí)現(xiàn): in al,61h or al,3 out 61h,al 上面的指令用以打開(kāi)揚(yáng)聲器,如要關(guān)閉揚(yáng)聲器時(shí)則為: and al,0fch out 61h,al 當(dāng)從8255中采集到輸入的數(shù)據(jù)時(shí),需要確定相應(yīng)的頻率,所以在軟件編程時(shí)要建立一個(gè)數(shù)據(jù)表: table dw 493,440,392,349,329,293,261 把相應(yīng)的頻率送到一個(gè)寄存器上,通過(guò)公式: 計(jì)數(shù)值=533h896 f=1234dch f 算出計(jì)數(shù)值,再把算得的計(jì)數(shù)值送給8253,就可產(chǎn)生所要頻率的方波。在把計(jì)數(shù)值送82

8、53前,必須先把8253進(jìn)行初始化: mov al,0b6h out 43h,al 使其選用通道2,工作在方式3下。 就整個(gè)電路而言,接好電路后,通過(guò)軟件編程不斷地采集從8255口中輸入的信號(hào),而8個(gè)開(kāi)關(guān)都接在8255的a口上,只要有開(kāi)關(guān)按下,就會(huì)采集到一個(gè)數(shù)據(jù),根據(jù)這個(gè)數(shù)據(jù)與事先編好的表對(duì)應(yīng),得到一個(gè)計(jì)數(shù)值,把這個(gè)計(jì)數(shù)值送給8253的通道2,8253的通道2工作的方式3下,這樣就可以產(chǎn)生滿足頻率要求的發(fā)聲方波。這個(gè)方波經(jīng)驅(qū)動(dòng)放大就可以使揚(yáng)聲器發(fā)出相應(yīng)的聲音。 所以8255在這里完成兩個(gè)任務(wù),它不僅從a口中采集到數(shù)據(jù),而且b口的pb1和pb0兩個(gè)位要控制發(fā)聲。8253的主要任務(wù)就是產(chǎn)生所要求發(fā)

9、聲的不同頻率的方波。3、詳細(xì)設(shè)計(jì)3.1主要的宏和過(guò)程的實(shí)現(xiàn)3.1.1display顯示宏為將事先定義的數(shù)據(jù)段字符串顯示在屏幕上,定一個(gè)參數(shù)為b的宏。將b的地址傳到dx。隨后調(diào)用dos09號(hào)功能調(diào)用。將字符串顯示到屏幕。調(diào)用display的實(shí)例為: display info1 display info2 display info3 display muslist在此段代碼中,程序顯示提示作用的字符串和歌曲列表。display宏具體實(shí)現(xiàn)如下:display macro b lea dx,b mov ah,9 int 21h endm3.1.2address音樂(lè)地址宏歌曲包含節(jié)拍和頻率。此處定義的音

10、樂(lè)地址宏包含兩個(gè)參數(shù),將歌曲頻率地址導(dǎo)入si將歌曲節(jié)拍導(dǎo)入bp。當(dāng)選擇不同的歌曲時(shí),主程序調(diào)用該宏,將用戶要求的歌曲的頻率和節(jié)拍導(dǎo)入,以便在music中實(shí)現(xiàn)發(fā)聲。音樂(lè)地址宏實(shí)現(xiàn)如下:address macro a,b lea si,a lea bp,ds:b endm3.1.3music宏在address中,程序已經(jīng)將歌曲的首個(gè)頻率地址和首個(gè)節(jié)拍地址分別導(dǎo)入si、bp。為了檢測(cè)歌曲是否結(jié)束,在music中,首先將si傳遞到di,di與-1相減,如等于0,則得出該頻率定義為-1 。在歌曲頻率表定義中將-1定為該歌曲結(jié)束標(biāo)志,此時(shí)music跳出結(jié)束。若該頻率不為-1。調(diào)用通用發(fā)生程序gensoun

11、d,將該音符按照頻率和節(jié)拍表發(fā)聲。發(fā)聲后si、bp分別加2,跳轉(zhuǎn)到下一個(gè)音符的頻率和節(jié)拍,繼續(xù)檢測(cè)歌曲是否結(jié)束。如頻率不為0,繼續(xù)將該音符發(fā)聲,并循環(huán)此過(guò)程。具體實(shí)現(xiàn)方法如下:music proc near push ds sub ax,ax push ax freg: mov di,si cmp di,-1 je end_mus mov bx,ds:bp call gensound add si,2 add bp,2 jmp freg end_mus: ret music endp3.1.4通用發(fā)生程序gensound該發(fā)生程序是在修改beep發(fā)聲程序的基礎(chǔ)上,以實(shí)現(xiàn)為8088/86編寫(xiě)一個(gè)

12、任意頻率和任意持續(xù)時(shí)間的通用發(fā)聲程序。該程序包括以下三個(gè)步驟:(1)在8253/54 中的43端口送一個(gè)控制字0b6h(10110110b),該控制字對(duì)定時(shí)器2進(jìn)行初始化,使得定時(shí)器2準(zhǔn)備接受計(jì)數(shù)初值。(2)在8253/54中的42h端口裝入一個(gè)16位計(jì)數(shù)值,已建立將要產(chǎn)生的聲音頻率。(3)把輸出端口61h的0、1兩位置1,發(fā)出聲音。具體實(shí)現(xiàn)如下:gensound proc near push ax push bx push cx push dx push di mov al,0b6h out 43h,al mov dx,12h mov ax,348ch div di out 42h,al m

13、ov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,al wait1: mov cx,3314 call waitf delay1: dec bx jnz wait1 mov al,ah out 61h,al pop di pop dx pop cx pop bx pop ax ret gensound endp該gensound程序能產(chǎn)生1965535hz的聲音,這個(gè)頻率的下限是使除法不產(chǎn)生溢出的最小值。其上限65535是多余的,因?yàn)槿四苈?tīng)到的聲音最高頻率為20000hz。此外一般情況下,gensound程序產(chǎn)生的聲音不單單和頻率有

14、關(guān),還和cpu有關(guān)。cpu工作頻率越高,時(shí)延越短,產(chǎn)生的聲音越急促。為了使程序產(chǎn)生一個(gè)與cpu工作頻率無(wú)關(guān)的合適時(shí)延,在musci中調(diào)用了一個(gè)時(shí)間延時(shí)程序waitf。3.1.5waitf延時(shí)程序80x86的各種處理器采取了666mhz的工作頻率,loop指令的執(zhí)行時(shí)間在這些處理器上也不相同。為了建立一個(gè)與處理器無(wú)關(guān)的延時(shí),ibm采用了一種利用硬件產(chǎn)生時(shí)間延時(shí)的方法,即通過(guò)監(jiān)控端口61h和pb4,使pb4每15.08微秒觸發(fā)一次,一產(chǎn)生一個(gè)固定不變的時(shí)間基準(zhǔn)。在ibm pc at bios 的waitf子程序,就是一個(gè)產(chǎn)生nx15.08微秒時(shí)間演示的程序。調(diào)用waitf子程序時(shí),cx寄存器必須裝

15、入15.08微秒的倍數(shù)n。利用waitf子程序能獲得任意的時(shí)間延時(shí),而不必在考慮cpu的型號(hào)和工作頻率。具體實(shí)現(xiàn)如下:waitf proc near push ax waitf1: in al,61h and al,10h cmp al,ah je waitf1 mov ah,al loop waitf1 pop ax ret waitf endp3.1.6clear清屏程序當(dāng)程序初始化或用戶輸入錯(cuò)誤時(shí),程序調(diào)用clear清屏程序。清屏程序?qū)x、bx、cx、dx先入棧,以保存現(xiàn)場(chǎng),保證清屏后重新執(zhí)行不會(huì)出現(xiàn)錯(cuò)誤。隨后啟用bios功能調(diào)用,將屏幕初始化或上卷。其中al=0表示初始化窗口,al=

16、上卷行數(shù), bh=卷入行屬性,ch/cl=左上角行/列號(hào),dh/dl=右上角行/列號(hào)。該程序段表示從左起0行0列到右起24行79列全部清屏。將屏幕清空后重新將ax、bx、cx、dx出棧。clear proc near push ax push bx push cx push dx mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h pop dx pop cx pop bx pop ax ret clear endp3.1.7retu退出當(dāng)程序要求退出時(shí),主程序會(huì)調(diào)用retu進(jìn)行退出。retu程序內(nèi)容實(shí)

17、際為一個(gè)bios功能調(diào)用。retu: mov ah,4ch int 21h3.2主程序?qū)崿F(xiàn)3.2.1數(shù)據(jù)段定義數(shù)據(jù)段分別定義了info1、info2、info3 、info4、info5各字符串分別顯示程序運(yùn)行之初對(duì)用戶的提示。muslist 中顯示用戶能選擇的三首歌曲列表。程序用mus_freg、mus_time分別定義了音樂(lè)頻率和節(jié)拍。使得發(fā)聲程序可以按照理想的要求發(fā)出連續(xù)的樂(lè)曲。節(jié)拍和頻率定義原理如下:樂(lè)曲是按照一定的高低、長(zhǎng)短和強(qiáng)弱關(guān)系組成的音調(diào),在每一首樂(lè)曲中,每個(gè)音符的音高和音長(zhǎng)與發(fā)聲系統(tǒng)中的頻率、節(jié)拍有關(guān)。可參考下表:音名cdefgabcdefgabc唱名123456712345

18、67i頻率(hz)131147165175196220247262294330349392440492523其中,低音階從低音c(131hz)到中央c(262hz),高音階從中央c(262hz)到高音c(523hz)。組成樂(lè)曲的音符的頻率值和持續(xù)時(shí)間是樂(lè)曲程序發(fā)聲所必需的兩組數(shù)據(jù),頻率可以查上表,音符的持續(xù)時(shí)間根據(jù)樂(lè)曲的速度及每個(gè)音符的節(jié)拍數(shù)來(lái)確定。在4/4拍中,四分音符為一拍,每小節(jié)四拍,全音符持續(xù)四拍,二分音符持續(xù)二拍,四分音符持續(xù)一拍,八分音符持續(xù)半拍。如果給全音符分配1秒(100*10ms)的時(shí)間,則二分音符持續(xù)時(shí)間為0.5秒,四分音符持續(xù)時(shí)間為0.25秒,八分音符持續(xù)時(shí)間為0.125

19、秒。知道了音調(diào)及頻率、時(shí)間的關(guān)系后,可以按照樂(lè)曲的樂(lè)譜將每個(gè)音符的頻率和持續(xù)時(shí)間定義為兩個(gè)數(shù)據(jù)表,然后編寫(xiě)程序依次取出表中的頻率值和時(shí)間值。“瑪麗有只小羊羔”的樂(lè)譜如下:3 2 1 2 | 3 3 3 | 2 2 2 | 3 5 5 | 3 2 1 2 | 3 3 3 3 | 2 2 3 2 | 1 | 可設(shè)置該樂(lè)曲的頻率表如下:mus1_ f dw 330,294,262,294,3dup (330)dw 3dup (294),330,392,392 dw 330,294,262,294,4dup (330)dw 294,294,330,294,262,-l設(shè)置該樂(lè)曲的節(jié)拍時(shí)間表如下:一般延

20、遲時(shí)間取10ms的倍數(shù)。muslt dw 6 dup (25*8),50*8 dw 2 dup (25*8,25*8,50*8)dw 12 dup (25*8),100*83.2.2堆棧段定義程序定義了一個(gè)長(zhǎng)度了200的堆棧段,如下:stack segment db 200 dup (stack)stack ends3.2.3初始化程序初始化使用了bios功能調(diào)用。使用0ah號(hào)功能設(shè)置顯示方式。本程序?qū)︼@示要求較為簡(jiǎn)單,故使用40x25黑白文本、16級(jí)灰度方式顯示。若要求改變顯示方式,可以根據(jù)0ah功能設(shè)置表自行添加。start: mov ax,data mov ds,ax mov ah, 0

21、 mov al,00 int 10h 3.2.4程序執(zhí)行過(guò)程詳細(xì)參見(jiàn)附錄中input部分,以及程序流程圖。4、系統(tǒng)調(diào)試將源程序編寫(xiě)后,在pc機(jī)上編譯、連接、裝載。如圖4-1,圖4-2。圖4-1準(zhǔn)備編譯程序編譯正確圖4-2編譯連接正確待裝載成功后,運(yùn)行程序,運(yùn)行情況如圖4-3,圖4-4,圖4-5。顯示歌曲列表,提示用戶輸入圖4-3 程序初始界面清屏,提示輸入錯(cuò)誤,要求重新輸入圖4-4程序報(bào)錯(cuò)要求重新輸入歌曲播放完后,輸入q退出程序 圖4-5播放后退出5、收獲體會(huì)經(jīng)過(guò)一周的磨煉和努力,在老師的耐心指導(dǎo)和同學(xué)的熱情幫助下,無(wú)論從學(xué)習(xí)上還是從自身角度,我自認(rèn)都提高的非常迅速,發(fā)現(xiàn)了自己的能力和未被挖掘

22、的潛力,認(rèn)證了自身的堅(jiān)強(qiáng)與韌力,總結(jié)出只有在強(qiáng)壓與競(jìng)爭(zhēng)中才會(huì)有意想不到的收獲和進(jìn)步。這次匯編課程設(shè)計(jì)為我們提供了與眾不同的學(xué)習(xí)方法和學(xué)習(xí)機(jī)會(huì),讓我們從傳統(tǒng)的被動(dòng)授學(xué)轉(zhuǎn)變?yōu)橹鲃?dòng)求學(xué);從死記硬背的模式中脫離出來(lái),轉(zhuǎn)變?yōu)樵趯?shí)踐中學(xué)習(xí),增強(qiáng)了領(lǐng)悟、創(chuàng)新和推斷的能力。掌握自學(xué)的方法,形成工程理論整體模式,使工作、學(xué)習(xí)、生活都步入系統(tǒng)化流程;思考方式成熟,邏輯性規(guī)范、明確。這些方法的提高是終身受益的,我認(rèn)為這難得的一周,讓我真正懂得了生活和學(xué)習(xí)的基本規(guī)律。緊張忙碌的課程設(shè)計(jì)雖然在歷經(jīng)一個(gè)周的時(shí)間后結(jié)束了,完成了課程設(shè)計(jì)的任務(wù),但是從中發(fā)現(xiàn)的問(wèn)題也是值得去深思的。我想經(jīng)過(guò)這一個(gè)周的課程設(shè)計(jì)所發(fā)現(xiàn)的問(wèn)題對(duì)我們

23、會(huì)有很大的啟示,在以后的學(xué)習(xí)中也會(huì)大有幫助。在以后的學(xué)習(xí)中我會(huì)不斷的改進(jìn)學(xué)習(xí)方法,在實(shí)踐中學(xué)習(xí),不斷提高自我,完美自我,全面提高自己。6、附錄本程序的代碼如下:data segment info1 db 0dh,0ah,welcome to this programe!$ info2 db 0dh,0ah,there are some music!$ info3 db 0dh,0ah,please select which one to play!$ info4 db 0dh,0ah,input error!$ info5 db 0dh,0ah,please input again!$ mus

24、list db 0dh,0ah,a music:mary has a little ship db 0dh,0ah,b music:the boat on taihu lake db 0dh,0ah,c music:two tiger db 0dh,0ah,q exit db 0dh,0ah,$ ;* 音樂(lè)一瑪麗有只小羊羔mus_freg1 dw 330,294,262,294,3 dup (330) dw 3 dup (294),330,392,392 dw 330,294,262,294,4 dup (330) dw 294,294,330,294,262,-1mus_time1 dw 6

25、 dup (25*8),50*8 dw 2 dup (25*8,25*8,50*8) dw 12 dup (25*8),100*8;* *音樂(lè)二 太湖船mus_freg2 dw 330,392,330,294,330,392,330,294,330 dw 330,392,330,294,262,294,330,392,294 dw 262,262,220,196,196,220,262,294,332,262,-1 mus_time2 dw 3 dup(50),25,25,50,25,25,100 dw 2 dup(50,50,25,25),100 dw 3 dup(50,25,25),100

26、 ;*音樂(lè)三 兩只老虎mus_freg3 dw 262,294,330,262 dw 262,294,330,262 dw 330,349,392 dw 330,349,392 dw 392,440,392,349,330,262 dw 392,440,392,349,330,262 dw 294,196,262 dw 294,196,262,-1 mus_time3 dw 50,50,100,100,100 dw 100,100,50,50,100,100 dw 100,100,100,50,50,100 dw 100,100,100,100,100,50 dw 50,100,100,100

27、,100,100 data ends ;*stack segment db 200 dup (stack)stack endscode segment assume ds:data,ss:stack,cs:code start: mov ax,data mov ds,ax mov ah, 0 mov al,00 int 10h ;* 定義一個(gè)宏顯示display macro b lea dx,b mov ah,9 int 21h endm ;*音樂(lè)地址宏 address macro a,b lea si,a lea bp,ds:b endm ;* display info1 display i

28、nfo2 display info3 display muslist input: mov ah,01h int 21h cmp al,q jz retu cmp al,a jnz b0 address mus_freg1,mus_time1 call music jmp exit1 b0: cmp al,b jnz c0 address mus_freg2,mus_time2 call music jmp exit1 c0: cmp al,c jnz exit address mus_freg3,mus_time3 call music exit1: display info5 jmp input ex

溫馨提示

  • 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)論