⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 play.asm

📁 you can play music by the keyboard ,just like play plano.
💻 ASM
字号:
STACK SEGMENT PARA STACK 
DW 200 DUP(?) 
STACK ENDS 
DATA SEGMENT 
FQ DW 262,294,330,349,392,440,494 
DW 523,578,659,698,784,880,988 
DW 1046,1175,1318,1397,1568,1760,1976 
KV DB 'WERTYUISDFGHJKZXCVBNM' 
LS DB 'LOW $' 
MS DB 'MIDDLE $' 
HS DB 'HIGH $' 
SFDI DB '1234567' 
ERHINT DB 'ERROR $' 
DATA ENDS 
CODE SEGMENT 
ASSUME CS:CODE,DS:DATA,SS:STACK 
ADR DD ? 
PROT DB ? 
MAIN:MOV AX,DATA 
MOV DS,AX 
LEA BX,SFDI 
IN AL,61H 
MOV CS:PROT,AL 
START:MOV AH,8 
INT 21H 
CMP AL,'P' 
JZ EXIT_0 
CMP AL,' ' 
JZ STOP_0 
MOV SI,0 
MOV CX,21 
COMPARE:CMP AL,[KV+SI] 
JZ SOUND 
INC SI 
LOOP COMPARE 
SOUND:CMP SI,6 
JNA LOW_0 
CMP SI,13 
JNA MIDDLE_0 
CMP SI,20 
JNA HIGH_0 
CMP SI,20 
JA ERROR_0 
FLAG:MOV DL,0AH 
MOV AH,2 
INT 21H 
MOV DL,0DH 
MOV AH,2 
INT 21H 
MOV AX,2 
MUL SI 
MOV SI,AX 
MOV AH,2 
INT 21H 
MOV AL,0B6H 
OUT 43H,AL 
MOV DX,14H 
MOV AX,4F38H 
DIV [FQ+SI] 
OUT 42H,AL 
MOV AL,AH 
OUT 42H,AL 
OR AL,3 
OUT 61H,AL 
JMP START 
ERROR_0:LEA DX,ERHINT 
MOV AH,9 
INT 21H 
MOV DL,0AH 
MOV AH,2 
INT 21H 
MOV DL,0DH 
MOV AH,2 
INT 21H 
JMP START 
EXIT_0:MOV AL,BYTE PTR CS:PROT 
OUT 61H,AL 
MOV AH,4CH 
INT 21H 
STOP_0:AND AL,0FCH 
OUT 61H,AL 
JMP START 
LOW_0:LEA DX,LS 
MOV AH,9 
INT 21H 
MOV DL,BYTE PTR [BX+SI] 
MOV AH,2 
INT 21H 
JMP FLAG 
MIDDLE_0:LEA DX,MS 
MOV AH,9 
INT 21H 
MOV DL,BYTE PTR [BX+SI-7] 
MOV AH,2 
INT 21H 
JMP FLAG 
HIGH_0:LEA DX,HS 
MOV AH,9 
INT 21H 
MOV DL,BYTE PTR [BX+SI-14] 
MOV AH,2 
INT 21H 
JMP FLAG 
CODE ENDS 
END MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -