汇编语言C大调电子琴程序,基于汇编语言的电子琴设计(2)

六、程序清单:

主要程序代码如下:

;宏定义

DRAW MACRO START_X,START_Y,END_X,END_Y,COLOR

LOCAL DRAW_NEXT

;local :避免宏重复调用时,标号的重复

;功能:画填充的矩形

;使用条件:START_X < END_X ,START_Y < END_Y

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV AH,0CH;写像素点

MOV AL,COLOR;设置颜色

MOV BH,0;选用页号0

MOV CX,START_X;列起始点

MOV DX,START_Y;行起始点

DRAW_NEXT:

INT 10H;画点

INC CX;画横线

CMP CX,END_X;比较行是否画完

JNE DRAW_NEXT;画另一行

MOV CX, START_X;另一行的起始点

INC DX

CMP DX,END_Y;比较列是否画完

JNE DRAW_NEXT;未完继续画

POP DX

POP CX

POP BX

POP AX

ENDM

DRAWSQRE MACRO START_X,START_Y,END_X,END_Y,COLOR

LOCAL ROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHT

;功能:画不填充的矩形

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH SI

MOV AH,0CH

MOV AL ,COLOR

MOV BH,0

MOV CX,START_X

MOV DX,START_Y

ROW_UP:;画上边

INT 10H

INC CX

CMP CX,END_X

JNE ROW_UP

RANK_RIGHT:;画右边

INT 10H

INC DX

CMP DX,END_Y

JNE RANK_RIGHT

MOV CX, START_X;下边起始点

MOV SI,END_X

INC SI

ROW_DOWN:;画下边

INT 10H

INC CX

CMP CX,SI

JNE ROW_DOWN

MOV DX,START_Y;右边起始点

MOV CX,START_X

RANK_LEFT:;画右边

INT 10H

INC DX

CMP DX, END_Y

JNE RANK_LEFT

POP SI

POP DX

POP CX

POP BX

POP AX

ENDM

;数据段

DATA SEGMENT

;定义在屏幕绘制字

START_COL DB ?;存储起始行

TEXT DB 16;起始行

DB 2;起始列

DB 06H;字体颜色

DB 'Piano XP',0FFH,'Copyright(c)Auto-5-5th',0FFH,0FFH;显示字

DB 10 DUP(2 DUP(0DBH),2 DUP(20H)),0FFH;颜色交叉矩形

DB 10 DUP(2 DUP(20H),2 DUP(0DBH)),0FFH

DB 10 DUP(2 DUP(0DBH),2 DUP(20H)),0FFH

DB 10 DUP(2 DUP(20H),2 DUP(0DBH)),0FFH

DB 10 DUP(2 DUP(0DBH),2 DUP(20H)),0FFH

DB 10 DUP(2 DUP(20H),2 DUP(0DBH)),0FFH

DB 00

;白色琴键坐标

ST_LX DW50,61,72,83,94,105,116

ST_MX DW127,138,149,160,171,182,193

ST_HX DW204,215,226,237,248,259,270

ST_YDW50

ED_LX DW60,71,82,93,104,115,126

ED_MX DW137,148,159,170,181,192,203

ED_HX DW214,225,236,247,258,269,280

ED_YDW90

;黑色琴键坐标

BT_XDW 57,68,90,101,112

DW 134,145,167,178,189

DW 211,222,244,254,265

BT_YDW50

BD_X DW64,75,97,108,119

DW141,152,174,185,196

DW218,229,251,262,273

BD_YDW70

;音乐频率值

LOWDDW 131

LOWDD DW 147,165,175,196,220,247

MIDDW 262

MIDD DW 294,330,349,392,440,494

HGHDW 523

HGHD DW 587,659,797,783,879,987,1046

KEYFLAG DB 1;标记低(0)、中(1)、高(2)音键

KEYNUM DW 1;存储1~7

DELAY_TIME DW 7000;延时

SONG DW 100;保存所选的自动演奏的曲目

TUNE DW 1;标记c调或d调

AUDIO DW 1;标记低(1)、中(2)、高音(3)

;自动演奏的歌曲频率和延时

MUS_FREQ1 DW 440,392,330,392,523,440,392,440

DW 330,392,440,392,330,262,220,392

DW 330,2 DUP(294),330,2 DUP(392),440,330

DW 294,262,392,330,294,262,220,262,196

DW -1

MUS_TIME1 DW 37,12,3 DUP(25),2 DUP(12),50

DW 25,2 DUP(12 ),2 DUP(25),4 DUP(12 ),50

DW 37 ,12 ,25,2 DUP(12 ),2 DUP(25),50

DW 37 ,5 DUP(12 ),100

MUS_FREQ2 DW 392,523,392,330,2 DUP(262,330,392),2 DUP(523)

DW 349,3 DUP(440),330,3 DUP(392),294,349,330,294,262

DW 392,523,392,330,2 DUP(262,330,392),2 DUP(523)

DW 349,3 DUP(440),330,3 DUP(392),294,349,330,294,262

DW 392,3 DUP(523),494,587,392,392,3 DUP(587),523,659,392

DW 3 DUP(523),330,3 DUP(392),294,349,330,294,262

DW -1

MUS_TIME2 DW 12 ,3 DUP(25,2 DUP(12 )),2 DUP(25)

DW 2 DUP(19,6,2 DUP(12 )),4 DUP(12 )

DW 25,12 ,3 DUP(25,2 DUP(12 )),2 DUP(25)

DW 2 DUP(19,6,2 DUP(12 )),5 DUP(12 )

DW 2 DUP(19,6,4 DUP(12 ),25)

DW 25,2 DUP(12 ),19,6,6 DUP(12 ),25

MUS_FREQ3 DW 262,262,294,330,330,349,392,440,392,330

DW 392,349,330,294,349,330,294,262

DW 262,262,294,330,330,349,392,440,392,330

DW 392,349,330,294,330,294,262,196

DW 392,349,330,294,196,196,349,330,294,262

DW 392,349,330,294,196,196,349,330,294,262

DW 262,262,294,330,330,349,392,440,392,330

DW 392,349,330,294,330,294,262

DW -1

MUS_TIME3 DW 3 DUP(25,2 DUP(12)),50

DW 2 DUP(25,2 DUP(12),50)

DW 3 DUP(25,2 DUP(12)),50

DW 2 DUP(25,2 DUP(12)),2 DUP (50)

DW 3 DUP(25,2 DUP(12)),50

DW 3 DUP(25,2 DUP(12)),50

DW 3 DUP(25,2 DUP(12)),50

DW 2 DUP(25,2 DUP(12)),50

MUS_FREQ4 DW 262,262,294,330,330,294,262,262,220,196

DW 262,294,330,294,262,294

DW 262,294,330,330,294,294,262,220,220,294,262,262,220,196

DW 196,220,220,262,262,294,294,262,220

DW 294,330,294,262,262,294,262,220,196,220

DW 196,220,262,294,330,392,294,330,262,294,262,220

DW 220,294,247,220,196,196

DW 4 DUP(392),330,392,440,440,392,330

DW 5 DUP(440),392,392,330,294

DW 440,392,440,392,330,294,330,294,262,220

DW 4 DUP(294),262,220,196

DW 2 DUP(440,392),2 DUP(330,294),262,220

DW 3 DUP(294),262,220,392

DW -1

MUS_TIME4 DW 3 DUP(20,10,10),50

DW 20,10,20,10,10,80

DW 20,10,20,10,10,3 DUP(20,10),20,20,80

DW 20,10,10,20,20,20,10,10,40

DW 20,10,20,20,10,5,5,10,10,40

DW 20,10,2 DUP(20,10,10),10,5,5,20

DW 20,20,20,10,10,80

DW 10,20,10,20,10,10,40,10,10,20

DW 8 DUP(10),80

DW 20,10,10,20,20,4 DUP(10),40

DW 15,5,10,10,20,20,80

DW 20,10,10,20,20,4 DUP(10),40

DW 40,20,20,40,40,100

MUS_FREQ5 DW 330,392,440,330,392,294

DW 330,392,440,523,440,392,220,262,330,294

DW 294,330,392,294,330,294,220,220

DW 220,262,294,330,294,247,220,262,196

DW 294,330,294,247,220,196,262

DW523,523,440,523,440,523,440,392

DW392,330,440,392,262,294,262,292,330

DW330,330,294,330

DW523,523,494,440

DW 330,330,294,330,523,494,440,330,392

DW -1

MUS_TIME5 DW 2 DUP(12,12,75),3 DUP(12),25,12,25,6,6,12,75 ;#1,2

DW 12,12,75,4 DUP(12),75,12,12,37,5 DUP(12),75

DW 37,12,12,12,12,12,50

DW 12,12,12,50,12,12,12,75

DW 12,12,37,12,25,6,6,12,50,12,12,12,50,12,12,12,75

DW 12,12,37,12,12,12,12,12,75

DATA ENDS

〈未完〉

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值