77范文网 - 专业文章范例文档资料分享平台

乐曲程序的设计与实现(4)

来源:网络收集 时间:2019-02-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

武汉理工大学《汇编语言程序设计》课程设计

上面是两只老虎的简谱,可以结合这个来听音高低。结果如上所示

5、设计心得与改进方案

5.1 心得体会

在程序中,各个变量及标号应该有统一且明确的命名规范,例如频率表的命名规则为:“歌曲名_F“,节拍表的命名规则为:“歌曲名_T“ 这样能使代码的可读性大大增强,且在编程中也能使逻辑更加清晰,增加编程效率。 不能一开始就开始编写程序,而是应该首先分析问题,设计出程序的框架流程图,明确各个程序段的功能,这样能使效率提高并且能增强持续的逻辑性和可读性,也可以避免出现很多错误

在设计中应该考虑全面,并且兼顾到各方面的问题。不能仅仅完成布置的任务,应该努力使程序更健壮,能够处理错误的输入并且给出提示,而且应该有更强的交互能力。 在做课程设计的过程中难免会出现这样那样的问题,因此要保持良好的心态,在遇到问题时应该仔细想问题的起因及解决方法,不能想都不想就直接放弃或者问人,这样就失去了做报告的意义,因为在解决问题的过程中可以发现很多以前忽视的问题。发现问题,解决问题是我们的主要目的。

这次的课程设计让我有机会通过实践来加强、巩固学习过的知识,极大的增强了自己编程能力。

5.2 改进方案

1. 刚开始设计流程图的时候,可以直接将内置的2首音乐分别定义一个子程序来演奏,在之后的编程过程中,发现这样的设计不合理且会使代码变的更长且冗余,然后改进设计,以一个SOUNDF子程序来演奏音乐,调用SOUNDF的时候直接将需要演奏的频率表和节拍表作为参数传递给SOUNDF程序,这样能使代码更简洁,可读性大大增强。 2. 如果需要播放其他音乐时,只要在数据段增加此音乐的频率表和节拍表,然后在选择项中添加一个选项即可。

3. 在调用子程序的过程中,应该注意保存寄存器中的内容,避免在子程序中破坏其

13

武汉理工大学《汇编语言程序设计》课程设计

中的数据。

可以考虑使用主界面的方式,多插入几首歌曲,增加程序的选择性,使不至于单一。 可以通过自己设计的利用系统定时器的中断程序来实现控制发声时间长短的功能,使程序的发声时间有一个具体的时间基准。在系统定时器的中断处理程序中,有一条中断指令INT 1CH,时钟中断每发生一次(约每秒中断18.2次)都要嵌套调用一次中断类型1CH的处理程序。而ICH得处理程序没有做任何工作,因而可以自己设计处理程序来代替原有的中断程序。但在编写新的中断程序时,应该先保存之前的中断向量,结束时恢复。

6、参考文献

[1]沈美明,温冬婵.IBM—PC汇编语言程序设计(第2版).清华大学出版社,2001年8月.

[2]沈美明,温冬婵.IBM—PC汇编语言程序设计实验教程.清华大学出版社,2003年3月.

7.附录 源程序

DATAS SEGMENT

MESG1 DB 'THIS IS A MUSIC PROGRAM!','$' MESG2 DB 'PLAY THE TWO TIGERS? Y/N ','$'

MESG3 DB ' TWO TIGERS ','$' MESG4 DB 'the rythm is like this:','$'

MESG5 DB '1 2 3 1 |1 2 3 1 |3 4 5 -|','$' MESG6 DB '3 4 5 - |56 54 3 1 |56 54 3 1|','$' MESG7 DB '2 5 1 - |2 5 1 - |','$'

MUSFREQ dw 2 dup (262,294,330,262) dw 2 dup (330,349,392)

dw 2 dup (392,440,392,349,330,262) dw 2 dup (294,196,262),-1 MUSTIME dw 8 dup (50)

dw 2 dup (50,50,100)

dw 2 dup (4 dup (25),50,50)

dw 2 dup (50,50,100);此处输入数据段代码 DATAS ENDS

STACKS SEGMENT PARA STACK 'STACK';stack声明,否则产生warning db 64 dup('stack...');此处输入堆栈段代码

14

武汉理工大学《汇编语言程序设计》课程设计

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS MAIN PROC FAR START:

PUSH DS SUB AX,AX PUSH AX

MOV AX,DATAS MOV DS,AX

LEA DX,MESG1 MOV AH,09H INT 21H CALL CRLF CALL CRLF LEA DX,MESG2 MOV AH,09H INT 21H MOV AH, 1 INT 21H

CMP AL, 4EH JZ END_MUS

CALL INSTRUCTION LEA SI,MUSFREQ LEA BP,DS:MUSTIME FREQ:

MOV DI,[SI] CMP DI,-1 JE END_MUS

MOV BX,DS:[BP] CALL SOUNDF ADD SI,2 ADD BP,2 JMP FREQ

END_MUS: ;此处输入代码据段代码 MOV AL,48H OUT 61H,AL RET

MAIN ENDP

SOUNDF PROC NEAR

15

武汉理工大学《汇编语言程序设计》课程设计

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,AL

WAIT1: MOV CX,663*5 CALL WAITF DEC BX JNZ WAIT1 MOV AL,AH OUT 61H,AL RET SOUNDF ENDP 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 ENDP

INSTRUCTION PROC NEAR LEA DX,MESG3 MOV AH,09H INT 21H CALL CRLF LEA DX,MESG4 MOV AH,09H INT 21H CALL CRLF LEA DX,MESG5 MOV AH,09H INT 21H

16

武汉理工大学《汇编语言程序设计》课程设计

CALL CRLF LEA DX,MESG6 MOV AH,09H INT 21H CALL CRLF LEA DX,MESG7 MOV AH,09H INT 21H CALL CRLF INSTRUCTION ENDP

CRLF PROC NEAR MOV DL,13 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 INT 21H RET

CRLF ENDP

CODES ENDS

END START

17

武汉理工大学《汇编语言程序设计》课程设计

本科生课程设计成绩评定表 班级:计算机科学与技术 姓名: 学号: 评分项目 满分 10 10 20 40 10 10 总得分/等级 序号 1 2 3 4 5 6 实得分 学习态度认真、遵守纪律 设计分析合理性 设计方案正确性、可行性、创造性 设计结果正确性 设计报告的规范性 设计验收 评语: 注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、

及格(60-69分)、60分以下为不及格

指导教师签名:

200 年 月 日

18

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库乐曲程序的设计与实现(4)在线全文阅读。

乐曲程序的设计与实现(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/471506.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: