课设参考资料之二:图形与发声系统的程序设计演示幻灯片.pptVIP

  • 3
  • 0
  • 约8.9千字
  • 约 71页
  • 2018-02-23 发布于天津
  • 举报

课设参考资料之二:图形与发声系统的程序设计演示幻灯片.ppt

通用的PPT课件演示文稿幻灯片医学教育策划

POP DI ;恢复寄存器 POP DX POP CX POP BX POP AX RET GENSOUND ENDP CODE ENDS END 返回本节 和CPU无关延时程序:产生N*15.08μs延时: waitf proc near push ax waitf1: in al , 61h and al , 10h cmp al , ah ;判断61H的PB4=1否? je waitf1 (15.08μs延时到,PB4=1) mov ah , al loop waitf1 ; CX初始值为15.08μs的倍数N pop ax ret waitf endp 要产生10ms 延时, Cx=10ms/15.08μs =10*103/15.08μs=663 通用发声程序Sounf : 发声10ms的BX倍: 将GENSOUND程序中的: WAIT1:MOV CX,2800H DELAY:LOOP DELAY 修改为: WAIT1 : MOV , 663 CALL WAITF 2.演奏乐曲程序 表10.1 音律与频率对应表(HZ) 音名 C D E F G A B 音符 1 2 3 4 5 6 7 频率 131 147 165 175 196 220 247 音名 C’ D’ E’ F’ G’ A’ B’ 音符 1 2 3 4 5 6 7 频率 262 294 330 349 392 440 494 音符的持续时间是根据乐曲的速度及每个音符的节拍数来确定的。在4/4拍中,每小节4拍,全音符持续4拍,二分音符持续二拍,四分音符持续一拍,八分音符持续半拍.如果给全音符分配1s(100*10ms),则二分音符持续时间为0.5s,四分音符持续时间为0.25s,等等。 乐曲程序的编写步骤: 为乐曲定义一个频率表MUS_FREQ和一个节拍时间表MUS_TIME;节拍时间表中的数据是各音符的节拍持续时间相对10ms的倍数,频率表最后定义0FFFFH或-1作为结束。 将MUS_FREQ的偏移地址送SI,将MUS_TIME的偏移地址送BP,指令如下:LEA SI, MUS_FREQ LEA BP,DS: MUS_TIME 从表中取出音符的频率送入DI,取出音符的持续时间送入BX 指令为:MOV DI,[SI] MOV BX,DS:BP 调用SOUNDF或GENSOUND子程序发出音调 程序如下: TITLE MUSIC –乐曲“玛丽有只小羊羔” EXTRN GENSOUND:FAR ;定义外部调用程序 STACK SEGMENT PARA STACK ‘STACK’ DB 64 DUP(‘STACK’) STACK ENDS 【例10.3】以乐谱“玛丽有只小羊羔”为例编写演奏程序 DATA SEGMENT PARA ‘DATA’ ;为演奏的乐曲定义一个频率表 MUS_FREQ DW 330, 294, 262, 294, 3 DUP(330) DW 3 DUP(294), 330, 392, 392 ; DW 330, 294, 262, 294, 4 DUP(330) DW 294, 294, 330, 294, 262, -1 ;为演奏的乐曲定义一个节拍时间表 MUS_TIME DW 6 DUP(25), 50 DW 2 DUP(25,25,50) DW 12 DUP(25),100 DATA ENDS CODE SEGMENT PARA ‘CODE’ ASSUME CS:CODE,SS:STACK,DS:DATA MUSIC PROC FAR PUSH DS

文档评论(0)

1亿VIP精品文档

相关文档