📄 sound.asm
字号:
name sound.asm
public beep,sound
include macro.lib
stack segment stack
db 200 dup(0)
stack ends
data segment public 'data'
freg dw 5421,4828,4056,3614,3614,4056,4552,4828
dw 5421,4828,4552,4828,5421,5421
dw 5421,4828,4552,4056,3614,3614,2710,3417,4056,4056
dw 3 dup(4552),4056,4552,3614,3614
dw 4 dup(2710),3614,4 dup(3042),3614,4056
dw 4056,4552,3042,3614,3614
dw 4 dup(2710),2415,2710,4 dup(3042),3614,4056
dw 4552, 4552,5421,6085,5421
dw 3 dup(4056),3614,3042,3614,3042,5421
dw 4 dup(2280),2415,2710,3042,3042
dw 3 dup(4056),3614,3042,3614,4056,4056,3614,3042,3042,3614
dw 3 dup(4056),3614,3042,2280,2415,2415,2710,0
time dw 3 dup(25),12,12,4 dup(25),25,25,4 dup(12),100
dw 3 dup(25),3 dup(12),25,25,12,3 dup(25),4 dup(12)
dw 100,12,25,12,25,25,12,25,12,25,12,12,3 dup(25)
dw 12,12,100,2 dup(12,25,12,25,12,12),25,25,12
dw 12,25,100,2 dup(12,12,12,12,25,12,12,100)
dw 4 dup(12),25,25,12,25,12,25,25,4 dup(12)
dw 25,3 dup(12),88
si_freg dw freg
di_time dw time
data ends
code segment public 'data'
.386
assume ss:stack,cs:code,ds:data
;帮助菜单的歌曲播放
sound proc far
pusha
push ds
mov ax,data
mov ds,ax
mov si,si_freg
mov di,di_time
mov al,0b6h
out 43h,al
mov ax,[si]
cmp ax,0
jne next
mov si_freg,offset freg
mov di_time, offset time
jmp exit
next:
out 42h,al
mov al,ah
out 42h,al
in al,61h
mov ah,al
or al,3
out 61h,al
delay 50
mov al,ah
out 61h,al
add si,2
add di,2
mov si_freg,si
mov di_time,di
exit:
pop ds
popa
iret
sound endp
;====================================================
;发出菜单激活的声音
beep proc far
pusha
mov al,0b6h
out 43h,al
mov ax, 4056
out 42h,al
mov al,ah
out 42h,al
in al,61h
mov ah,al
or al,3
out 61h,al
delay 10
mov al,ah
out 61h,al
popa
ret
beep endp
;=============================================
code ends
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -