;代码段
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MAIN PROC FAR
;主程序
START:
CALL INIT ;调用初始化程序
NEW_SCAN:
CALL SCAN_KEY ;扫描所按下的键
CMP SONG,100 ;判断是否按下了自动播放的歌曲键
JE HAND_PLAY ;若不是,继续判断
CALL PLAY_SONG ;若是,演奏音乐
JMP NEW_SCAN ;演奏结束,重新扫描有无键按下
HAND_PLAY:
CMP KEYNUM,100 ;判断是否手动演奏
JZ NEW_SCAN ;若不是,重新扫描有无键按下
;若是,进行按键处理
PUSH BX
MOV BX,KEYNUM
CALL KEY_DOWN ;在屏幕上显示按下状态
POP BX
CALL LOAD_AUDIO ;判断高低音、C/D调,并装入对应频率段地址到BX中
PUSH SI
MOV SI,KEYNUM
MOV DI,[BX+SI]
CALL GEN_HAND ;发声
POP SI
PUSH BX
MOV BX,KEYNUM ;在屏幕上显示弹起状态
CALL KEY_UP