【正文】
al,39。q39。 je two_q two_h: LEA SI,mus_FREG1_h jmp sudu two_m: LEA SI,MUS_FREG1_m jmp sudu two_l: LEA SI,MUS_FREG1_l jmp sudu two_s: LEA BP,DS:MUS_TIME1_s JMP SOUND two_q: LEA BP,DS:MUS_TIME1_q SOUND:freq: mov di,[si] cmp di,1 je r mov bx,ds:[bp] call soundf add si,2 add bp,2 jmp freq r: JMP rotate music endp。***************************************************soundf 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 mov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,alwait1: mov cx,663 call waitfdelay: loop delay dec bx jnz wait1 mov al,ah out 61h,al pop di pop dx pop cx pop bx pop ax retsoundf endpwaitf proc near push axwaitf1: in al,61h and al, 10h cmp al, ah je waitf1 mov ah,al loop waitf1 pop ax retwaitf endp。*************************************************** code ends end music總結(jié)體會一開始接到題目時,感覺每道題都很難,真不知從何下手。但我很早之前就對“音樂程序”產(chǎn)生了興趣,所以這次我選擇了“點(diǎn)歌系統(tǒng)”。乍看這四個字,我想到的是KTV那種點(diǎn)歌系統(tǒng),即可以根據(jù)歌手搜索歌曲,又可根據(jù)歌名拼音來搜索,還有插入與刪除操作等。心想挑戰(zhàn)性未免太高了吧?但看了課本第十章第五節(jié)的樂曲程序后,我明確了實(shí)驗(yàn)要求,對點(diǎn)歌系統(tǒng)的原理與設(shè)計有了初步了解,于是也就有了完成這個程序的信心。我用的編程軟件是MASM for Windows集成實(shí)驗(yàn)環(huán)境,它支持Windows下32位匯編程序和DOS下16/32位匯編,還具有錯誤信息自動定位、關(guān)鍵字實(shí)時幫助、動畫教程演示匯編指令的執(zhí)行過程、語法著色、WORD式的查找、替換、定位等功能,用起來非常便捷。其頗具特色的關(guān)鍵字實(shí)時幫助及動畫教程演示尤為實(shí)用,在我編程的過程中我可以方便地看到匯編語言中各指令的用法、DOS及BIOS功能調(diào)用表、ASCII碼表、匯編語言錯誤信息表等有常用信息。而動畫教程演示,使各尋址方式的數(shù)據(jù)在寄存器中的運(yùn)轉(zhuǎn)過程更加明了清晰。這軟件似乎濃縮了課本上的所有知識,因此在使用的過程中加強(qiáng)了我對匯編語言程序設(shè)計的認(rèn)知。而通過對歌曲頻率表和時間節(jié)拍表的編寫,我不僅了解到音調(diào)與頻率和時間的關(guān)系,還對音樂上的知識有了更多的認(rèn)識。雖然我對音樂有興趣,但我?guī)缀跏遣欢魳?。?dāng)我在課本上看到“四四拍”“四分音符”“全音符”“二分音符”等詞語以及那些樂譜時,我真是傻眼了!看著那段話與那些圖片,很久也不明白它的意思。但后來通過網(wǎng)上的資料和對程序的解讀分析,我明白了究竟要如何編寫樂曲的頻率表和時間節(jié)拍表。這也讓我明白了:所有知識都是從不懂到懂的,只要自己肯下功夫,就能學(xué)到更多??偟膩碚f,本次實(shí)驗(yàn)讓我對計算機(jī)控制發(fā)聲的原理、音調(diào)與頻率和時間的關(guān)系、匯編語言的各指令、子程序的調(diào)用以及宏匯編等有了一定的認(rèn)知,程序的成功運(yùn)行讓我對匯編充滿了信心,并產(chǎn)生了濃厚的興趣。我渴望在下一次課程設(shè)計中,對匯編語言程序設(shè)計有更多的了解和更深刻的體會。