目录 上一页 下一页 下一章

-60- PC机汇编语言实战精解

;--------

PLAY:









;--------















DELAY:











-----------------------------
MOV BX,0

MOV AL,NOTE[BX]
MOV AH,DL_TIME[BX]
INC BX
PUSH BX
PUSH AX
CBW
SHL AX,1
MOV BX,AX
MOV AX,FREQ[BX]
-----------------------------
OUT 42H,AL
MOV AL,AH
OUT 42H,AL

IN AL,61H
OR AL,3
OUT 61H,AL

MOV AH,0
INT 1AH
POP AX
MOV AL,AH
CBW
ADD AX,DX
MOV BX,AX

MOV AH,0
INT 1AH
CMP BX,DX
JNZ DELAY

IN AL,61H
AND AL,0FCH
OUT 61H,AL

POP BX
CMP NOTE[BX],-1

;设定音符数组下标初值

;取一个音符
;取对应节拍
;数组指针加1
;保存音符指针
;保存节拍值
;将音符转为16位
;音符值×2,计算频率表指针
;频率表指针置入BX
;取出对应频率值

;输出频率值



;开启定时器



;取时钟计数值

;取回节拍值

;节拍值转为16位
;加上当前时钟计数值,得到计数终值
;计数终值置入BX


;取时钟计数值
;到终值吗?
;未到,继续延时

;延时结束,关闭定时器



;取回音符数组指针
;演奏结束吗?

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章