基于汇编语言的电子琴设计(3)

;代码段

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值