汇编语言音乐简谱码

合集下载

汇编钢琴发声与两只老虎程序

汇编钢琴发声与两只老虎程序

燕山大学课程设计报告汇编与接口课设学院信息科学与工程学院年级专业计算机科学学生姓名学号指导教师提交日期2011/7/1实验一钢琴程序一.实验目的进行汇编语言程序设计应用的综合性训练。

综合运用汇编语言循环程序和子程序编程方法,巩固提高汇编语言程序设计能力应用水平。

二.实验要求按下数字键1-8发出哆来咪发嗖拉西多的声音,当按下ctrl+c键时退出程序三.设备与环境PC兼容机、Windows操作系统、汇编程序masm5.0 四.实验分析1.程序开始先将查好的频率写入到数据段中,定义主程序,当用户从键盘输入时,先判断是否是结束键,如果是结束键则退出,如果不是,再判断是不是1-8之间的数字键,若不是,则跳转到出错处理部分;如果是,则去频率表中调出相应的频率,并进入到发音子程序中。

2.发音PC系列机中,利用8254计数器2的输出,控制扬声器的发生音调,作为机器的报警信号或者伴音信号。

计数器2的OUT 端经过放大后接扬声器,OUT端还和8255A的B端口输出PB1相与。

所以要使扬声器工作,要求8255A的PB1和PB0同时为1。

向43端口中写入计数器2控制字,在AX中设置初值为1234DCH,计数值=1234DCH/频率,然后先低后高向42端口写入计数值。

之后将8255A的PB1和PB0修改为1并将原来的值保存在AH中,以便恢复。

为了建立一个与处理器无关的时间延迟,利用硬件,通过监控端口61H的PB4,使PB4每15.08us触发一次,以产生一个固定不变的时间基准。

Waitf子程序就是产生一个N*15.08us 时间延迟的程序,在CX中放入663产生10ms时延,再向BX中放入100来产生1s的持续时间。

五.参考程序:stacks segment para 'stack' ;定义堆栈stacks db 64 dup('stack...')stacks ends;------------------------------------dseg segment para 'data'table dw 262 ;1dw 294 ;2dw 330 ;3dw 349 ;4dw 392 ;5dw 440 ;6dw 494 ;7dw 523 ;8dseg ends;------------------------------------cseg segment para 'code'assume cs:cseg,ds:dseg,ss:stacksmain proc far ;设置数据段的段地址mov ax,dsegmov ds,axnew_note:mov ah,01h ;是否结束int 21hcmp al,20hje exitmov bx,offset tablecmp al,'1' ;判断是否为1-8的数jb new_notecmp al,'8'ja new_noteand ax,0fhshl ax,1 ;(ax-1)*2 字存储sub ax,2mov si,axmov di,[bx][si]call soundfjmp new_notesoundf proc near ;调用子程序push axpush bxpush cxpush dxpush dimov al,0b6hout 43h,almov dx,12h ;设置方式控制字mov ax,348Chdiv diout 42h,almov al,ahout 42h,alin al,61hmov ah,alor al,3out 61h,almov bx,100delay: mov cx,663 ;10ms 通过循环调用实现call waitfdec bxjnz delaymov al,ahout 61h,al ;恢复8255A端口原来的值pop dipop dxpop cxpop bxpop axretsoundf endpwaitf proc nearpush axwaitf1:in al,61hand al,10h ;判断pb4是0还是1cmp al,ahje waitf1mov ah,alloop waitf1pop axretwaitf endpexit:mov ax,4c00h ;返回DOSint 21hmain endpcseg ends;------------------------------------end main六、代码运行与结果在键盘上按下1-8数字时,扬声器会奏出八个不同的音阶,同时频幕上显示出输入字符;输入Ctrl+C退出,如果输入非1-8或空格字符,程序不予响应。

汇编语言音乐播放器

汇编语言音乐播放器

汇编语言音乐播放器ORG 0000HAJMP LOOOOP //绝对转移指令。

ORG 000BHAJMP TIM0ORG 001BHRETI //中断返回指令ORG 0023HLOOOOP: MOV A,#01HLOOOP: MOV P1,#3FHMOV P2,ARL A //A左移MOV R2,#0FFHDELAY0: MOV R3,#0FFHDJNZ R3,$ //$在某些51的汇编语言里表示本条指令的地址DJNZ R3,$ 意思是 R3减一,不为零跳转到本条指令(为零执行下一条指令) MOV R4,#0FFHDJNZ R4,$DJNZ R2,DELAY0JNB P3.3,START //直接寻址位不为1转LJMP LOOOP //长调用指令START: MOV P1,#06HMOV R5,#00H /初始化MOV TMOD,#00010001BMOV IE,#10101010BMOV DPTR,#TAB2 //装第一首歌MOV 30H,DPL //DPTR低8位送30H暂存MOV 31H,DPH //DPTR高8位送31H暂存START1: INC R4 寄存器内容加1//产生8位随机数MOVA,#01010101BMOV B,R4MUL ABMOV P2,AMOV DPL,30HMOV DPH,31HMOV A,#00HMOVC A,@A+DPTR //查表MOV R0,A //音符数据送R0暂存MOV A,#00HINC DPTR //DPTR的内容加1MOVC A,@A+DPTR //查表MOV R1,A //节拍数据送R1暂存INC DPTRMOV 30H,DPLMOV 31H,DPHCJNE A,#01H,ELECT//立即数与A相比不相等则转移/一首歌没结束转ELECTINC R5LJMP KEYWORK //结束歌曲计数器加1ELECT: JZ START //所有歌曲结束转START循环(累加器内容为0转移)MOV A,R0JNZ SING (累加器内容不为0转移)CLR TR0 //累加器内容清0SETB P3.7 //置位直接位LOOP1: ACALL DELAY //绝对调用(调用延时子程序)DJNZ R1,LOOP1SJMP START1 //相对转移SING: MOV DPTR,#TAB1 //音符表首地址送DPTRDEC R0 //R0内容减1(计算音符)MOV A,R0MOV B,#02HMUL AB //A乘以BMOV R0,AMOVC A,@A+DPTRMOV 21H,AINC DPTR //数据之指针加1MOV A,R0MOVC A,@A+DPTRMOV 20H,AMOV TL0,20HMOV TH0,21HSETB TR0 开T0定时器LOOP2: ACALL DELAYDJNZ R1,LOOP2AJMP START1TIM0: MOV TL0,20HMOV TH0,21HCPL P3.7RETI 中断返回DELAY: MOV R2,#70DELAY1: MOV R3,#252DJNZ R3,$JNB P3.3,AGAIN 重复正播放的曲子JNB P3.4,FORM //上一曲开关按下转FORM JNB P3.5,NEXT //下一曲开关按下转NEXT DJNZ R2,DELAY1RETAGAIN: JNB P3.3,$ 等待键释放LJMP KEYWORKFORM: CLR EA 关中断JNB P3.4,$ 等待键释放CJNE R5,#00H,ZERO 不是第一首歌曲转ZER0MOV R5,#04H//是第一首将最后一首歌曲装入歌曲计数器 SJMP KEYWORKZERO: DEC R5 歌曲向上进一首SJMP KEYWORKNEXT: CLR EAJNB P3.5,$CJNE R5,#04H,LASTMOV R5,#00HLJMP KEYWORKLAST: INC R5 歌曲下翻一首LJMP KEYWORKKEYWORK: MOV DPTR,#TAB//将歌曲排列表装入DPTRMOV A,R5//将R5的内容送ARL A //A左移SETB EA //开中断JMP @A+DPTR // 根据A的内容转向不同歌曲TAB: AJMP MUSIC2AJMP MUSIC3AJMP MUSIC4AJMP MUSIC5MUSIC2: MOV DPTR,#TAB2 //第二首歌曲送DPTRMOV P1,#06HGONG: MOV 30H,DPLMOV 31H,DPHAJMP START1MUSIC3: MOV DPTR,#TAB3MOV P1,#5BHSJMP GONGMUSIC4: MOV DPTR,#TAB4MOV P1,#4FHSJMP GONGMUSIC5: MOV DPTR,#TAB5MOV P1,#66HSJMP GONG********************(音符表)**********************; TAB1:DW 64021,64185,64331,64400,64524,64632,64732DW 64777,64860,64934,64968,65030,65085,65134DW 65157,65198,65235,65252,65283,65310,65335 ;**********************(因为爱情)*************************;TAB2:DW0910H,0A08H,0C08H,0C08H,0A18H,0010H,0C08H,0A08H DW0908H,0C08H,0C20H,0D08H,0E08H,0F08H,0F08H,0F08H DW 0E08H,0F18H,0E04H,0E08H,0E08H,0C08H,0A08H,0A20H DW0C08H,0A08H,0C08H,0D08H,0D18H,0C08H,0D08H,0C08H DW0C08H,0808H,0820H,0608H,0808H,0A08H,0908H,0608H DW0A08H,0908H,0608H,0A08H,0908H,0608H,0D10H,0C20H DW 0001H ;*********************(兰花草)***********************;TAB3:DW0608H,0A08H,0A08H,0A08H,0A18H,0908H,0808H,0908H DW0808H,0708H,0620H,0D08H,0D08H,0D08H,0D08H,0D18H DW0C08H,0A08H,0C08H,0C08H,0B08H,0A20H,0A08H,0D08H DW0D08H,0C08H,0A18H,0908H,0808H,0908H,0808H,0708H DW 0610H,0310H,0308H,0808H,0808H,0708H,0618H,0A08H DW 0908H,0808H,0708H,0508H,0620H,0908H,0808H,0708H DW 0508H,0640H,0001H ;*********************(我只在乎你)*****************************;TAB4: DW 0A08H,0A08H,0A08H,0908H,0A10H,0C08H,0C08H,0C2 0H DW0D08H,0D08H,0D08H,0C08H,0A10H,0D08H,0C08H,0C20H DW 0F08H,0F08H,0F08H,0D08H,1010H,0F08H,0C08H,0C20H DW0D08H,0D08H,0D08H,0F08H,0D08H,0C10H,0A10H,0920H DW0A08H,0A08H,0A08H,0908H,0A10H,0C08H,0C08H,0C20H DW0D08H,0D08H,0D08H,0C08H,0A10H,0C08H,0C08H,0C20H DW 0F08H,0F10H,0D08H,1010H,1010H,0F08H,0C08H,0C20H DW 1010H,0C10H,0F10H,1010H,1110H,1010H,0F10H,0E10H DW0F10H,0E10H,0D10H,0C10H,0D40H,0020H,0004H,0F08H DW 1008H,1110H,1010H,0F10H,0E10H,0F10H,0E10H,0A10H DW0C10H,0D20H,0008H,0D08H,0C08H,0D10H,0F10H,0F20HDW 0010H,0F20H,1010H,1110H,0F10H,1010H,0F10H,0D08H DW 0D08H,1210H,1110H,1010H,0F08H,1208H,1210H,1110H DW 1010H,0F10H,1030H,1110H,1008H,0F08H,0F20H,0F10H DW 1010H,1120H,0F10H,1410H,1310H,1108H,1008H,0F10H DW0D30H,0010H,0C10H,0F10H,1110H,1310H,1408H,1108H DW 1008H,0F10H,0D10H,0F10H,0F08H,1010HF08H,0F40H DW 0001H*********************(童年)****************************;TAB5:DW0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0D08H,0E08H DW0D08H,0D08H,0D08H,0D08H,0C08H,0F10H,0F08H,0F08H DW 0F08H,0D08H,0F08H,0D08H,0C40H,0A08H,0C08H,0C10H DW0C08H,0A08H,0D08H,0D08H,0E08H,0D08H,0D08H,0D08H DW 0D08H,0C08H,0F10H,0F08H,0F08H,0F08H,0D08H,0D08H DW 0F08H,1040H,1308H,1308H,1310H,1310H,1108H,1008H DW 0F08H,0F10H,0D08H,0D08H,0F08H,0D08H,0F08H,1008H DW 1008H,1008H,1008H,1008H,0F08H,1108H,1008H,1040H DW 1108H,1110H,1108H,1108H,1008H,1010H,0F08H,0F10H DW 0F08H,1008H,0F08H,0D08H,0C08H,0C08H,0C10H,0C08H DW 0D08H,0C08H,1008H,1108H,0F40H,0001H,0000HEND。

音乐演奏汇编语言程序的设计说明

音乐演奏汇编语言程序的设计说明

目录音乐演奏汇编语言程序设计 (1)前言 (1)1 总体方案论证 (1)1.1功能分析 (1)1.2方案设计说明 (2)1.2.1音乐的代码化 (2)1.2.2音乐演奏的硬件配合 (2)1.2.3音乐演奏的软件设计 (2)2.程序流程图设计及其说明 (3)2.1主流程图说明 (3)2.2音乐播放流程图说明 (3)2.3字符输入及执行操作流程图说明 (3)3.软件设计关键问题或程序段落的说明 (6)3.1字符串显示程序 (6)3.2数据段与外观设计程序 (6)3.3音乐演奏 (8)4.程序调试说明、结果记录及分析 (8)5.课程设计收获及心得体会 (10)参考文献 (11)附录 (12)源程序代码 (12)音乐演奏汇编语言程序设计前言随着科技的高速发展,计算机已经经过了好几代的更新,然而计算机的运行的基本原理依然没有改变的。

而今,我们通过一个学期的学习,已经初步了解了计算机的基本结构和原理,并且已经学会了用汇编语言进行基本的程序编写。

而本次课程设计的主要目的就是巩固所学过的知识,用汇编语言熟练地运用三大结构,进一步掌握一些指令的功能、掌握子程序的定义及调用和INT 21H、INT10H中断的使用,同时熟练运用通用寄存器和堆栈来进行编写一个完整的具有某种特定功能的程序。

在本次课程设计中,考察了我们编程的技巧、运用Debug动态调试工具进行程序的调试的能力。

同时,本道设计题目还检查了学生对汇编语言这门课程的基本知识的掌握程度。

只有掌握汇编语言基本编程方法,掌握程序各部分功能及其相互联系、相互作用,并要熟悉基本的音乐知识,才能独立的把程序写出来,才能把程序写好。

1 总体方案论证1.1功能分析在此次设计中,第一个重点就是音乐播放的控制,要想能按照正常的频率和节拍播放出音乐,就需要合理的设计出给蜂鸣器的频率值和播放的时间。

这样就能比较准确的把音乐按一定的节奏播放出来。

如果我们要想加快播放速度,我们可以改变每一节拍的播放时间,如果我们改变了播放的频率值,那么歌曲也就相应的改变了。

简谱常用记号

简谱常用记号

怎样认识简谱一、简谱怎样表示音的高低在记谱法中,用以表示音的高、低、长、短变化的音乐符号称这音符。

通过一定的节奏、节拍组织起一些相同或不同高低、长短的音符,即构成了一首具有一定音乐形象的曲调的基本部分。

因此,要掌握简谱的规律,首先必须认识各种音符,理解其意义。

在简谱中,用以表示音的高低及相互关系的基本符号为七个阿拉伯数字,即1、2、3、4、5、6、7,唱作do、re、mi、fa、sol、la、si,称为唱名。

音符:1234567唱名:do re mi fa sol la si汉字多来米发梭拉西对照:显然,单用以上七个音是无法表现众多的音乐形象的。

在实际作品中,还有一些更高或更低的音,如在基本音符上方加记一个"·",表示该音升高一个八度,称为高音;加记两个" :",则表示该音升高两个八度,称为倍高音。

在基本音符下方加记一个"·",表示该音降低一个八度,称为低音;加记两个" :",则表示该音降低两个八度,称为倍低音。

在一般歌曲中,无论是在基本音符上方或下方加记两个以上的"·"的音符都是很少见的。

现将高音、中音、低音分组如下:在简谱中,不论基本音符是高音还是低音,七个阿拉伯数字所表示的唱名是始终不变的。

在简谱体系中,如果将1→ i或i→ 1之间的音像阶梯一样按高低次序进行排列,称为音阶。

顺方向1→ i,一个音比一个音高;逆方向i→ 1,一个音比一个音低。

(参见图下图)音阶的种类很多,以上为最基本的自然大调音阶。

在音阶中,相邻两音之间的音高距离不是均等的,其中 3与 4、7与i之间为半音关系,其余各相邻两音之间为全音关系。

一个全音等于两个半音。

在键盘体系中,白键与黑键按固定规律排列,每个键均有固定的名称,用七个英文字母C、D、E、F、G、A、B表示音的名称,称为音名。

音名不等同于唱名,唱名没有固定的音高位置,其音随调的改变而移动(参见"怎样认识简谱中的调与调号"),音名是固定不变的。

(完整word版)汇编语言指令大全,推荐文档

(完整word版)汇编语言指令大全,推荐文档
STD ;置DF=1
CLI ;置IF=0,CPU禁止响应外部中断
STI ;置IF=1,使CPU允许向应外部中断
功能: 完成对标志位的置位、复位等操作.
说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
CLD
处理器控制指令-标志位操作指令
说明:
1. 实际上是两个未组合的十进制数字节相乘,一个0~9的数与另一个0~9的数相乘其积最大为81.为了得到正确的结果,应进行如下调整:
乘积: (AH)<--(AL)/10
(AL)<--(AL)MOD10
2. 本指令应跟在MUL指令后使用,乘积的两位十进制结果,高位放在AH中,低位放在AL中.AH内容是MUL指令的结果被10除的商,即(AL)/10,而最后的AL内容是乘积被10整除的余数(即个位数).
格式: AAD
功能: 在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,其结果为未组合的十进制数,商(在AL中)和余数(在AH中).
说明:
1. AAD指令是在执行除法DIV之前使用的,以便得到二进制结果存于AL中,然后除以OPRD,得到的商在AL中,余数在AH中.
2. 示例: AND AL,0FH ;(AL)<--(AL) AND 0FH
AND AX,BX ;(AX)<--(AX) AND (BX)
AND DX,BUFFER[SI+BX]
AND BETA[BX],00FFH
注意: 两数相与,有一个数假则值为假
CALL
过程调用指令 CALL
格式: CALL OPRD
则(AL)<--(AL)-6,(AH)<--(AH)-1,CF<--AF,(AL)<--(AL) and 0FH,

汇编语言电子琴设计(微机原理课程设计)

汇编语言电子琴设计(微机原理课程设计)

微机原理课程设计(汇编语言)——电子琴设计一、设计内容编写一实现电子琴的程序,并实现若干扩展功能。

基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能:1、在程序中可预设多首曲目,按一键可以进入预设子菜单,对要播放的曲目进行选择,并实现播放该曲目。

2、程序运行时有友好的用户介面。

3. 当弹奏不同音阶时,双色点阵LED显示器显示不同的图案二、元件与仪器1.计时器82532.并行控制器8255A3.实验台三、设计原理、思路及流程图1、设计原理(1)对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。

给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。

对于音乐,每个音阶都有确定的频率。

各音阶标称频率值:(2)产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向D/A转换器输出数据的时间间隔,例如:发"1"频率为261。

1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms. 定时时间可以由8253配合8255来实现。

按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。

本程序中设置默认长度为60个正弦波。

(3)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

(4) 点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。

当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。

车站广场由微机控制的点阵LED大屏幕广告宣传牌随处可见。

(5)实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。

简谱中常用的音乐记号档

简谱中常用的音乐记号档

简谱中常用的音乐记号傻子哥整理do re mi fa so la si哆来米发梭拉西C D E F G A B高音点: 记在音符上方的小圆点表示高音低音点记在音符下方的小圆点表示高音噪音记号:X二、音的长短增时线:记录在音符后面的短横线,表示延长音的时值5—减时线:记录在音符下面的短横线,表示减少音的时值附点:记录在音符后面的小圆点,表示延长原音符时值的一半 5.音符名称写法时值全音符5———四拍二分音符5—二拍四分音符 5 一拍八分音符半拍十六分音符四分之一拍三十二分音符八分之一拍变化音:升记号♯降记号♭还原记号延音线:︵连音符:三、音的强弱音的标准高度:1=C切分音:休止符号:0四、简谱的书写调号:1=D拍号:2/4小节线: |(用竖线将每一小节划分开线叫小节线)终止线:‖连谱号:五、各种记号:1.力度记号f 强p 弱mf 中强mp 中弱渐强渐弱重音记号:<2.反复记号‖::‖,表示记号内的曲调反复唱(奏)。

如果从头反复,前面的可省略。

例如:反复跳跃记号:记在曲调的结尾,表示这段曲调的两次结束不相同:实际唱(奏): A B C A B D(3)D.C.记在乐曲的复纵线下。

表示从头反复,然后到记在Fine 或处结束。

注:“Fine”是结束。

“”是无限延长号,如果放在复纵线上则表示终止。

3.装饰音记号(1)倚音:指一个或数个依附于主要音符的音,椅音时值短暂。

有前倚音、后倚音之分。

例如:(2)颤音:由主要音和它相邻的音快速均匀地交替演奏,颤音的标记用tr或tr~~~~~(3)波音:由主要音和它上方或下方相邻的音快速一次或两次交替而成.波音唱(奏)时一般占主要音的时间.波音分上波音(顺波音)和下波音(逆波音)两种.例如:(4)滑音:主要音向上或向下滑向某个音.欢音分上滑音下滑音两种.滑音除声乐能演唱这一技巧外.一切弦乐器都可演奏.但钢琴等键盘乐器是无法演奏这一技巧的。

(5)回音:∽4、其他记号自由延长记号:换气记号:v顿音:▼保持音:-连线:︵︹二0一二年三月整理。

音乐键盘谱

音乐键盘谱
opqrsssrqrss
ssssvtsq
qqpo opm mopqqqqmpqt
幸福的瞬间
EEJ JJJI J EEJ JIHIJGG HHF HHHHEJ
HHI IIHHLI
IHJ HIIIHJ HIJ IJIHIJGG HGF
MLL JKJJLH HGF HHGF HHGE HHHIIHH
QMOQPQ MOQPQ MORQR MORQR RQRRSSTSTQ
O JJKK IINN IIJJ HHMLM HHII GJIJ
O OOPP ONML LMLJ O OOPP ONML LMLM
再来首《约定》
onopqolj opolj
onopqolo rqpoq
qrst oopqp pq来自s srqpq qrstss uuvuspq rqrs
qrst oopqp
pqs quuqv vuvtsoo tsrqrs ts
qrst oopqp
pqrs srqpq
qrstss uuvuspq rqrs
(EH)IJK (EG)ILK (FJ)MLK (CL)KJI
(DH)FMN (AO)NML (DK)JIM LML
(SJ)QRS-QR(SE)LMNOPQR
(FQ)OPQ-JK(GL)MLKLJKL
(FK)MLK-JI(JE)IHIJKLM
(FK)MLM-NO(GL)MNOPQRS
《小星星》
OOSSTTS RRQQPPO
SSRRQQP SSRRQQP
OOSSTTS RRQQPPO
《千千阙歌》
HHIJ LMONNNLJ
IIIJK MOQPPNL
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档