汇编语言音乐程序
时间:2010-12-22
来源:互联网
这是一个“歌唱祖国”的歌,用汇编写的,供参考
经调试过的,完全可用
DATA SEGMENT PARA'DATA'
FT DW 196,2000,196,2000,262,4000,196,4000,330,4000,262,4000,392,6000,440,2000,392,4000,392,2000,392,2000,523,4000
DW 523,4000,440,3000,392,1000,349,2000,440,2000,392,12000,392,2000,392,2000,440,4000,440,4000
DW 294,4000,294,4000,392,6000,349,2000,330,4000,196,2000,196,2000,392,4000,392,3000,440,1000
DW 392,2000,349,2000,330,2000,294,2000,262,120000,0
OLDS DB ?
MESS1 DB 'PLEASE ENTER A KEY TO START',0DH,0AH,'$'
MESS2 DB ' ENTER S KEY TO STOP',0DH,0AH
DB 'ENTER C KEY TO CONTINUE',0DH,0AH
DB 'ENTER Q KEY TO QUIT',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
STA DW 100 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX,STACK
MOV SS,AX
MOV SP,OFFSET TOP
MOV AX,DATA
MOV DS,AX
MOV ES,AX
CALL TMINIT
MOV OLDS,AL
L0:MOV DX,OFFSET MESS1
MOV AH,09H
INT 21H
MOV AH,8
INT 21H
CMP AL,'A'
JNZ L0
MOV DX,OFFSET MESS2
MOV AH,09H
INT 21H
L4: MOV SI,OFFSET FT
SING:MOV CX,[SI]
MOV DX,[SI+2]
PUSH CX
PUSH DX
L1: MOV DL,0FFH
MOV AH,6
INT 21H
JZ L2
CMP AL,'Q'
JZ SDONE
CMP AL,'S'
JNZ L2
L3: MOV DL,0FFH
MOV AH,6
INT 21H
CMP AL,'Q'
JZ SDONE
CMP AL,'C'
JNZ L3
JMP L2
L2: POP DX
POP CX
OR CX,CX
JZ SDONE
CALL TONE
ADD SI,4
JMP SING
JMP L4
SDONE:MOV AL,OLDS
CALL TMREST
MOV AH,4CH
INT 21H
MAIN ENDP
TMINIT PROC NEAR
IN AL,43H
MOV AH,AL
MOV AL,0B6H
OUT 43H,AL
MOV AL,AH
RET
TMINIT ENDP
TMREST PROC NEAR
OUT 43H,AL
RET
TMREST ENDP
FLOW EQU 4F38H
FHIGH EQU 14H
TONE PROC NEAR
CMP CX,15H
JAE TNEXT
STC
JMP SHORT TRET
TNEXT:PUSH AX
PUSH CX
PUSH DX
MOV DX,FHIGH
MOV AX,FLOW
DIV CX
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,3
OUT 61H,AL
POP DX
CALL DELAY
MOV AL,AH
OUT 61H,AL
POP CX
POP AX
TRET:RET
TONE ENDP
MSI EQU 800
DELAY PROC NEAR
PUSH CX
PUSH DX
ELLLP:MOV CX,MSI
ILP:LOOP ILP
DEC DX
JNZ ILP
POP DX
POP CX
RET
DELAY ENDP
CODE ENDS
END START
...
经调试过的,完全可用
DATA SEGMENT PARA'DATA'
FT DW 196,2000,196,2000,262,4000,196,4000,330,4000,262,4000,392,6000,440,2000,392,4000,392,2000,392,2000,523,4000
DW 523,4000,440,3000,392,1000,349,2000,440,2000,392,12000,392,2000,392,2000,440,4000,440,4000
DW 294,4000,294,4000,392,6000,349,2000,330,4000,196,2000,196,2000,392,4000,392,3000,440,1000
DW 392,2000,349,2000,330,2000,294,2000,262,120000,0
OLDS DB ?
MESS1 DB 'PLEASE ENTER A KEY TO START',0DH,0AH,'$'
MESS2 DB ' ENTER S KEY TO STOP',0DH,0AH
DB 'ENTER C KEY TO CONTINUE',0DH,0AH
DB 'ENTER Q KEY TO QUIT',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
STA DW 100 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX,STACK
MOV SS,AX
MOV SP,OFFSET TOP
MOV AX,DATA
MOV DS,AX
MOV ES,AX
CALL TMINIT
MOV OLDS,AL
L0:MOV DX,OFFSET MESS1
MOV AH,09H
INT 21H
MOV AH,8
INT 21H
CMP AL,'A'
JNZ L0
MOV DX,OFFSET MESS2
MOV AH,09H
INT 21H
L4: MOV SI,OFFSET FT
SING:MOV CX,[SI]
MOV DX,[SI+2]
PUSH CX
PUSH DX
L1: MOV DL,0FFH
MOV AH,6
INT 21H
JZ L2
CMP AL,'Q'
JZ SDONE
CMP AL,'S'
JNZ L2
L3: MOV DL,0FFH
MOV AH,6
INT 21H
CMP AL,'Q'
JZ SDONE
CMP AL,'C'
JNZ L3
JMP L2
L2: POP DX
POP CX
OR CX,CX
JZ SDONE
CALL TONE
ADD SI,4
JMP SING
JMP L4
SDONE:MOV AL,OLDS
CALL TMREST
MOV AH,4CH
INT 21H
MAIN ENDP
TMINIT PROC NEAR
IN AL,43H
MOV AH,AL
MOV AL,0B6H
OUT 43H,AL
MOV AL,AH
RET
TMINIT ENDP
TMREST PROC NEAR
OUT 43H,AL
RET
TMREST ENDP
FLOW EQU 4F38H
FHIGH EQU 14H
TONE PROC NEAR
CMP CX,15H
JAE TNEXT
STC
JMP SHORT TRET
TNEXT:PUSH AX
PUSH CX
PUSH DX
MOV DX,FHIGH
MOV AX,FLOW
DIV CX
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,3
OUT 61H,AL
POP DX
CALL DELAY
MOV AL,AH
OUT 61H,AL
POP CX
POP AX
TRET:RET
TONE ENDP
MSI EQU 800
DELAY PROC NEAR
PUSH CX
PUSH DX
ELLLP:MOV CX,MSI
ILP:LOOP ILP
DEC DX
JNZ ILP
POP DX
POP CX
RET
DELAY ENDP
CODE ENDS
END START
...
作者: lyric13 发布时间: 2010-12-22
先自己顶一个~
作者: lyric13 发布时间: 2010-12-22
不错·~~,帮顶!!!
作者: masmaster 发布时间: 2010-12-22
DW 392,2000,349,2000,330,2000,294,2000,262,120000,0
120000??
120000??
作者: znxllyuan 发布时间: 2010-12-22
居然是大写字母。。我说按了半天才行
作者: znxllyuan 发布时间: 2010-12-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28