版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 摘要1</b></p><p><b> 緒論2</b></p><p><b> 1 設(shè)計思路3</b></p><p><b> 2 樂理知識4</b
2、></p><p> 2.1 樂理知識簡述4</p><p> 2.2 音符與頻率的關(guān)系4</p><p><b> 3 設(shè)計原理4</b></p><p> 3.1 8259A的功能5</p><p> 3.2 8253 的功能6</p><p>
3、; 3.3 發(fā)聲原理8</p><p> 3.4 DOS功能調(diào)用11</p><p> 3.4.1 1號功能調(diào)用11</p><p> 3.4.2 2號功能調(diào)用11</p><p> 3.4.3 9號功能調(diào)用12</p><p> 3.4.4 10號功能調(diào)用12</p>&
4、lt;p> 3.4.5 16號功能調(diào)用13</p><p> 3.5 子程序調(diào)用14</p><p><b> 4 程序13</b></p><p> 4.1 程序流程圖13</p><p> 4.2 程序代碼14</p><p> 4.3 程序的運行20</
5、p><p><b> 結(jié)束語23</b></p><p><b> 致謝24</b></p><p><b> 參考文獻24</b></p><p><b> 摘要</b></p><p> 用計算機來解決實際問題,需要
6、編寫程序。程序是由指令組成的,一條條指令規(guī)定了計算機究竟要執(zhí)行什么樣的操作,計算機只要按編寫的順序執(zhí)行完程序中的指令,問題也就解決了。匯編語言是一種功能很強的程序設(shè)計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。</p><p> 本設(shè)計是基于匯編語言與接口技術(shù)的音樂盒設(shè)計。依據(jù)PC機系統(tǒng)發(fā)聲的基本原理,制作成多功能音樂盒。</p><p> 該音樂盒主要實現(xiàn)的功能有:<
7、;/p><p> 1、程運行后首先在屏幕上顯示出樂曲菜單,制作者姓名。</p><p> 2、用鍵盤鍵A、B、C選擇相應(yīng)的樂曲。</p><p> 3、輸入錯誤時要有適當(dāng)提示,并允許重新輸入。</p><p> 4、選擇Q鍵后可以正常退出程序。</p><p> 5、允許中斷。可以在沒有聽完整首歌曲時人為中斷聽下
8、一首歌曲,或退出。</p><p> 本設(shè)計利用8255A、8253的工作原理發(fā)聲。用masm、link軟件對音樂盒源程序進行調(diào)試。</p><p> 關(guān)鍵詞:匯編語言 計算機接口技術(shù) 音樂盒 8253 8255A</p><p><b> 緒論</b></p><p> 編寫程序的語言有三種:高級語言,匯編語言
9、和機器語言。機器語言是一種面向機器的程序設(shè)計語言。指令系統(tǒng)是機器語言的基礎(chǔ),其指令是由0和1構(gòu)成的二進制代碼串,其編寫的程序可以被計算機直接識別,直接執(zhí)行。一般說來,機器言程序的執(zhí)行速度快,占用的內(nèi)存空間小。匯編又稱為符號語言,實際上是一種符號化的機器語言。匯編語言比機器語言直觀,容易記憶和理解,用匯編語言編寫的程序也比機器語言程序易讀、易檢查、易修改。匯編語言程序設(shè)計在微機應(yīng)用中占有重要地位.一般來說,凡是在微機中涉及與硬件電路有關(guān)的
10、應(yīng)用系統(tǒng),如微機控制系統(tǒng)中的檢測和控制部分,儀器儀表中的計算機控制和數(shù)據(jù)處理部分,家用電器的計算機控制部分等,其應(yīng)用程序部分都是用匯編語言來編寫的。</p><p> 在計算機系統(tǒng)中除了CPU以及基本硬件之外,還有各種外部設(shè)備,比如顯示器、鍵盤、打印機、磁盤驅(qū)動器、光盤驅(qū)動器等。這些外部設(shè)備需要與CPU進行大量的信息交換,根據(jù)CPU的要求進行各種操作。進行信息交換時,由于各種原因(比如電平、時序等的不同),這些
11、外部設(shè)備不能與CPU直接相連,它們之間的信息交換必須經(jīng)過一個中間電路,也就是接口電路才能實現(xiàn)。</p><p> 本設(shè)計是基于匯編基礎(chǔ)上,利用接口電路中的8253,8255功能使電腦發(fā)聲而設(shè)計的音樂盒。</p><p> 音樂盒的主要功能是,根據(jù)按鍵不同,而選擇播放不同的歌曲,和退出等操作。</p><p><b> 1 設(shè)計思路</b>
12、</p><p> PC的揚聲器驅(qū)動系統(tǒng)如圖1-1所示。</p><p> 圖1-1 PC的揚聲驅(qū)動系統(tǒng) </p><p> 揚聲器的發(fā)聲是由輸出寄存器(即8255A的PB口)的兩位進行控制的。輸出寄存器的端口地址為61H。</p><p> 揚聲器發(fā)聲最簡單的方式:直接對端口61H的D1位交替輸出0或1(同時61H的D0位清0
13、),使揚聲器交替地通與斷,推動揚聲器發(fā)聲。</p><p> 由于揚聲器總是隨時可用的,因此CPU可用直接I/O方式對其進行操作。</p><p> 8253定時計數(shù)器的計數(shù)通道2用于提供系統(tǒng)的揚聲器音頻信號,但8253計數(shù)器通道2輸出的方波受8255A PB0輸出高電平時才允許計數(shù)通道2的方波輸出。該方波又與PB1相與后送揚聲器的驅(qū)動電路,去驅(qū)動揚聲器發(fā)聲。一般情況下,可讓PB0輸出
14、高電平,通過對8253編程設(shè)置方波輸出頻率以控制發(fā)聲頻率。通過控制8255A PB1輸出以控制發(fā)聲時間。</p><p> 8253計數(shù)值的計算方法為:</p><p> 計數(shù)值=時鐘頻率÷音符頻率(時鐘頻率=1.19318 MHz=1234DCH)</p><p> 所以利用8255和8253來制作音樂盒,詳細步驟見下面設(shè)計原理部分.</p&
15、gt;<p><b> 2樂理知識</b></p><p> 2.1 樂理知識簡述</p><p> 1 2 3 4 5 6 7</p><p> do remifa solla si</p><p> 七個音不
16、都一樣高,而是從左到右一個比一個高上去的,一這七個音為基礎(chǔ),在它們的上方或下方加圓點來表明更高或更低的音,上方的圓點叫“高音點”下方加的圓點叫“低音點” 。</p><p> 長短音:音樂中的音不光有高低,還要有長短,一個音可以唱得時間很長,也可以唱得很短促。長短音的標記方法,主要用“增時線”和“減時線” ,加寫在音的右邊或下邊,如在5的右邊加寫一條橫線(5—),就使5延長了一倍,要是在5的下邊寫一條橫線( 5
17、 ),就使5減短了一半,也即減短1/2。附點在音符右方加一個圓點,這個音叫“附點音符” ,附點的作用是把音符的時值延長1/2。</p><p> 2.2 音符與頻率的關(guān)系</p><p> 不包括鋼琴鍵盤的黑鍵,用簡譜表示的C大調(diào)音符與頻率近似值的對應(yīng)關(guān)系如下:</p><p><b> .</b></p><p>
18、; 音符 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1</p><p> . . . . . . .</p><p> 頻率131 147 165 175 196 220 247 ?262 294 ?330 349 392 440 494 523</p><p>&l
19、t;b> 3 設(shè)計原理</b></p><p> 3.1 8259A的功能</p><p> 8255A是一種功能很強的可編程并行接口芯片,采用NMOS工藝制造,它有三個8位并行輸入/輸出端口;可工作于三種工作方式,分別為方式0、方式1、方式2;能按無條件傳送、查詢傳送和中斷傳送方式進行數(shù)據(jù)傳送。</p><p> 8255A的內(nèi)部結(jié)構(gòu)如圖
20、3-1所示。 </p><p> 圖3-1 8255A的內(nèi)部結(jié)構(gòu)</p><p> 8255A的功能如表3-1所示</p><p> 表3-1 8255A的端口尋址和操作功能表</p><p> 3.2 8253的功能</p><p><b> 8253的內(nèi)部結(jié)構(gòu)</b></p&
21、gt;<p> 8253的內(nèi)部結(jié)構(gòu)如圖3-2a所示</p><p> 圖3-2a 8253的內(nèi)部結(jié)構(gòu)</p><p> 8253讀/寫邏輯信號組合的功能以及各計數(shù)器通道、控制字寄存器在PC機中的地址分配如表3-2a所示</p><p> 表3-2a 8253讀/寫邏輯信號組合功能及地址分配</p><p><b
22、> 8253的控制字</b></p><p> 8253的控制字用于選擇哪個計數(shù)器通道工作,三個通道可同時工作,但是要分別進行初始化;用于規(guī)定讀/寫操作格式或類型,8253可以有8位的計數(shù)值或16位的計數(shù)值,可以按二進制計數(shù)或按二—十進制計數(shù);用于選擇工作方式,8253共有六種工作方式。 8253是由主機編程設(shè)定的,通過把一個8位的控制字寫入8253的控制字寄存器,使8253按照某種給定的方
23、式工作??刂谱值亩x如圖3-2b所示。 </p><p> 圖3-2b 8253的控制字</p><p><b> 3.3 發(fā)聲原理</b></p><p> 8253在PC機中的應(yīng)用</p><p> IBM PC/XT機系統(tǒng)板上使用了一片8253,其連接如圖3-3所示。計數(shù)器通道2用于驅(qū)動揚聲器發(fā)聲。825
24、3的端口地址范圍是40H~43H,片選</p><p> 圖3-3 PC/XT中的8253</p><p> 單拍脈沖的寬度=n1×輸入時鐘CLK的周期=n1×Tclk=n1×(1/Fclk)</p><p> n1=單拍脈沖的寬度/輸入時鐘CLK的周期</p><p><b> 計數(shù)器2的發(fā)
25、聲程序</b></p><p> 計數(shù)器2的輸出送往揚聲器發(fā)聲電路。門控信號GATE2接8255并行接口電路的PB0,因此計數(shù)器2的計數(shù)過程將受到PB0的控制,而PB0又受I/O端口61H的D0位的控制, 當(dāng)PB0=1時,OUT2才能輸出方波。OUT2和PB1經(jīng)過一個與門接至揚聲器驅(qū)動電路。因此OUT2也將受到PB1的控制,而PB1又受I/O端口61H的D1位的控制。ROM-BIOS中的發(fā)聲子程序B
26、EEP使計數(shù)器2工作于方式3,產(chǎn)生約為1 kHz的方波,程序如下:</p><p><b> BEEP PROC</b></p><p> MOVAL, 10110110B ;計數(shù)器2,方式3,16位計數(shù),二進制計數(shù)</p><p> OUT 43H, AL;寫入控制字</p><p> M
27、OV AX, 0533H ;計數(shù)初值為0533H=1331(1.193 18 MHz/1331=896 Hz)</p><p> OUT 42H, AL;寫入計數(shù)初值低8位</p><p> MOV AL, AH</p><p> OUT 42H, AL ;寫入計數(shù)初值高8位</p><p> IN
28、 AL, 61H ;讀8255端口B的原值</p><p> MOV AH, AL ;暫存AH</p><p> OR AL, 03H ;使PB0=1、PB1=1</p><p> OUT 61H, AL ;輸出,使揚聲器發(fā)聲</p><p> SUB CX, CX <
29、;/p><p> LOP: LOOP LOP;延時</p><p> DEC BL ;BL值由入口參數(shù)提供,決定發(fā)聲長短</p><p> JNZ LOP ;BL=6發(fā)長聲,BL=1發(fā)短聲</p><p> MOV AL, AH</p><p> OUT 6
30、1H, AL ;恢復(fù)8255端口B的原值,停止發(fā)聲</p><p> RET ;返回 </p><p> BEEP ENDP </p><p> 利用PC機中的定時器/計數(shù)器電路8253可以使揚聲器發(fā)聲并且還可以用來演奏簡單的樂曲。</p><p><b> 聲音的產(chǎn)生</b><
31、/p><p> 在PC機中產(chǎn)生聲音可以通過使用8253的計數(shù)器2,工作于方式3來實現(xiàn)。設(shè)置控制字的指令為</p><p> MOV AL,0B6H ;計數(shù)器2,方式3,16位計數(shù),二進制計數(shù)</p><p> OUT 43H,AL</p><p> 設(shè)置好控制字后要根據(jù)聲音的頻率對計數(shù)器2(也就是42H端口),設(shè)定對應(yīng)
32、的計數(shù)初值。指令如下:</p><p> MOV AL,計數(shù)初值低8位</p><p> OUT 42H,AL</p><p> MOV AL,計數(shù)初值高8位</p><p> OUT 42H,AL</p><p> 然后通過設(shè)定PC機中的并行接口電路8255的PB0、PB1,打開揚聲器的門電
33、路,就可以發(fā)出該頻率的聲音了。實現(xiàn)該功能的指令如下:</p><p> IN AL, ?61H;讀取8255端口B的值</p><p> MOV AH, ?AL;暫存AH</p><p> OR AL, 03H;使PB0=1、PB1=1</p><p> OUT 61H, AL;輸出,使揚聲器發(fā)聲</
34、p><p> 如果提供給8253計數(shù)器2的CLK的時鐘頻率為1 193 180 Hz,即1234DCH,并把要求發(fā)出的聲音的頻率值放入DI中,使AX獲得對應(yīng)的計數(shù)初值的指令為</p><p> MOV DX,12H</p><p> MOV AX,34DCH</p><p><b> DIV ??DI</b><
35、/p><p> 上述指令執(zhí)行后計數(shù)初值在AX中,然后可以分別按低字節(jié)和高字節(jié)輸出至42H端口,使計數(shù)器產(chǎn)生所需頻率的聲音(音符)。在實際應(yīng)用中,計數(shù)初值要根據(jù)實際系統(tǒng)中的時鐘頻率來計算。</p><p><b> 延時程序及其作用</b></p><p> 當(dāng)時鐘為1 193 180 Hz時,延時10 ms可用如下延時程序?qū)崿F(xiàn):</p&
36、gt;<p> DELAY:MOV CX,2801</p><p> LOP10:?LOOP LOP10</p><p> 如果實際應(yīng)用環(huán)境中的時鐘頻率較高,則應(yīng)重新計算并設(shè)置延時時間。</p><p> 編寫演奏樂曲需要把與音符所對應(yīng)的頻率放在FREQ表中,把與音符所對應(yīng)的節(jié)拍(延時次數(shù)值)放在TIME表中。然后由主程序控制,逐一按音符的
37、頻率和節(jié)拍值,使揚聲器發(fā)出聲音。當(dāng)與音符對應(yīng)的頻率值為0時,停止演奏。</p><p> 子程序PLAY的功能是使揚聲器發(fā)出聲音,演奏樂曲。由DI指定音符的頻率,BX指定與音符對應(yīng)的節(jié)拍。SI指向頻率表FREQ,BP指向節(jié)拍表TIME。頻率表以0結(jié)尾,用于作為程序結(jié)束的條件:如果取來的頻率值為0,則程序結(jié)束。</p><p> 3.4 DOS功能調(diào)用</p><p&
38、gt; 3.4.1 1號功能調(diào)用</p><p> 從鍵盤輸入一個字符(1號調(diào)用)</p><p><b> 調(diào)用格式:</b></p><p> MOV AH,1</p><p><b> INT 21H</b></p><p> 掃描鍵盤將從鍵盤輸入
39、的一個字符的ASCII碼送入AL中(回顯 )。</p><p> 3.4.2 2號功能調(diào)用</p><p> 屏幕顯示一個字符(2功能號調(diào)用)</p><p><b> 調(diào)用格式:</b></p><p> MOV AH,2</p><p> MOV DL,字符的ASCII碼&
40、lt;/p><p><b> INT 21H</b></p><p> 3.4.3 9號功能調(diào)用</p><p> 屏幕顯示一個字符串(9功能號調(diào)用)</p><p><b> 調(diào)用格式:</b></p><p><b> MOV AH,9</b
41、></p><p> MOV DX,字符串的首地址(偏移地址) </p><p><b> INT 21H</b></p><p> 3.4.4 10號功能調(diào)用</p><p> 從鍵盤輸入字符串 (10功能號調(diào)用)</p><p> 功能: 從鍵盤接收字符串送
42、入內(nèi)存的輸入緩沖區(qū),同時送顯示器顯示。</p><p><b> 調(diào)用前要求: </b></p><p> 先定義一個輸入緩沖區(qū) MAXLEN DB 100 ;第1個字節(jié)指出緩沖區(qū)能容納的字符個數(shù),即緩沖區(qū)長度,不能為0 </p><p> AC
43、LEN DB ? ;第2個字節(jié)保留,以存放實際輸入的字符個數(shù) </p><p> STRING DB 100 DUP(?);第3個字節(jié)開始存放從鍵盤輸入的字符串。</p><p> 調(diào)用格式: LEA DX
44、,MAXLEN(緩沖區(qū)首偏移地址) </p><p> MOV AH,10 </p><p><b> INT 21H </b></p><p> 注意:調(diào)用時,要求DS:DX指向輸入緩沖區(qū) </p><p> 3.4.5 16號功能調(diào)用<
45、;/p><p> 鍵盤驅(qū)動程序 (16號功能調(diào)用)</p><p> 1、當(dāng)某個BIOS程序中具有多種不同功能時,用不同的編號——功能號加以區(qū)分,并約定功能號存放在寄存器AH中。其調(diào)用方法與DOS功能調(diào)用類似:</p><p> (1) 功能號→AH </p><p>
46、(2) 入口參數(shù)→指定寄存器</p><p> (3) 指令“INT n”實現(xiàn)對BIOS子程序的調(diào)用 </p><p> 下面以鍵盤I/O中斷調(diào)用為例介紹BIOS中斷調(diào)用的方法。 </p><p><b> 3.5 子程序調(diào)用</b></p><p><b> 子程序的概念
47、</b></p><p> 在程序設(shè)計中,我們會發(fā)現(xiàn)一些多次無規(guī)律重復(fù)的程序段或語句序列。解決此類問題一個行之有效的方法就是將它們設(shè)計成可供反復(fù)調(diào)用的獨立的子程序結(jié)構(gòu),以便在需要時調(diào)用。在匯編語言中,子程序又稱過程。調(diào)用子程序的程序稱為主調(diào)程序或主程序</p><p><b> 子程序的結(jié)構(gòu):</b></p><p> 1、
48、子程序與循環(huán)程序的區(qū)別</p><p> 2、子程序的調(diào)用與返回</p><p> 3、入口參數(shù)與出口參數(shù)的傳遞</p><p> 4、現(xiàn)場的保護與恢復(fù)</p><p><b> 子程序的定義</b></p><p> 子程序的定義是由過程定義偽指令PROC和ENDP來完成的。其格式如下
49、:</p><p> 過程名 PROC [NEAR/FAR]</p><p><b> 子程序體</b></p><p><b> 過程名 ENDP</b></p><p> 其中PROC表示過程定義開始,ENDP表示過程定義結(jié)束。過程名是過程入口地址的符號表示。</p>
50、<p> 一般過程名同標號一樣,具有三種屬性,即段屬性、偏移地址屬性以及類型屬性</p><p><b> 子程序體一般包括:</b></p><p><b> 1、保護現(xiàn)場</b></p><p> 2、根據(jù)入口參數(shù)進行處理</p><p><b> 3、產(chǎn)生出口參數(shù)
51、</b></p><p><b> 4、恢復(fù)現(xiàn)場</b></p><p><b> 5、RET</b></p><p> 子程序的調(diào)用與返回:</p><p><b> 調(diào)用</b></p><p> CALL 標號</
52、p><p><b> 功能:</b></p><p> 1、主程序的下一條指令入棧,即IP指針入棧</p><p> 2、轉(zhuǎn)向子程第的第一條指令,既標號指定的子程序第1條指令的偏移地址送IP</p><p><b> 返回</b></p><p><b> R
53、ET</b></p><p> 功能:返回到主程序CALL指令的下一條指令,即將下一條指令地址送IP。 </p><p><b> 4 程序</b></p><p> 4.1 程序流程圖 </p><p><b> 4.2 程序代碼</b></p><p&g
54、t; DATA SEGMENT</p><p> STR1 DB 0DH,0AH,'welcom you come to here! Wenguanghong dian zi gong cheng xi 09 dian 301ban STR2 DB 0DH,0AH,'this is a music program !$'</p><p> STR3 DB 0D
55、H,0AH,'please select !$'</p><p> STR4 DB 0DH,0AH,'input error !$'</p><p> STR5 DB 0DH,0AH,'please input again !$'</p><p> STR6 DB 0DH,0AH,'A shao nian
56、 zhuang zhi bu yan chou $'</p><p> STR7 DB 0DH,0AH,'B wo niu yu huang li niao $'</p><p> STR8 DB 0DH,0AH,'C mei li de tong hua $'</p><p> STR9 DB 0DH,0AH,'
57、;Q EXIT $'</p><p> FREQ1 DW 294,392,392,294,330,262,220,262,196,262,262,220,262,294,330,392,294,294</p><p> DW 294,392,392,294,330,262,220,262,220,196,196,220,262,294,330,220,196,196</p
58、><p> DW 392,392,392,330,392,440,392,330,440,440,392,330,294,392,294,330,262,220</p><p> DW 392,220,262,220,392,440,392,330,392,294,392,392,392,330,392,440,440,392</p><p> DW 330,44
59、0,440,392,440,392,330,294,294,392,294,330,262,220,196,220,262,220,294,262,294,220,196</p><p> DW 392,294,330,262,220,196,220,262,220,294,262,294,220,196,196,0</p><p> TIME1 DW 25,25,37,6,6,25
60、,12,12,50,19,6,12,12,25,12,12,50,50</p><p> DW 25,25,37,6,6,25,12,12,50,19,6,12,12,12,25,12,50,50</p><p> DW 19,6,12,6,6,37,12,12,12,6,6,12,50,12,6,6,12,12</p><p> DW 19,6,25,12,
61、12,6,6,6,6,50,19,6,12,6,6,12,25,12</p><p> DW 12,12,12,6,6,6,6,12,25,12,6,6,12,12,19,6,25,12,12,6,6,12,50</p><p> DW 12,6,6,12,12,19,6,25,12,12,6,6,12,50,50</p><p> FREQ2 DW 392
62、,392,392,392,330,392,262,440,392,392,392,392,392,330,294,262,330,294</p><p> DW 294,330,392,392,392,330,330,294,262,262,294,330,262,262,220,196,220,196</p><p> DW 392,392,392,330,392,262,440,3
63、92,392,392,392,392,330,294,262,330,294</p><p> DW 262,330,294,294,330,392,392,330,330,294,262,262,294,330,262,262,220</p><p> DW 196,392,392,392,392,330,294,262,440,392,392,440,262,294,262,294
64、,330,294,262,0</p><p> TIME2 DW 6,12,6,12,6,6,12,12,25,6,12,6,12,6,6,12,12,25</p><p> DW 19,6,12,6,6,12,6,6,12,12,19,6,12,6,6,12,12,25</p><p> DW 6,12,6,12,6,6,12,12,25,6,12,6,
65、12,6,6,12,12,25</p><p> DW 12,12,12,12,12,6,6,12,12,19,6,12,6,6</p><p> DW 12,12,25,6,12,6,12,6,6,12,12,12,6,6,12,12,12,12,25,25,50</p><p> FREQ3 DW 220,330,247,220,262,294,262,3
66、30,220,440,392,440,392,294,349,330,330,330</p><p> DW 220,440,392,294,330,349,330,294,262,220,330,294,247,220,220</p><p> DW 220,247,262,294,330,262,247,196,220,262,294,330,330</p><
67、p> DW 220,247,262,294,330,262,247,196,220,262,294,262,262</p><p> DW 220,247,262,294,330,262,247,196,220,262,294,262,330,330</p><p> DW 220,247,262,294,330,262,247,196,220,262,294,262,262,
68、262</p><p> DW 262,262,294,330,262,247,196,262,247,196,247,220,220,220,0</p><p> TIME3 DW 25,25,50,12,12,19,6,50,25,25,12,12,12,12,12,12,25,50</p><p> DW 25,25,19,6,12,12,25,25,
69、50,25,25,37,12,50,25</p><p> DW 12,12,12,12,12,12,25,25,12,12,12,12,25</p><p> DW 12,12,12,12,12,12,25,25,12,12,12,12,25</p><p> DW 12,12,12,12,12,12,25,25,12,12,6,12,12,25</p
70、><p> DW 12,12,12,12,12,12,25,25,6,6,12,12,12,50</p><p> DW 12,6,6,12,12,25,25,25,25,50,12,12,25,50</p><p><b> DATA ENDS</b></p><p> STACK SEGMENT</p>
71、;<p> DB 200 DUP (?)</p><p> STACK ENDS</p><p> CODE SEGMENT</p><p> ASSUME DS:DATA,SS:STACK,CS:CODE</p><p> START:MOV AX,DATA</p><p> MOV DS,
72、AX </p><p> MOV DX,OFFSET STR1 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,STR2 </p><p><
73、b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,STR3 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p>
74、;<p> LEA DX,STR6 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,STR7 </p><p><b> MOV AH,9</b><
75、/p><p><b> INT 21H</b></p><p> LEA DX,STR8 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,STR9 &
76、lt;/p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> MOV AH,02H</p><p> MOV DL,0DH</p><p><b> INT 21H</b></p&
77、gt;<p> MOV AH,02H</p><p> MOV DL,0AH</p><p><b> INT 21H</b></p><p><b> JMP INPUT</b></p><p> XSH:MOV AH,02H</p><p> M
78、OV DL,0DH</p><p><b> INT 21H</b></p><p> MOV AH,02H</p><p> MOV DL,0AH</p><p><b> INT 21H</b></p><p> LEA DX,STR5 </p>
79、;<p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> MOV AH,02H</p><p> MOV DL,0DH</p><p><b> INT 21H</b></p><
80、;p> MOV AH,02H</p><p> MOV DL,0AH</p><p><b> INT 21H</b></p><p> INPUT: MOV AH,1 </p><p><b> INT 21H</b></p><p>
81、 CMP AL,'Q'</p><p> JE EXIT </p><p> CMP AL,'A'</p><p><b> JNE N1</b></p><p> LEA SI,FREQ1 </p><p> LEA
82、 BP,TIME1</p><p> LOP:MOV DI,[SI]</p><p><b> CMP DI,0</b></p><p><b> JZ XSH</b></p><p> MOV BX,DS:[BP]</p><p><b> CALL
83、PLAY</b></p><p><b> ADD SI,2</b></p><p><b> ADD BP,2</b></p><p><b> JMP LOP</b></p><p><b> JMP XSH</b></p&g
84、t;<p> N1:CMP AL,'B'</p><p><b> JNE N2</b></p><p> LEA SI,FREQ2</p><p> LEA BP,TIME2</p><p><b> JMP LOP</b></p><p
85、> N2:CMP AL,'C'</p><p><b> JNE ERROR</b></p><p> LEA SI,FREQ3</p><p> LEA BP,TIME3</p><p><b> JMP LOP</b></p><p>&l
86、t;b> ERROR:</b></p><p> LEA DX,STR4</p><p> MOV AH,9 </p><p><b> INT 21H</b></p><p> LEA DX,STR5 </p><p><b> MOV AH,
87、9</b></p><p><b> INT 21H</b></p><p> LEA DX,STR6 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p>
88、LEA DX,STR7 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LEA DX,STR8 </p><p><b> MOV AH,9</b></p><p&
89、gt;<b> INT 21H</b></p><p> LEA DX,STR9 </p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> MOV AH,02H</p><p&g
90、t; MOV DL,0AH</p><p><b> INT 21H</b></p><p> JMP INPUT</p><p> JMP INPUT </p><p> EXIT:MOV AH,4CH </p><p> INT 21H </p>
91、;<p> PLAY PROC </p><p><b> PUSH AX</b></p><p><b> PUSH BX</b></p><p><b> PUSH CX</b></p><p><b> PUSH DX</
92、b></p><p><b> PUSH DI</b></p><p> MOV AH,1 </p><p><b> INT 16H</b></p><p> JZ PLAY1 </p><p> JMP START </p><
93、p> play1:MOV AL,0B6H</p><p> OUT 43H,AL</p><p> MOV DX,12H</p><p> MOV AX,348CH</p><p><b> DIV DI</b></p><p> OUT 42H,AL</p>&l
94、t;p><b> MOV AL,AH</b></p><p> OUT 42H,AL</p><p><b> IN AL,61H</b></p><p><b> MOV AH,AL</b></p><p><b> OR AL,03H</b&
95、gt;</p><p> OUT 61H,AL</p><p> CALL DELAY1</p><p><b> MOV AL,AH</b></p><p> OUT 61H,AL</p><p><b> POP DI</b></p><p&
96、gt;<b> POP DX</b></p><p><b> POP CX</b></p><p><b> POP BX</b></p><p><b> POP AX</b></p><p><b> RET </b>
97、</p><p> PLAY ENDP</p><p> DELAY1 PROC</p><p><b> SHL BX,1</b></p><p><b> SHL BX,1</b></p><p><b> SHL BX,1</b>
98、</p><p><b> SHL BX,1</b></p><p><b> SHL BX,1</b></p><p><b> SHL BX,1</b></p><p><b> SHL BX,1</b></p><p>
99、;<b> SHL BX,1</b></p><p> DELAY:MOV CX,0FFFFH</p><p> LOP10:LOOP LOP10</p><p><b> DEC BX</b></p><p><b> JNZ DELAY</b></p>
100、<p><b> RET</b></p><p> DELAY1 ENDP</p><p> CODE ENDS</p><p><b> ENDSTART</b></p><p><b> 4.3程序的運行</b></p>&l
101、t;p> 如上編寫好程序后,在運行里輸入cmd后,回車輸入程序文件夾所在的盤符加冒號E:,回車,cd空格輸入文件夾名lzq,然后輸入masm,回車,輸入程序所在的記事本名zq后,回車,回車,回車,再回車,無誤后顯示如圖</p><p> 然后輸入link空格記事本名,回車如圖</p><p> 然后回車,回車,再回車,如圖</p><p> 后輸入zq
102、回車,如圖</p><p> 然后就可以欣賞歌曲了,輸入大寫字母A播放歌曲,《少年壯志不言愁》,輸入B播放《蝸牛與黃鸝鳥》,輸入C播放《美麗的童話》,輸入Q退出播放,其中可以在播放歌曲過程中中斷,進行下一首要播放的歌曲(16號功能的調(diào)用)。</p><p><b> 結(jié)束語</b></p><p> 本次畢業(yè)設(shè)計論文算是畫上了句號,感覺如
103、卸重擔(dān),總算是松了口氣,在做這個畢設(shè)時,</p><p> 不知我熬了多少個日日夜夜,每晚都要熬到深夜才入睡。從中我體會到了辛苦,還有喜悅。當(dāng)我一遍一遍的去編寫程序,又一遍一遍的修改時,真的很煩,很累,很想放棄,當(dāng)?shù)玫街笇?dǎo)老師的指導(dǎo)時,我豁然開朗,再回去修改了一翻,終于完成了,達到了我想要的結(jié)果。當(dāng)時真的十分高興,那種成功的喜悅不能言表。</p><p> 除了那些感受之外,我還學(xué)到了
104、很多知識,專業(yè)課方面的知識有:更近一步的學(xué)習(xí)了匯編語言中DOS功能號的調(diào)用,子程序的調(diào)用等,還有計算機接口技術(shù)里8255A的功能作用,8253的功能作用,及發(fā)聲原理等,除了專業(yè)課的知識外,還學(xué)到了音樂方面的樂理知識,有指導(dǎo)老師講的,還有自己查資料學(xué)的,使我不再是音樂盲了。</p><p> 寫論文的時候,使我提高了打字速度,進一步熟練了五筆打字法。在制圖過程中,我學(xué)會了畫圖,才道自己也可以制作課件。</p
105、><p> 完成畢業(yè)設(shè)計,離不開指導(dǎo)老師的耐心和細心指導(dǎo),使我少做了很多無用功,使我受益匪淺。在此表示十分的感謝。</p><p> 雖然經(jīng)過細心完成但出錯之處在所難免,還懇請老師在此批改我的論文。</p><p> 完成了這次的畢設(shè),只是一小步的進步,我還要在以后的時間里更進一步的去學(xué)習(xí)我的專業(yè)知識,只有不斷的去學(xué)習(xí),才能使自己不斷地進步。學(xué)無止境,人生有涯,而
106、知識無涯。</p><p><b> 致謝</b></p><p> 完成這個畢業(yè)設(shè)計離不開我的導(dǎo)師xx老師的耐心的指導(dǎo),和多次辛苦的批改,在此表示衷心的感謝!到一聲老師您辛苦了!</p><p> 在xx老師的指導(dǎo)中,我學(xué)到了好多以前沒學(xué)到的知識比如音樂方面的知識、16號功能的調(diào)用,讓我的程序如我所愿、EDIT命令的應(yīng)用等,使我受益匪淺
107、。</p><p> 大學(xué)生活一晃而過,回首走過的歲月,心中倍感充實,當(dāng)我寫完這篇畢業(yè)論文的時候,有一種如釋重負的感覺,感慨良多。</p><p> 再次誠摯的感謝我的論文指導(dǎo)老師xx老師。她在忙碌的教學(xué)工作中擠出時間來審查、修改我的論文。還有教過我的所有老師們,你們嚴謹細致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;他們循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。</p&g
108、t;<p> 感謝三年中陪伴在我身邊的同學(xué)、朋友,感謝他們?yōu)槲姨岢龅挠幸娴慕ㄗh和意見,有了他們的支持、鼓勵和幫助,我才充實的度過了三年的學(xué)習(xí)生活,給我的大學(xué)生活,畫上了圓滿的句號。謝謝!</p><p><b> 參考文獻</b></p><p> [1]王成端.匯編語言程序設(shè)計[M].北京:高等教育出版社,2003</p><
109、p> [2]王成端.微機接口技術(shù)[M].2版.北京:高等教育出版社,2004</p><p> [3]丁輝.匯編語言程序設(shè)計.北京:電子工業(yè)出版社,2001</p><p> [4]張念準,江浩.USB總線開發(fā)技術(shù)指南.北京:國防工業(yè)出版社,</p><p> [5]莊琴生.計算機接口技術(shù).西安:電子科技大學(xué)出版社.2004</p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 音樂盒畢業(yè)設(shè)計論文
- 電子音樂盒的設(shè)計【畢業(yè)論文】
- 音樂盒畢業(yè)設(shè)計
- 畢業(yè)論文(設(shè)計)基于單片機的多功能音樂盒設(shè)計
- 基于單片機的遙控?zé)粜男我魳泛?畢業(yè)論文
- 單片機 音樂盒畢業(yè)設(shè)計
- 畢業(yè)論文---基于單片機的電子音樂盒
- 音樂盒.doc
- 基于單片機的音樂盒的設(shè)計畢業(yè)設(shè)計(論文)
- huwei基于at89s52單片機的音樂盒設(shè)計畢業(yè)論文
- 單片機音樂盒設(shè)計
- 基于89s52單片機與led點陣的音樂盒設(shè)計畢業(yè)論文
- 基于單片機的音樂盒設(shè)計畢業(yè)設(shè)計
- 基于單片機的音樂盒設(shè)計-畢業(yè)設(shè)計
- 音樂盒的設(shè)計與實現(xiàn).pdf
- 課程設(shè)計--雙功能音樂盒
- 穿過風(fēng)雪的音樂盒
- 音樂盒-開題報告.doc
- 畢業(yè)設(shè)計--基于單片機音樂盒的制作
- 單片機音樂盒課程設(shè)計
評論
0/150
提交評論