music.asm

来自「一首歌曲的汇编程序」· 汇编 代码 · 共 65 行

ASM
65
字号
data SEGMENT 
tabf DW -1,262,350,352,350,441,393,350,393,441
     DW 350,352,441,525,589,588,589,525,441
     DW 440,350,393,350,393,441,350,293,294,262
     DW 350,589,525,441,440,350,393,350,393,589
     DW 525,441,440,525,589,700,525,441,440,350
     DW 393,350,393,441,350,294,292,262,350,0
tabt DB 4,4,6,2,4,4,6,2,4,4
     DB 6,2,4,4,12,1,3,6,2
     DB 4,4,6,2,4,4,6,2,4,4
     DB 12,4,6,2,4,4,6,2,4,4
     DB 6,2,4,4,12,4,6,2,4,4
     DB 6,2,4,4,6,2,4,4,12
n EQU 15
ttt DW 0
data ENDS 
code SEGMENT 
  ASSUME CS:code,DS:data
beg:MOV AX,data
    MOV DS,AX
open:IN AL,61h
     OR AL,03h
     OUT 61h,AL
aga:MOV SI,OFFSET tabf
    MOV DI,OFFSET tabt
last:CMP WORD PTR[SI],0
     JE aga
MOV DX,12h
MOV AX,34deh
DIV WORD PTR[SI]
OUT 42h,AL
MOV AL,AH
OUT 42h,AL
CALL delay
ADD SI,2
INC DI
MOV AH,1
INT 16h
JZ last
close:IN AL,61h
AND AL,0fch
OUT 61h,AL
MOV AH,4ch
INT 21h
delay PROC 
MOV AL,n
MUL BYTE PTR[DI]
MOV ttt,AX
MOV AH,2dh
MOV CX,0
MOV DX,0
INT 21h
read:MOV AH,2ch
INT 21h
MOV AL,100
MUL DH
MOV DH,0
ADD AX,DX
CMP AX,ttt
JC read
RET
delay ENDP
code ENDS 
  END beg

⌨️ 快捷键说明

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