问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求汇编语言做的乐曲点播程序

发布网友 发布时间:2022-04-20 00:28

我来回答

3个回答

热心网友 时间:2023-09-03 12:33

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push ax
lea dx,Str_Addr
mov ah,9
int 21h
pop ax
EndM
; -----------------------------------------
; 入口参数
; SI=声音频率地址
; bx=时间节拍地址
Do_Music Proc Near
push dx
push cx
push ax
@@Sound: test word ptr [si],0ffffh
jz @@Return
mov al,0b6h ;向计数器写控制字
out 43h,al ;方式3、双字节写和二进制计数方式写到控制口
mov dx,12h ;设置被除数
mov ax,533h*896
div word ptr [si] ;其商ax为预置值
out 42h,al ;先送LSB
mov al,ah
out 42h,al ;后送MSB
in al,61h ;读端口原值
mov ah,al
or al,3
out 61h,al ;接通扬声器
mov cx,[bx]
@@Waitf1: push cx
mov cx,28010 ;设循环次数为8ff0h
@@delay1: loop @@delay1
pop cx ;循环持续cx次,即传进来的节拍时间
loop @@Waitf1
inc si
inc si ;下一个频率值
inc bx
inc bx ;下一个节拍值
mov al,ah ;写回61h端口值,关闭扬声器
out 61h,al ;关闭扬声器
jmp @@Sound
@@Return: pop ax
pop cx
pop dx
ret
Do_Music EndP
; -----------------------------------------
; 音乐菜单
Music_Str db '***********************************',CR,LF
db '1. Mary had a little lamb',CR,LF ;玛丽有只小羊羔
db '2. Christmas ring',CR,LF ;圣诞铃声
db '3. Little Starlet',CR,LF ;小星星
db '4. Little bee',CR,LF ;小蜜蜂
db '0. Exit',CR,LF ;结束程序
db '***********************************',CR,LF
db 'Please choose the music you want:$' ;提示选择乐曲

Prompt_Str db CR,LF,CR,LF ;音乐播放前的提示信息
db CR,LF,' Now,playing the music which you chose ^_^ please waiting...'
db CR,LF,CR,LF,0eh,'...$'

; 以下为对应各乐曲的频率表和节拍时间表
merry_freq dw 330,294,262,294,3 p(330),3 p(294),330,392,392
dw 330,294,262,294,4 p(330),294,294,330,294,262,0
merry_time dw 6 p(25*400),50*400,2 p(25*400,25*400,50*400),12 p(25*400),100*400

christ_freq dw 7 p(330),392,262,294,330,4 p(349),2 p(330),330,294,294,262,294,392
dw 7 p(330),392,262,294,330,4 p(349),2 p(330),392,392,349,294,262,0
christ_time dw 2 p(25*400,25*400,50*400),4 p(25*400),100*400,2 p(25*400,25*400,50*400)
dw 4 p(25*400),2 p(50*400),2 p(25*400,25*400,50*400)
dw 4 p(25*400),100*400,2 p(25*400,25*400,50*400),4 p(25*400),100*400

star_freq dw 262,262,392,392,440,440,392,349,349,330,330,294,294,262
dw 2 p(392,392,349,349,330,330,294)
dw 262,262,392,392,440,440,392,349,349,330,330,294,294,262,0
star_time dw 3 p(6 p(25*400),50*400,6 p(25*400),50*400)

bee_freq dw 392,330,330,349,294,294,262,294,330,349,4 p(392),330,330,349,294,294
dw 262,330,392,392,3 p(330),5 p(294),330,349,5 p(330),349,392
dw 392,330,330,349,294,294,262,330,392,392,262,0
bee_time dw 2 p(25*400,25*400,50*400),4 p(25*400),3 p(25*400,25*400,50*400)
dw 3 p(6 p(25*400),50*400)
dw 2 p(25*400,25*400,50*400),4 p(25*400),100*400

; 乐曲频率和节拍时间地址表
Music_Table dw merry_freq,merry_time,christ_freq,christ_time,star_freq,star_time,bee_freq,bee_time
Cursor_Tmp dw ? ;音乐菜单光标位置

Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Output Music_Str ;显示音乐菜单
xor bx,bx
mov ah,3 ;取光标位置
int 10h
mov Cursor_Tmp,dx ;保存音乐菜单光标位置
Choise_Item:mov dx,Cursor_Tmp ;取音乐菜单光标位置
xor bx,bx
mov ah,2 ;设置光标位置
int 10h
@@Read_Chr: mov ah,1
int 21h
cmp al,'0'
jb @@Read_Chr
cmp al,'4'
ja @@Read_Chr
and al,0fh
test al,0ffh
jz Exit_Proc
dec al
cbw
shl ax,1
shl ax,1
mov di,ax
Output Prompt_Str ;显示音乐播放前的提示信息
mov si,Music_Table[di] ;对应的频率值地址
mov bx,Music_Table[di][2] ;对应的节拍值地址
call Do_Music ;激活扬声器,使之发出指定频率、指定时长的声音,奏乐
xor bx,bx
mov ah,8 ;度光标位置的字符和属性
int 10h
mov bh,ah ;字符属性
mov cx,Cursor_Tmp
inc ch
xor cl,cl
mov dh,ch
add dh,6
mov dl,79
mov ax,606h ;显示内容上滚
int 10h
jmp Choise_Item
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束

热心网友 时间:2023-09-03 12:33

"音乐演奏程序,刚刚做的"之精简版
http://tieba.baidu.com/f?kz=589840904

热心网友 时间:2023-09-03 12:33

G一首百RMB
用单片机制作的电子琴应如何存储并回放自己弹奏的乐曲

第一你这单片机的音乐弹奏播放本身的程序要编的很好,并充分的利用了中断进行的才有可能按一楼说的办法进行,这的优点是你不只可重听并还可改正你在操作(弹奏)手法上的错误或重新调整一下弹奏速度或节拍。再还要看你本身的RAM(内部随机存贮器)够不够了,如不够你这就要再加装一定容量的RAM。哈!...

汇编的名词解释

汇编的意思 汇编(拼音:huì biān)大多是指汇编语言(Assembly Language),汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇...

...PC汇编语言程序设计实验教程》P74两只老虎简谱;

;乐谱是:;1231 1231 345 345 565431 565431 25(低)1 25(低)1 ;--- extrn delay:far data segment ftable dw 2 dup(262,294,330,262)dw 2 dup(330,349,392,19)dw 2 dup(392,440,392,349,330,262)dw 2 dup(294,196,262,19),-1 ttable dw 8 dup(8)dw 8 dup(8)dw ...

设计一个可以演奏乐曲的红外线遥控电子门铃,设计要求:

(3. 把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;4. 程序设计方法 (1. 我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。...

汇编的拼音狐汇编的拼音是什么

汇编的读音是:huìbiān。汇编的拼音是:huìbiān。结构是:汇(左右结构)编(左右结构)。汇编的具体解释是什么呢,我们通过以下几个方面为您介绍:一、词语解释【点此查看计划详细内容】一种面向机器的低级程序设计语言。是一种符号语言。由基本字符集、语句、标号及一组规则所组成。基本字符集通常包括...

复旦emba图书目录

复旦EMBA的图书目录涵盖了丰富多样的实验内容,旨在提升学生的实践能力和创新能力。在基础篇实验中,学生们将深入学习汇编语言,从数码转换程序设计到图形显示,通过一系列实际操作,如实验一的程序设计与调试,实验八的乐曲播放,以及实验九的磁盘访问,逐步掌握语言的运用。硬件课程实验部分,如实验十的存储器...

幽默语录汇编56条

幽默语录汇编56条1、周末来,假期到,好友聚,真热闹,话思念,唠家常,道兄情,喝小酒,姐妹好,逛商场,平常心,真愉快,无烦闹,好好好。2、你的快乐驱散了我心中的迷雾,你的热情拨动了我的心潮。如果可以,我想

著作财产权包括哪些?各自的含义?

使用权是指以复制、发行、出租、展览、放映、广播、网络传播、摄制、改编、翻译、汇编等方式使用作品的权利。 1.复制权,即以印刷、复印、拓印、录音、录像、翻录、翻拍等方式将作品制作一份或者多份的权利。 2.发行权,即以出售或者赠与方式向公众提供作品的的原件或者复制件的权利。 3.出租权,即有偿许可他人临时...

C语言的编程格式是怎么样的?

1,C语言程序的结构特点 一个C语言程序通常由一个预处理语句开始,如#include〉stdio.h〉,它表示,在编译语言程序前,用指明的文件取代改预处理语句,通常文件名是带有后缀为.h的磁盘文件.编译时,它将从磁盘中读出并插入到原来的预处理程序语句中.即预处理语句被指明的包含文件(头文件)代替.头文件通常...

幼儿园大班语言活动教案

(播放优美的乐曲)教师和幼儿一起诵读; 4、请个别幼儿把自己最喜欢的一段诗歌说给大家听。 5、表演诗歌 这么美的诗歌,我们一起用动作来表现,看谁做得最美。 三、发展想象,仿编诗歌 1、(课件播放画面):小鸡、小狗、小鸟 教师提问:“小朋友,你们知道小鸡、小狗、小鸟的摇篮在哪里吗?让我们帮它们找摇篮吧?” 2...

用汇编语言编写的程序需经过 汇编语言是一种什么程序设计语言 用高级程序设计语言编写的程序 用汇编语言编制的程序可以 汇编语言编写程序通常 关于汇编语言程序相对于 关于汇编语言程序正确 20个简单汇编语言程序 汇编语言源程序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
剪映中不透明度在哪里? ...结果没想到被她给强行按倒在床上了,压的我好 手机剪映怎么把视频背景变透明? 多少天QQ到3个太阳 膝盖怕冷,怕风,夏天也怕冷,感觉有点磨擦,感觉有点闷痛和有点痒似的... 采茶机一芽机器 结合实际谈谈认真学习党章,自觉遵守党章,切实贯彻党章和维护党章... 中行三方存管是什么意思 长大电视剧中白晓菁的衣服是什么牌子? 关于声音的传播速度,下列说法中正确的是( )A.与声源的频率有关B.与声... Excel多条件返回值 求一篇要求“设计并实现一个基于PC机的音乐演奏程序... 输入数字后如果相同就变色的EXCEL自动表格 求教excel公式,三个单元格中的所有数字全排列 如何订购微软的MSDN啊 怎么更改电脑应用程序默认安装路径 光伏太阳能板为什么要清洗 太阳能光伏板清洗方法 太阳能电池板要定期清洁吗~有什么影响··影响对发电... 太阳能光伏组件如何清理维护? 太阳能光伏板脏了怎么清洁? 太阳能光伏板怎么清洗 屋顶安装太阳能发电,如何清洗电池板 光伏发电板的清洗 太阳能光伏板怎么清洗? 光伏发电光板的日常维护与保养 太阳能板需要清洗吗 光伏板应该多久清洗一次啊? 太阳能光伏发电系统中太阳能电池板多长时间清洗一次? 太阳能板用不用经常清洗啊? redhat linux 6.2安装64位oracle时出现错误 excel,输入年级、性别和成绩,从第二张表中找到对... 历史上电影票房排名世界第一的是哪部? 如何解释 $pt CFR 问一首老歌的名字 在EXCEL中,这个公式=IF(COUNTIF($H3:$Y3,MID($EK3... 每年有多少场网球赛 洛克人zx美版金手指,NO$gba2.6a的 欧美最新最流行的音乐 android实验运行出错了 这个是什么错误 名侦探柯南里哀的出场集数 推荐几首好听的英文歌 电脑应用程序图标和用户名怎么改 存放计算机处理器、内存、存储器、通信端口和外围... 苹果手机不用电脑怎么改虚拟定位? 苹果手机怎么改虚拟定位 计算机硬件系统中用来存放当前系统正在运行的程序... 苹果手机怎样虚拟定位? 微信朋友圈虚拟定位的方法 微信怎么虚假定位外省朋友圈