音乐发生器接口程序
更新时间:2023-05-28 09:48:01 阅读量: 实用文档 文档下载
微机原理实验 音乐发生器接口程序
;*------------------------------------------------------*/
;* Music.asm(音乐发生器接口实验) */
;* 音乐发生器程序Source File */
;* Copyright (c) 2005 by HUST */
;*------------------------------------------------------*/
sstack segment stack
dw 200 dup(?)
sstack ends
data segment
bg db 'hou lai...'
db 0ah,0dh
db 'press any key to stop! ',0ah,0dh,'$'
freq dw 2 dup(330,294,330) ;"后来乐曲中,音符的频率(音阶) dw 2 dup(262,262,262,294,330,349) ;其中,0频率表示结尾 dw 2 dup(330,330,349,294,262,294,294,247,247)
dw 2 dup(262,262,220,220,247,262,262,294)
dw 2 dup(330,247,247,247,262,247,220)
dw 2 dup(220,440,392,349,330,349)
dw 2 dup(392,247,262,349,330)
dw 2 dup(349,349,349,330,249,262,247,294,262)0
time dw 10 dup(4,2,2) ; "后来"乐曲中,音符的延时(节拍) dw 2 dup(16,4,4,4,4,4) ;其中4,8,16表示延时的次数 dw 2 dup(16,2,2,4,2,2,4,2,2)
dw 2 dup(8,2,2,2,2,8,4,4)
dw 2 dup(4,2,2,1,4,2,2)
dw 2 dup(16,4,4,4,4,4)
dw 2 dup(8,4,1,4,4)
dw 2 dup(8,2,2,4,4,4,2,2,24)0
old_seg dw ?
old_off dw ?
data ends
code segment
assume cs:code, ds:data, ss:sstack
star proc far ;程序开始
mov ax,data
mov ds,ax
mov ax,sstack
mov ss,ax
微机原理实验 音乐发生器接口程序
push di ;寄存器压栈
push si
push bp
push bx
mov al,80h ;8255初始化0
mov dx,303h
out dx,al
mov al,06h
mov dx,303h
out dx,al
mov al,0eh
mov dx,303h
out dx,al
mov al,36h
mov dx,307h
out dx,al
mov dx,offset bg
mov ah,9
int 21h
mov si,offset freq
mov bp,offset time
pp: mov ah, 0bh
int 21h
cmp al,00
jne end_sing
mov di,[si]
cmp di,0
je end_sing
mov dx,12h
mov ax,34dch
div di
mov dx,304h
out dx,al
mov al,ah
out dx,al
mov dx,303h ;关闭8253的T2计数器(8255的PC6=0) ;关闭喇叭(8255的PC0=0) 初始化0 ;显示提示信息 ;设置频率指针→si ;设置延时指针→bp ;检测是否有任意键按下? ;若有,则结束演凑 ;取1个音符的频率→di ;检测是否是乐曲结尾 ;若是,则结束演凑 ;计算音符的频率所对应的8253计数初值;1.19318MHz ;向8253装入计数初值 ;先装低字节 ;再装高字节 ;打开喇叭(8255的PC0=1) ;8253
微机原理实验 音乐发生器接口程序
mov al,0fh
out dx,al
mov al,07h ;打开8253的T2(PC6=1),开始发声 out dx,al
mov bx,ds:[bp] ;取1个音符的延时次数→bx
call time_delay ;调用延时子程
mov dx,303h ;关闭8253的T2(PC6=0)
mov al,06h
out dx,al
mov al,0eh
out dx,al
add si,2
add bp,2
jmp pp
end_sing:
mov dx, 303h
mov al,06h
out dx, al
mov al, 0eh
out dx, al
pop bx
pop bp
pop si
pop di
mov ax,4c00h
int 21h
star endp
new_intr proc
dec bx
iret
new_intr endp
time_delay proc near
pushf
push ds
push es
push bx ;关闭喇叭(PC0=0) ;取下1 个音符的频率 ;取下1 个音符的延时次数 继续 ;关闭8253的T2 ;关闭喇叭 ;寄存器出栈 ;返回DOS ;新中断服务程序 ;该服务程序只将延时次数-1 ;延时子程序 ;压栈 ;
微机原理实验 音乐发生器接口程序
mov ah,35h ;取原中断(INT1CH)的向量,并保存 mov al,1ch
int 21h
mov old_off, bx
mov bx, es
mov old_seg, bx
pop bx
pop es
push ds
mov ah, 25h
mov al, 1ch
mov dx, seg new_intr
mov ds,dx
lea dx, new_intr
int 21h
pop ds
TD: cmp bx,0h
jnz TD
mov ah,25h
mov al,1ch
mov dx,old_seg
push dx
mov dx,old_off
pop ds
int 21h
pop ds
popf
;time delay end
ret
time_delay endp
code ends
end star ;设置新中断服务程序的向量 ;延时次数已到? ;未到,则继续 已到,则恢复原中断向量 ;程序结束 ;
正在阅读:
音乐发生器接口程序05-28
35kV继电保护试验作业指导书 - 图文05-11
金蝶K3与用友U8在存货计量单位设置上的区别 - 图文01-20
2018-自主招生自荐信:哈尔滨工业大学-实用word文档(2页)12-20
凉街群众评议工作总结01-05
大学生在校表现鉴定02-24
电梯IC卡选层梯控说明05-16
浅谈构建酒店餐饮服务业培训体系的要点05-13
学生在校证明范文02-13
小学生绿色优秀作文06-15
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 发生器
- 接口
- 程序
- 音乐
- 东方金诚-中部区域分析及城投展望-2020.8-18页
- 变压器轻瓦斯动作处理
- 资金的价值等值计算公式如何应用
- 什么叫51单片机最小系统
- 01-MATLAB精馏塔塔板数计算
- 工程节能保温施工
- 陕西事业单位考试公共基础知识—文学常识汇总(下)
- 厌氧氨氧化菌的物种多样性与生态分布
- 2008年中山大学考研真题精讲精练之高等代数
- 《建筑工程计量与计价》形成性考核二 正确
- 浅谈小学英语课堂导入
- 射频识别系统中读写器的设计
- 假期医院社会实践报告
- 北京某剪力墙结构高层住宅楼工程施工组织设计
- 你只是看起来很努力
- 民歌著作权纠纷个案研究文献综述
- 【分享】几款代理工具简要说明
- 2011江苏省高考语文试卷及答案知识大全_图文
- 本化工公司员工安全考试试题
- (全国通用版)2018-2019高中数学 第二章 平面解析几何初步 2.1 平面直角坐标系中的基本公式练习 新人教B版