sound.asm
来自「学分管理系统的分析」· 汇编 代码 · 共 95 行
ASM
95 行
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 + =
减小字号Ctrl + -
显示快捷键?