📄 lll.asm
字号:
;
STACK SEGMENT STACK
DB 64 DUP(?)
STACK ENDS
;
DATA SEGMENT
mus_freq DW 330,392,330,294,330,392,330,294,330
DW 330,392,330,294,262,294,330,392,294
DW 262,262,220,196,196,220,262,294,330,262
DB -1
mus_time DB 3 dup(50),25,25,50,25,25,100
DB 2 dup(50,50,25),25,100
DB 3 dup(50,25,25),100
DATA ENDS
;
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
;乐曲主程序
music: MOV AX,DATA
MOV DS,AX
A: mov dx, 43h
mov al,10110000B
out 43H,al
mov dx,63h
mov al,90H
out dx,al
aa: MOV AL,0FFH
out 42h,al
mov al,0FFH
out 42h,al
MOV DX,60H
IN AL,DX
MOV AH,AL
AND AL,1
JNE freq
jmp aa
LEA BP,mus_time
LEA SI,mus_freq
freq: MOV DI,[SI]
CMP DI,-1
JE A
MOV BX,[BP]
CALL soundf
ADD SI,2
ADD BP,2
JMP freq
end_mus: MOV AL,20H
OUT 20H,AL
RET
;
soundf PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AL,0B6H
OUT 43H,AL
MOV DX,11H
MOV AX,0BD04H
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
;延时程序
wait: MOV CX,663D
PUSH AX
waitf1: IN AL,61H
AND AL,10H
CMP AL,AH
JE waitf1
MOV AH,AL
LOOP waitf1
POP AX
DEC BX
JNE wait
POP DI
POP DX
POP CX
POP BX
POP AX
RET
soundf ENDP
CODE ENDS
END music
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -