汇编数字钢琴乐曲设定.docVIP

  • 3
  • 0
  • 约3.58千字
  • 约 6页
  • 2018-04-23 发布于河南
  • 举报
汇编数字钢琴乐曲设定

数字钢琴源程序: CODE SEGMENT ASSUME CS:CODE START: MOV AL, ;初始化8253 的2号寄存器工作在方式3(方波发生器) OUT 43H, AL ;将控制字送到控制寄存器 PS: MOV AH, 01H ;输入一个字符 INT 21H ;字符默认输入到AL中 CMP AL, 1 ;判断是否输入1 JE P1 ;为1时跳转P1 CMP AL, 2 ;判断是否输入2 JE P2 ;为2时跳转P2 CMP AL, 3 ;判断是否输入3 JE P3 ;为3时跳转P3 CMP AL, 4 ;判断是否输入4 JE P4 ;为4时跳转P4 CMP AL, 5 ;判断是否输入5 JE P5 ;为5时跳转P5 CMP AL, 6 ;判断是否输入6 JE P6 ;为6时跳转P6 CMP AL, 7 ;判断是否输入7 JE P7 ;为7时跳转P7 CMP AL, e ;判断是否输入e JE E ;为e时跳转结束 JMP PS ;都不是跳转PS 待重新输入字符 E: MOV AH,4CH ;结束 INT 21H P1: MOV BX, 523 ;对应的输出频率 523,578,659,698,784,880,980 JMP D ;跳转除法操作 P2: MOV BX, 578 JMP D P3: MOV BX, 659 JMP D P4: MOV BX, 698 JMP D P5: MOV BX, 784 JMP D P6: MOV BX, 880 JMP D P7: MOV BX, 980 JMP D D: MOV DX, 12H ;将时钟的主频率送至被除数 MOV AX, 34DEH DIV BX ;进行除法操作 商保存在AX中 OUT 42H, AL ;将AX中的计数次数送至8253的存储器2 MOV AL, AH ;送低位 OUT 42H, AL ;送高位 MOV AL, ;设置B组端口的低两位为1 OUT 61H, AL ;将AL中内容送至8255的B端口 允许喇叭发声 MOV BX, 1000 ;延时一段时间 让喇叭持续输发声 DELAY1: MOV CX, 0CFFFH DELAY2: LOOP DELAY2 DEC BX JNZ DELAY1 MOV AL, ;设置B组端口的低两位为0 OUT 61H, AL ;将AL中内容送至8255的B端口 终止喇叭发声 JMP PS ;跳转PS以待按下下一个键 CODE ENDS END START 乐曲设定源程序: CODE SEGMENT ASSUME CS:CODE melody DB 1234567e ;在此设置整个乐曲对应的旋律e结束 time DW 100,100,100,100,100,100,100,100 ;在此设置每个旋律的持续时间 START: MOV AL, ;初始化8253 的2号寄存器工作在方式3(方波发生器) OUT 43H, AL ;将控制字送到控制寄存器 MOV SI, 0 PS: MOV AL, melody[SI] ;取出对应的字符旋律输入到AL中

文档评论(0)

1亿VIP精品文档

相关文档