汇编语言课程设计报告(共9页)_第1页
汇编语言课程设计报告(共9页)_第2页
汇编语言课程设计报告(共9页)_第3页
汇编语言课程设计报告(共9页)_第4页
汇编语言课程设计报告(共9页)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上课程设计一、课程设计题目:简易电子琴 二、课程设计目的:用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的系统的目的。三、课程设计内容:用汇编语言编写一个简易电子琴程序,基本功能:1、可以进行固定音乐演奏(两首以上);可以自行弹奏音乐。2、图形显示键盘界面;弹奏时键盘现实所按按键;可以调节音量。四、设计思路: ROM BIOS中的BEEP子程序能根据BL中给出的时间计数值控制8254定时器,产生持续声音。通过对BEEP的修改可以使其产生任一频率的声音。用汇编语言编写的程序GENSOUND,能使PC机发出指定频率和指定延迟时间的声音,它是一个很

2、好的通用发声程序。组成乐曲的每个音符的频率值和持续时间是乐曲发声程序所必须的两组数据,知道了音调及频率的关系后,就可以按照乐曲的乐谱将每个音符的频率和持续时间定义成两个数据表,然后编程依次取出表中的频率值和时间值,调用GENSOUND程序发出各种声音,本程序通过调用GENSOUND程序演奏乐曲。五、操作说明:运行时,按A键演奏乐曲”Two tigers”,按B键演奏乐曲”Happy Birthday”,按C键演奏乐曲” Snail And Oriole”,按P键自行弹奏音乐,按Q键退出。以上按键必须使用大写字母,否则显示出错信息。源程序(MUSIC.ASM)如下:DATA SEGMENT PA

3、RA 'DATA'INFO1 DB 0DH,0AH,'*$'INFO2 DB 0DH,0AH,'*-WELCOME YOU TO COME HERE!-*$'INFO3 DB 0DH,0AH,'*-This is a music program!-*$'INFO4 DB 0DH,0AH,'*$'INFO5 DB 0DH,0AH,0DH,0AH,'Please select!$'INFO6 DB 0DH,0AH,0DH,0AH,'Input Error! Please Input Again

4、!$'INFO7 DB 0DH,0AH,'-$'INFO9 DB 0DH,0AH,0DH,0AH,'If you want to play piano,Please push P$'MUSLIST DB 0DH,0AH,'A Two tigers' DB 0DH,0AH,'B Happy Birthday' DB 0DH,0AH,'C Snail And Oriole' DB 0DH,0AH,'Q EXIT' DB 0DH,0AH,'$'MUS_FREG1 DW 2 DUP(

5、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),0ffffhMUS_TIME1 DW 10 DUP(25000),50000,25000,25000,50000 ;为演奏的乐曲定义一个节拍时间表 DW 2 DUP(12000,12000,12000,12000,25000,25000) DW 2 DUP(25000,25000,50000) MUS_FREG2 DW 262,262,294,262,349 DW 330,26

6、2,262,294,262 DW 392,349,262,262,523 DW 440,349,262,262,466 DW 466,440,262,392,349,-1 MUS_TIME2 DW 500,500,1000,1000,1000 DW 1000,1000,500,500,1000,1000 DW 1000,1000,1000,500,500,1000 DW 1000,1000,1000,1000,1000,500 DW 500,1000,1000,1000,1000,1000MUS_FREG3 DW 392,396,392,395,330,392,262,440,392,395

7、DW 392,395,392,330,294,262,330,294,297,330 DW 392,395,392,330,335,294,262,265,294,330 DW 262,265,220,196,220,196,392,395,392,395 DW 330,392,262,440,292,392,395,392,395,330 DW 294,262,330,294,294,330,392,395,330,335 DW 294,262,265,294,330,262,265,220,196,220 DW 196,392,395,392,395,330,294,262,440,392

8、 DW 395,440,262,294,262,294,330,294,262,-1 MUS_TIME3 DW 1 DUP(25,50,25,50,25,25,50,50,100,25) DW 1 DUP(50,25,50,25,25,50,50,100,75,25) DW 1 DUP(50,25,25,50,25,25,50,50,75,25) DW 1 DUP(50,25,25,50,50,100,25,50,25,50) DW 1 DUP(25,25,50,50,100,25,50,25,50,25) DW 1 DUP(25,50,50,100,75,25,50,50,50,25) DW

9、 1 DUP(25,50,50,75,25,50,25,25,50,50) DW 1 DUP(100,25,50,25,50,25,25,50,50,50) DW 1 DUP(25,25,50,50,50,50,100,100,200) msg DB 0DH,0AH,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,'9: EXIT' DB 0DH,0AH,'_','$' ;*音调*后面用

10、到-1判断音乐播是否放完sound_0 DW -1sound_11 DW 441,-1 sound_12 DW 495,-1sound_13 DW 556,-1sound_14 DW 589,-1sound_15 DW 661,-1sound_16 DW 742,-1 sound_17 DW 833,-1 sound_1 DW 882,-1 sound_2 DW 990,-1 sound_3 DW 1112,-1sound_4 DW 1178,-1 sound_5 DW 1322,-1 sound_6 DW 1484,-1 sound_7 DW 1655,-1time DW 25DATA EN

11、DSSTACK SEGMENT PARA STACK 'STACK' DB 300 DUP ('STACK')STACK ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODEMAIN PROC FAR MOV AX,DATA MOV DS,AX MOV aH, 3 MOV AL,4 INT 10H MOV AH,09H MOV BH,6 MOV BL,4 INT 10H MOV AH,0BH MOV BH,09H MOV BL,00 INT 10H;*定义一个宏*SHOW MACRO b LEA DX,b MOV AH

12、,9 INT 21H ENDM;* show INFO1 show INFO2 show INFO3 show INFO4 show INFO5 show infO9 show MUSLISTINPUT: MOV AH,01H INT 21H CMP AL,'Q' JZ retu CMP AL,'P' JZ RETU2 CMP AL,'A' JNZ B0 CALL MUSIC1 JMP EXIT1B0: CMP AL,'B' JNZ C0 CALL MUSIC2 JMP EXIT1C0: CMP AL,'C' JN

13、Z exit CALL MUSIC3EXIT1: show INFO7 JMP INPUT EXIT: call clear show INFO6 show INFO7 show INFO5 show MUSLISTSHOW INFO9 jmp inputRETU: MOV AH,4CH INT 21H MAIN ENDP RETU2: MOV AX,DATA MOV DS,AX ;*一个声音宏*onesound macro soundis,jumpis,letterisCMP AL,letteris JNZ jumpis LEA SI,soundisLEA BP,DS:timeCALL MU

14、SIC JMP inpu ENDM show msgINPU: MOV AH,01H INT 21H CMP AL,'9' jnz gomov ah,4chint 21hgo: onesound sound_11,a1,'q'a1: onesound sound_12,b1,'w'b1: onesound sound_13,c1,'e'c1: onesound sound_14,d1,'r'd1: onesound sound_15,e1,'t'e1: onesound sound_16,f1,&#

15、39;y'f1: onesound sound_17,g1,'u'g1: onesound sound_1,h1,'1'h1: onesound sound_2,i1,'2'i1: onesound sound_3,j1,'3'j1: onesound sound_4,k1,'4'k1: onesound sound_5,l1,'5'l1: onesound sound_6,m1,'6'm1: onesound sound_7,n1,'7'n1: onesou

16、nd sound_0,o1,alo1: jmp inpu;*发声 GENSOUND1 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,AL WAIT2: MOV CX,3314 call waitf DELAY1: DEC BX JNZ WAIT2 MOV AL,AH OUT 61H,AL ;-

17、POP DI POP DX POP CX POP BX POP AX ;-RET GENSOUND1 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 ;* MUSIC PROC NEAR PUSH DS SUB AX,AX PUSH AX FREG: MOV DI,SI CMP DI,-1JE END_MUS MOV BX,DS:BP CALL GENSOUND1 ADD SI,2 ADD BP

18、,2 END_MUS: RET MUSIC ENDP MUSIC1 PROC NEAR PUSH DS SUB AX,AX PUSH AX LEA SI,MUS_FREG1 LEA BP,DS:MUS_TIME1FREG1: MOV DI,SI CMP DI,-1 JE END_MUS1 MOV DX,DS:BP MOV BX,2600 CALL GENSOUND ADD SI,2 ADD BP,2 JMP FREG1END_MUS1: RETMUSIC1 ENDPGENSOUND PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AL

19、,0B6H OUT 43H,AL MOV DX,12H MOV AX,533H*896 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,8FF0HDELAY2: LOOP DELAY2 DEC BX JNZ WAIT1 MOV AL,AH OUT 61H,AL POP DI POP DX POP CX POP BX POP AX RETGENSOUND ENDPMUSIC2 PROC NEAR PUSH DS SUB AX,AX PUSH AX LEA SI,MUS_FREG2 LEA BP,DS:MUS_TIME2FREG2: MOV DI,SI CMP DI,-1 JE END_MUS2 MOV DX,DS:BP MOV BX,3500 CALL GENSOUND ADD SI,2 ADD BP,2 JMP FREG1END_MUS2: RETMUSIC2 ENDPMUSIC3 PROC NEAR PUSH DS SUB AX,AX PUSH AX LEA SI,MUS_FREG3 LEA BP,DS:MUS_TIME3FREG3: MOV DI,SI CMP DI,-1 JE EN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论