收藏 分销(赏)

汇编语言课程设计 音乐点播程序.doc

上传人:pc****0 文档编号:6270510 上传时间:2024-12-04 格式:DOC 页数:15 大小:442KB
下载 相关 举报
汇编语言课程设计 音乐点播程序.doc_第1页
第1页 / 共15页
汇编语言课程设计 音乐点播程序.doc_第2页
第2页 / 共15页
汇编语言课程设计 音乐点播程序.doc_第3页
第3页 / 共15页
汇编语言课程设计 音乐点播程序.doc_第4页
第4页 / 共15页
汇编语言课程设计 音乐点播程序.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、一背景分析及意义随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。而汇编语言做为计算机专业大学生必修之课,每个做为本专业的学生对汇编的理解和学习就显的尤为重要。汇编语言是计算机能够提供给用户使用的最快而又最好最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显的必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。这次课程设计是在学习汇编语言与实践相结合的一次综合应用。通过具体的问题分析、设计、调试、运行程序。在实际问题

2、中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:知道了音调与频率和时间的关系,就可以按照乐曲的曲谱将每个音符的频率和持续时间定义成两个数据表;然后编写程序依次取出表中的频率值和时间值,调用GENSOUNDF程序发出各种声音。这个程序最终通过菜单所提示的信息选取所要欣赏的音乐,是执行此程序后,会很有速且有效的使扬声器接通并发出音频为896 Hz的声音。二总体设计思想ROM BIOS 中的BEEP子程序能根据BL中给出的时间计数植控制8254定时器,产生持续时间计数值控制8254定时器,产生持续时间为1个或几个0.5 秒,频率为896Hz的声音。通过对BEEP的修改

3、,可产生任一频率的声音。用汇编语言写的GENSOUNG,能使Pc 机发出指定频率和指定延时的声音。它是一个很好的通用发声程序。组成乐曲的每个音符的频率值和持续时间定义成两个数据表,然后编程依次取出表中的频率值和时间值,调用GENSOUND程序发出各种声音。本程序就是通过GENSOUNG程序演奏乐曲的例子。该乐曲点播程序由一个乐曲点播主程序和五个子程序组成。(1)歌曲设置程序;(2)打开另一个显示窗口程序;(3)接收键盘输入程序;(4)返回程序;(5)发声程序。由这几个程序完成乐曲的演奏。三完成的主要功能这个程序能够实现音乐的播放。运行时按下1-4键演奏乐曲“1:Happy birthday t

4、o you; 2:Mary had a little lamb; 3:Taihu boat; 4:Exit; 选择曲目序号进行歌曲播放;退出程序。 程序运行将显示如下运行图1四软硬件要求汇编语言对硬件的配置要求不是很高。这个音乐发声程序也有这个特点。只要是在Dos系统下 window98, window 2000,windows xp环境均可,要有汇编软件Masm615。这个程序有些地方就是在自己的电脑中完成的。五程序流程图音乐演奏程序流程图如图2所示 接收键盘输入是“1”是“2”是“3”是“4”显示出错信息Call music3Call music2Call music1开始提示信息退出音乐

5、流程图2六使用说明这个程序是关于发声的程序。通过设计音乐播放的具体程序展示了这个原理。这个程序共包括了显示程序,歌曲选择,歌曲的播放 返回等几部分组成的。开始时定义了演奏乐曲的频率表和时间节拍表,为形成一个完整的音乐曲目做了准备。接下来向计数器写入控制字并且接通扬声器,设置次数循环将节拍转入程序,调用发声程发声。这个序通过按键1,2,3即可实现播放1:Happy birthday to you; 2:Mary had a little lamb; 3:Taihu boat; 4:Exit; 选择曲目进入歌曲播放; 选择退出选项所对应的功能号后退出程序。利用计算机控制发声的原理,可以编写演奏乐曲

6、的程序。乐曲是按照一定的高低、长短和强弱关系组成的音调。在一首乐曲中,每个音符的音高和音长与频率和节拍有关。组成乐曲的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。音符的频率可以乐谱中查到,但实际上送入计数器的是输入频率与音符频率相除的值,通用发声程序SOUNDF的前半部分就是完成这个计算,并将计数值送入计数器的功能。音符的持续时间是根据乐曲的速度及每个音符的节拍数来确定的。在4/4中,四分音符为1拍,每小节4拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八分音符持续半拍等。如果给全音符分配1s(100*10ms)的时间,则二分音符的持续时间为0.5s(50*10ms),

7、四分音符的持续时间为0.25s(25*10ms),八分音符的持续时间为0.125s(12.5*10ms)。知道了音调与频率和时间的关系,就可以按照乐曲的曲谱将每个音符的频率和持续时间定义成两个数据表;然后编写程序依次取出表中的频率值和时间值,调用SOUNDF程序发出各种声音。本程序应用了BIOS中断功能的字符显示功能和乐曲演奏程序。并利用计算机控制发声原理,在计算机中有一个可编程时间间隔定时器,它能根据程序提供的记数值和工作模式,产生各种形状和各种频率的记数定时脉冲,提供给系统的各个部分使用。该乐曲点播程序由一个乐曲主程序和五个子程序组成。其中的一个子程序为乐曲演奏子程序,一个是打开另一个窗口

8、显示程序,一个是接收字符程序,一个返回程序,一个发声程序。主程序对演奏子程序、打开另一个窗口程序、接收字符程序、返回程序做内部调用,发声子程序是外部调用,它是一个公用子程序。设计总结在为期两周的课程设计中,我设计了音乐发声程序。从选题到程序成形可以运行,我收获了好多。在开始的时候遇到了许多的困难,程序出错难以演示后来经过老师的指导和自己的修改,终于完成了一个小的综合性课程程序。这里对黄老师的帮助表示感谢。这个过程中我深感自己的专业知识不足所带来的困难,使我知道要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的

9、培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。这是继数据结构课程设计后的又一次课程设计。通过这次学习,对汇编语言有了更近一步的了解,对软件的编写也有了一定的认识。在设计的时由于查书对书中的知识也有实质性的理解。这是一次理论与实践相结合的学习,在这次学习中加强了我的上机操作能力,加强了我对汇编这门课程的认识,增强了我的学习积极性。汇编语言和vc+同样是关于计算机编程的,是计算机语言。他们都有自己的功能和用途。而汇编语言是一种面向机器的程序设计语言,是和计算机硬件结合最密切的语言,虽然程序设计语言的发展很快,但它是用户能够使用的最快和最

10、能发挥硬件功能的唯一的一种计算机语言。在汇编语言中使计算机发声的方法作为一个小的实用程序,具体的显示了汇编语言的用途。使我有了在以后的其他程序中可以更熟练的运用此方法来控制计算机的发声进行汇编课程设计的想法。在日后的学习中我要加强汇编语言的综合应用程序设计方法,提高汇编语言实际应用能力、增加计算机各方面的知识和运用能力。学好每一门专业课,能够熟悉的应用计算机的更多功能。另外,作为计算机专业的学生上机操作非常重要。在这次课程设计中我们就一起在机房设计自己程序,自己动手解决问题。同时实验过程中我们做同一题目的几个人在遇到问题的时候,能够积极进行讨论,发表自己的意见,增加了我的团队意识,同时也培养了

11、我勇于面对困难以及解决问题的能力。这是我平时在课堂上所学不到的。这也是作为当代大学生更是计算机专业的学生应该具备的能力和素质。总知,这次课程设计作为学习的一个开端,指导我整个学习方向和态度。我要将这次学习当做一个很好的起点,再接再厉争取学到更多的知识。参考文献1IBM-PC 汇编语言程序设计,沈美明 温冬婵编著。清化大学出版社,2008年3月第8次印刷。2东阳生等编著:“宏汇编语言MASM6实用大全”,科学出版社,19933汇编语言课程设计案例精编李珍香,刘红梅等编著。中国水利水电出版社4陆中华等编:“汇编语言程序设计”,科学出版社,1994附: 源程序;* STACK SEGMENT PAR

12、A STACK STACK DB 64 DUP(STACK.) STACK ENDS;* DSEG SEGMENT PARA DATAMESS1 DB 50 DUP( ),Now the music is ,13,10,$ MESS2 DB 50 DUP( ),Now the music is ,13,10,$ MESS3 DB 50 DUP( ),Now the music is ,13,10,$ MENU DB 5 DUP(13,10) DB 5 DUP( ),Class:Computer 05-6 Name:lixia NO.:14 ,13,10 DB 5 DUP(), ,13,10 D

13、B 5 DUP(), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), 1:Happy birthday to you; ,13,10 DB 5 DUP( ), 2:Mary had a little lamb; ,13,10 DB 5 DUP( ), 3:Taihu boat; ,13,10 DB 5 DUP( ), 4:Exit; ,13,10DB 5 DUP( ), ,13,10 DB 5 DUP(

14、), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ), ,13,10 DB 5 DUP( ),please chioce the number of music:,$,13,10 change DB 125 DUP( ),error! please change anther NO.: ,$ MUS_FREG dw 262,262,294,262,349,330 dw

15、 262,262,294,262,392,349 dw 262,262,523,440,349,330,294 dw 466,466,440,262,392,349 dw -1 MUS_TIME dw 50,50,100,100,100,200 dw 50,50,100,100,100,200 dw 50,50,100,100,100,100,300 dw 50,50,100,100,100,200 mus_freg1 dw 330,294,262,294,330,330,330 dw 294,294,294,330,392,392 dw 330,294,262,294,330,330,330

16、,330 dw 294,294,330,294,262 dw -1 mus_time1 dw 6 dup(25),50 dw 2 dup(25,25,50) dw 12 dup(25),100 mus_freg2 dw 330,392,330,294,330,392,330,294,330 dw 330,392,330,294,262,294,330,292,294 dw 262,262,220,196,196,220,262,294,330,262 dw -1 mus_time2 dw 50,50,50,25,25,50,25,25,100 dw 50,50,50,50,25,25,25,2

17、5,100 dw 50,50,50,25,25,25,25,25,25,25,100 DSEG ENDS;* CODE SEGMENT PARA DATA assume cs:code,ds:dseg,ss:stack music proc far mov ax,dseg mov ds,ax rotate:call clearscreenLEA DX,MENU mov ah, 9 int 21hchg: mov ah,1 int 21h cmp al,1 je one cmp al,2 je two cmp al,3 je three cmp al,4 je endmus LEA DX,cha

18、nge mov ah, 9 int 21h jmp chg ONE: call clearscreen lea dx,mess1 mov ah,09 int 21h LEA SI,MUS_FREG LEA BP,DS:MUS_TIME JMP SOUND TWO:call clearscreen lea dx,mess2 mov ah,09 int 21h LEA SI,MUS_FREG1 LEA BP,DS:MUS_TIME1 JMP SOUNDTHREE:call clearscreen lea dx,mess3 mov ah,09 int 21h LEA SI,MUS_FREG2 LEA

19、 BP,DS:MUS_TIME2 SOUND: ; call q0freq: mov di,si cmp di,-1 je rotate mov bx,ds:bp call soundf add si,2 add bp,2 jmp freq JMP rotateENDMUS: mov ax,4c00h int 21h 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

20、,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 endpCLEARSCREEN PROC NEAR MOV AH,6 MOV AL,0 MOV DL,79 MOV BH,7 MOV CH,0 MOV CL,0 MOV DH,24 int 10h MOV DX,0 MOV AH,2 INT 10H RETCLEARSCREEN ENDPq0 proc near mov ah,2 sub bh,bh mov dh,0 mov dl,0 int 10h retq0 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 - -

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服