1、分支结构实验报告天津大学课程设计学 院:职业技术教育学院学 号:3008212012姓 名: 黄立宁班 级:1指导教师:谢永超2010-4-26内容简介本程序为利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。该程序能记录所演奏的音乐,能回放所演奏的音乐。运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。 成绩: 教师签字: 目 录开发环境1功能描述1系统功能结构框图.2程序代码3运行结果11课程设计体会12
2、参考文献13题目:键盘控制发声程序 -电子琴一、开发环境1硬件环境 微型计算机一台2软件环境WindowsXP操作系统使用工具MASM 5.0,要进行汇编语言的编辑和运行,需要以下工作环境:编辑程序,如EDIT.EXE、WORD汇编程序,如MASM.EXE连接程序,如LINK.EXE调试程序,如DEBUG.EXE二、功能描述 利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。该程序能记录所演奏的音乐,能回放所演奏的音乐。运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之
3、前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。三、系统功能结构图 (续上图):四、程序代码;利用q、w、e、r、t、y、u、1-7演奏音符的程序,能记录所演奏的音乐,能回放所演奏的音乐;*DATA SEGMENT msg DB 0DH,0AH, DB 0DH,0AH, 1 2 3 4 5 6 7 DB 0DH,0AH, q w e r t y u DB 0DH,0AH, _ DB 0DH,0AH, DB 0DH,0AH, DB 0DH,0AH, * DB 0DH,0AH, NOTICE DB 0DH,0AH, Press 1-7 to make music and play i
4、t. DB 0DH,0AH, Press 9 to interrupt. DB 0DH,0AH, *,$ ;音调(后面用到-1判断音乐播是否放完) sound_0 DW -1 sound_11 DW 441,-1 sound_12 DW 495,-1 sound_13 DW 556,-1 sound_14 DW 589,-1 sound_15 DW 661,-1 sound_16 DW 742,-1 sound_17 DW 833,-1 sound_1 DW 882,-1 sound_2 DW 990,-1 sound_3 DW 1112,-1 sound_4 DW 1178,-1 sound
5、_5 DW 1322,-1 sound_6 DW 1484,-1 sound_7 DW 1655,-1 time DW 25DATA ENDS ;*STACK SEGMENT Db 200 DUP (STACK) ;将音符放入堆栈中STACK ENDS ;*CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE ;段说明START: MOV AX,DATA MOV DS,AX MOV aH,00 ;初始化显示方式 MOV AL,00 INT 10H;-定义一个显示宏 SHOW MACRO b LEA DX,b MOV AH,9 ;将以$结尾的字符串显示在屏幕上
6、,并将入口参数字符串的首地址的段基址和偏移地址分别放入DS和DX中 INT 21H ENDM;-定义一个声音宏 onesound macro soundis,jumpis,letteris CMP AL,letteris JNZ jumpis LEA SI,soundis LEA BP,DS:time CALL MUSIC JMP input ENDM;- show msg ;显示音符和提示;-INPUT: MOV AH,01H INT 21H ;从键盘输入一个字符并显示 CMP AL,9 jnz go mov ah,4ch ;若输入9则返回DOS,终止制作音乐 int 21hgo: ones
7、ound sound_11,a0,qa0: onesound sound_12,b0,wb0: onesound sound_13,c0,ec0: onesound sound_14,d0,rd0: onesound sound_15,e0,te0: onesound sound_16,f0,yf0: onesound sound_17,g0,ug0: onesound sound_1,h0,1h0: onesound sound_2,i0,2i0: onesound sound_3,j0,3j0: onesound sound_4,k0,4k0: onesound sound_5,l0,5l
8、0: onesound sound_6,m0,6m0: onesound sound_7,n0,7n0: onesound sound_0,o0,alo0: jmp input;-发声(将堆栈中的音符数据送到端口地址) GENSOUND PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI ;时间间隔定时器(计数器2的初始化过程) MOV AL,0B6H OUT 43H,AL ;给公用的控制寄存器(地址为43H)赋值 MOV DX,12H MOV AX,348ch ;频率除数 DIV DI OUT 42H,AL MOV AL,AH OUT 42H,
9、AL IN AL,61H ;扬声器驱动(61H为输出寄存器分配I/O端口号) MOV AH,AL OR AL,3 OUT 61H,AL ;打开扬声器WAIT1: MOV CX,3314 ;等待下一音符的到来 call waitf DELAY1: DEC BX ;声音的延迟 JNZ WAIT1 MOV AL,AH ;关闭扬声器 OUT 61H,AL POP DI POP DX POP CX POP BX POP AX RET GENSOUND ENDP;*waitf proc near push ax waitf1: in al,61h and al,10h cmp al,ah je waitf
10、1 mov ah,al loop waitf1 ;CX=0时退出循环,继续键入音符制作音乐 pop ax ret waitf endp;*MUSIC PROC NEAR PUSH DS SUB AX,AX PUSH AX FREG: MOV DI,SI CMP DI,-1 ;音乐是否放完JE END_MUS MOV BX,DS:BP ;将音符放入堆栈CALL GENSOUND ;调发声子程序 ADD SI,2 ADD BP,2 JMP FREG END_MUS: RET MUSIC ENDP CODE ENDS ;*END START五、运行结果图1 生成OBJ文件图2 生成EXE文件图3 运
11、行结果六、课程设计体会这次课程设计使我对汇编语言有了更进一步的了解和熟悉,实际操作编写程序,并使之能在计算机上正确运行真的有点困难。平时觉得只要把课本上的知识学会就好了,没想到一付诸实际就全没了头脑。课程设计只是书本上知识的灵活运用,与所学的有相当大的联系,但又高于所学的。一个看似简单的题目,要动手把它设计出来就十分困难。所以以后要注意把从课本上所学到的知识与实际联系起来,灵活运用,举一反三。同时通过本次汇编语言程序的课程设计,我学到了许多课上老师没讲到的知识,开拓了我的眼界。课程设计不但让我巩固了所学知识,也使我把理论与实际从真正意义上结合起来,更重要的是增强了学习的兴趣,培养了我们借助互联网络搜集、查阅相关文献资料和组织材料的综合学习能力。七、参考文献1沈美明、温冬蝉编,IBM-PC汇编语言程序设计,北京:清华大学出版社,2001.2网址:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1