微机原理课程设计—电子琴的设计(4)

2018-12-23 23:36

武汉理工大学《微机原理与接口技术》课程设计说明书

参考文献

[1] 彭虎,周佩玲.微机原理与接口技术(第二版).电子工业出版社,2010 [2] 陈慧杰. 计算机扬声器发声的控制. 内蒙古民族大学出版社,2001

[3] Peter Abel著,沈美明等译. IBM PC汇编语言设计程序. 人民邮电出版社,2002

[4] 冯继超.微机原理实验指导书.武汉理工大学出版社,2010

13

武汉理工大学《微机原理与接口技术》课程设计说明书

附录 程序清单

data segment

mesg db 'press q to quit,press d or z or h to chose yin diao',0ah,0dh,'$' mesg1 db 'press q to return,press 1 or 2 to chose music',0ah,0dh,'$' mesg2 db 'press q to return,press c to continue',0ah,0dh,'$'

mesg3 db 'press q to return,press p to play music,press 1~8 to hand play',0ah,0dh,'$' num1 dw 34dch num2 dw 12h

tab dw 262,294,330,347,392,440,494,524 song1 dw 262,294,330,262,262,294,330,262 dw 330,347,392,330,347,392,392,440 dw 392,347,330,262,392,440,392,347

dw 330,262,392,262,392,392,262,392 ;两只老虎 song2 dw 330,330,347,392,392,347,330,294 dw 262,262,294,330,330,294,294,330 dw 330,347,392,392,347,330,294,262

dw 262,294,330,294,262,262 ;欢乐颂 data ends

code segment

assume cs:code,ds:data start:mov ax,data mov ds,ax

loop0:mov dx,offset mesg ;显示输入提示信息 mov ah,09h int 21

loop1:mov ah,07h ;读入字符 int 21h

cmp al,'q' ;为q则退出 je done

cmp al,'d' ;为d,选择低音 jne j1

mov num2,50 jmp choice

j1:cmp al,'z' ;为z选择中音 jne j2

14

武汉理工大学《微机原理与接口技术》课程设计说明书

mov num2,12h jmp choice

j2:cmp al,'g' ;为g选择高音 jne loop0

mov num2,06h

choice:mov dx,offset mesg3 mov ah,09h int 21h

put1:mov ah,07h int 21h

cmp al,'q' ;为q则返回 je loop0

cmp al,'p' ;为p选择演奏 jne next call play jmp put1

next: cmp al,'1' ;为1-8,选择弹奏 jl loop1 cmp al,'8' jg put1 call hand jmp put1

hand proc near ;弹奏子程序 sub al,31h shl al,1 mov bl,al mov bh,0 mov ax,num1 mov dx,num2

div word ptr[tab+bx] mov bx,ax

call speaker ret hand endp

15

武汉理工大学《微机原理与接口技术》课程设计说明书

play proc near ;演奏子程序 loop2: mov dx,offset mesg1 mov ah,09h int 21h

mov ah,07h ;读入字符 int 21h

cmp al,'q' ;为q则返回 je choice

cmp al,'1' ;为1,播放歌曲1 jne next1 call music1 jmp loop3

next1:cmp al,'2' ;为2,播放歌曲2 jne loop2 call music2

loop3:mov dx,offset mesg2 mov ah,09h int 21h

mov ah,7 ;读入字符 int 21h

cmp al,'q' ;为q则退出 je choice

cmp al,'c' ;为c则继续 je loop2 jmp loop3 ret play endp

music1 proc near ;音乐1播放子程序 mov cl,0 ad:inc cl

cmp cl,33 je return mov al,cl

sub al,1 ;取偏移量 shl al,1

mov bl,al ;保存偏移量 mov bh,0

mov ax,num1 ;计算计数初值 mov dx,num2

div word ptr[song1+bx] mov bx,ax

16

武汉理工大学《微机原理与接口技术》课程设计说明书

call speaker jmp ad return:ret music1 endp

music2 proc near ;音乐2播放子程序 mov cl,0 ad:inc cl

cmp cl,31 je return mov al,cl sub al,1 shl al,1 mov bl,al mov bh,0 mov ax,num1 mov dx,num2

div word ptr[song2+bx] mov bx,ax call speaker jmp ad return:ret music2 endp

speaker proc near ;发音子程序 mov al,10110110b out 43h,al mov ax,bx out 42h,al mov al,ah

out 42h,al ;8253初始化

in al,61h ;开扬声器 or al,03h out 61h,al call delay

in al,61h ;关扬声器 and al,0fch out 61h,al ret speaker endp

delay proc near ;延时子程序 push ax push cx

17


微机原理课程设计—电子琴的设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:石油华东《信息系统安全技术》2018年秋学期在线作业(一)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: