匯編語言課程設計報告_第1頁
匯編語言課程設計報告_第2頁
匯編語言課程設計報告_第3頁
匯編語言課程設計報告_第4頁
匯編語言課程設計報告_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

課程設計一、課程設計題目:簡易電子琴二、課程設計目的:用匯編語言獨立完成一個程序題,以到達熟練運用匯編語言編程實現有比擬完整功能的系統的目的。三、課程設計內容:用匯編語言編寫一個簡易電子琴程序,根本功能:1、可以進展固定音樂演奏〔兩首以上〕;可以自行彈奏音樂。2、圖形顯示鍵盤界面;彈奏時鍵盤現實所按按鍵;可以調節音量。四、設計思路:ROMBIOS中的BEEP子程序能根據BL中給出的時間計數值控制8254定時器,產生持續聲音。通過對BEEP的修改可以使其產生任一頻率的聲音。用匯編語言編寫的程序GENSOUND,能使PC機發出指定頻率和指定延遲時間的聲音,它是一個很好的通用發聲程序。組成樂曲的每個音符的頻率值和持續時間是樂曲發聲程序所必須的兩組數據,知道了音調及頻率的關系后,就可以按照樂曲的樂譜將每個音符的頻率和持續時間定義成兩個數據表,然后編程依次取出表中的頻率值和時間值,調用GENSOUND程序發出各種聲音,本程序通過調用GENSOUND程序演奏樂曲。五、操作說明:運行時,按A鍵演奏樂曲"Twotigers〃,按B鍵演奏樂曲"HappyBirthday",按C鍵演奏樂曲〃SnailAndOriole〃,按P鍵自行彈奏音樂,按Q鍵退出。以上按鍵必須使用大寫字母,否那么顯示出錯信息。源程序〔〕如下:DATASEGMENTPARA'DATA'INFO1DB0DH,0AH,'***************************************************$'INFO2DB0DH,0AH,'*INFO3DB0DH,0AH,'*WELCOMEYOUTOCOMEHERE!*$'Thisisamusicprogram!INFO2DB0DH,0AH,'*INFO3DB0DH,0AH,'*WELCOMEYOUTOCOMEHERE!*$'Thisisamusicprogram!*$'INFO4DB0DH,0AH,'***************************************************$'INFO5DB0DH,0AH,0DH,0AH,'Pleaseselect!$'INFO6INFO7INFO9MUSLISTDB0DH,0AH,0DH,0AH,'InputError!PleaseInputAgain!$'DB0DH,0AH,'INFO6INFO7INFO9MUSLISTDB0DH,0AH,0DH,0AH,'InputError!PleaseInputAgain!$'DB0DH,0AH,'$'DB0DH,0AH,0DH,0AH,'Ifyouwanttoplaypiano,PleasepushP$'DB0DH,0AH,'ADB0DH,0AH,'BDB0DH,0AH,'CDB0DH,0AH,'QTwotigers'HappyBirthday'SnailAndOriole'EXIT'DB0DH,0AH,'$'MUS_FREG1DW2DUP(262,294,330,262) ;為演奏的樂曲定義一個頻率表DW2DUP(330,349,392)DW2DUP(392,440,392,349,330,262)DW2DUP(294,196,262),0ffffhMUS_TIME1DW10DUP(25000),50000,25000,25000,50000;為演奏的樂曲定義一個節拍時間表DW2DUP(12000,12000,12000,12000,25000,25000)DW2DUP(25000,25000,50000)MUS_FREG2DW262,262,294,262,349DW330,262,262,294,262DW392,349,262,262,523DW440,349,262,262,466DW466,440,262,392,349,-1MUS_TIME2DW500,500,1000,1000,1000DW1000,1000,500,500,1000,1000DW1000,1000,1000,500,500,1000DW1000,1000,1000,1000,1000,500DW500,1000,1000,1000,1000,1000MUS_FREG3DW392,396,392,395,330,392,262,440,392,395DW392,395,392,330,294,262,330,294,297,330DW392,395,392,330,335,294,262,265,294,330DW262,265,220,196,220,196,392,395,392,395DW330,392,262,440,292,392,395,392,395,330DW294,262,330,294,294,330,392,395,330,335DW294,262,265,294,330,262,265,220,196,220DW196,392,395,392,395,330,294,262,440,392DW395,440,262,294,262,294,330,294,262,-1MUS_TIME3DW1DUP(25,50,25,50,25,25,50,50,100,25)DW1DUP(50,25,50,25,25,50,50,100,75,25)DW1DUP(50,25,25,50,25,25,50,50,75,25)DW1DUP(50,25,25,50,50,100,25,50,25,50)DW1DUP(25,25,50,50,100,25,50,25,50,25)DW1DUP(25,50,50,100,75,25,50,50,50,25)DW1DUP(25,50,50,75,25,50,25,25,50,50)DW1DUP(100,25,50,25,50,25,25,50,50,50)DW1DUP(25,25,50,50,50,50,100,100,200)msgDB0DH,0AH,0DH,0AH,'[1234567]'DB0DH,0AH,'[qwertyu]'DB0DH,0AH,' 'DB0DH,0AH,'9:EXIT'DB0DH,0AH,' ','$';********音調******后面用到-1判斷音樂播是否放完sound_0DW-1sound_11DW441,-1sound_12DW495,-1sound_13DW556,-1sound_14DW589,-1sound_15DW661,-1sound_16DW742,-1sound_17DW833,-1sound_1DW882,-1sound_2DW990,-1sound_3DW1112,-1sound_4DW1178,-1sound_5DW1322,-1sound_6DW1484,-1sound_7DW1655,-1timeDW25DATAENDSSTACKSEGMENTPARASTACK'STACK'DB300DUP('STACK')STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODEMAINPROCFARMOVAX,DATAMOVDS,AXMOVaH,3MOVAL,4INT10HMOVAH,09HMOVBH,6MOVBL,4INT10HMOVAH,0BHMOVBH,09HMOVBL,00INT10H;*****定義一個宏*****SHOWMACRObLEADX,bMOVAH,9INT21HENDMshowINFO1showINFO2showINFO3showINFO4showINFO5showinfO9showMUSLISTINPUT: MOVAH,01HINT21HCMPAL,'Q'JZretuCMPAL,'P'

JZRETU2CMPAL,'A'JNZB0CALLMUSIC1JMPEXIT1B0: CMPAL,'B'JNZC0CALLMUSIC2JMPEXIT1C0: CMPAL,'C'JNZexitCALLMUSIC3EXIT1: showINFO7JMPINPUTEXIT:callclearshowINFO6showINFO7showINFO5showMUSLISTSHOWINFO9jmpinputRETU: MOVAH,4CHINT21HMAINENDPRETU2:MOVAX,DATAMOVDS,AX;一個聲音宏onesoundmacrosoundis,jumpis,letterisCMPAL,letterisJNZjumpisLEASI,soundisLEABP,DS:timeCALLMUSICJMPinpuENDMshowmsgINPU:MOVAH,01HINT21HCMPAL,'9'jnzgomovah,4chint21h

*發聲*發聲GENSOUND1PROCNEAR;PUSHAXPUSHBXPUSHCXPUSHDXPUSHDI;MOVAL,0B6HOUT43H,ALMOVDX,12HMOVAX,348chDIVDIOUT42H,ALMOVAL,AHOUT42H,ALINAL,61HMOVAH,ALORAL,3OUT61H,ALWAIT2:MOVCX,3314callwaitfDELAY1:DECBXJNZWAIT2MOVAL,AHOUT61H,AL;POPDIPOPDXPOPCXPOPBXPOPAX;RETGENSOUND1ENDPwaitfprocnearpushaxwaitf1:inal,61handal,10hcmpal,ahjewaitf1movah,alloopwaitf1popaxretwaitfendpMUSICPROCNEARPUSHDSSUBAX,AXPUSHAXFREG:MOVDI,[SI]CMPDI,-1JEEND_MUSMOVBX,DS:[BP]CALLGENSOUND1ADDSI,2ADDBP,2END_MUS:RETMUSICENDPMUSIC1PROCNEARPUSHDSSUBAX,AXPUSHAXLEASI,MUS_FREG1LEABP,DS:MUS_TIME1FREG1: MOVDI,[SI]CMPDI,-1JEEND_MUS1MOVDX,DS:[BP]MOVBX,2600CALLGENSOUNDADDSI,2ADDBP,2JMPFREG1END_MUS1:RETMUSIC1ENDPGENSOUNDPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXPUSHDIMOVAL,0B6HOUT43H,ALMOVDX,12HMOVAX,533H*896DIVDIOUT42H,ALMOVAL,AHOUT42H,ALINAL,61HMOVAH,ALORAL,3OUT61H,ALWAIT1: MOVCX,8FF0HDELAY2:LOOPDELAY2DECBXJNZWAIT1MOVAL,AHOUT61H,ALPOPDIPOPDXPOPCXPOPBXPOPAXRETGENSOUNDENDPMUSIC2PROCNEARPUSHDSSUBAX,AXPUSHAXLEASI,MUS_FREG2LEABP,DS:MUS_TIME2FREG2:MOVDI,[SI]CMPDI,-1JEEND_MUS2MOVDX,DS:[BP]MOVBX,3500CALLGENSOUNDADDSI,2ADDBP,2JMPFREG1END_MUS2:RETMUSIC2ENDPMUSIC3PROCNEARPUSHDSSUBAX,AXPUSHAXLEASI,MUS_FREG3LEABP,DS:MUS_TIME3FREG3: MOVDI,[SI]CMPDI,-1JEEND_MUS3MOVDX,DS:[BP]MOVBX,2000CALLGENSOUNDADDSI,2ADDBP,2JMPFREG1END_MUS3:RETMUSIC3ENDPclearprocnearpushaxpushbxpushcxpushdxmovah,6moval,0movch,0movcl,0movdh,24movdl,79movbh,7int10hpopdxpopcxpopbxpopaxretclearendpCODEENDSENDMAIN六、所遇到的問題:程序使用了學習過程中學到的各個知識點,但是由于對一些相關的知識點不能夠合理的應用,所以實驗要求的自我彈奏的功能不夠完善,所實現的只能是單獨彈一個音符,可以調

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論