📄 test3.asm
字号:
extrn gensound:far
stack segment para stack 'stack'
db 64 dup ('stack...')
stack ends
dseg segment para 'data'
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
dw -1
mus_time dw 3 dup (50),25,25,50,25,25,100
dw 3 dup (50,50,25,25),100
dw 3 dup (50,25,25),100
dseg ends
cseg segment para 'code'
assume cs:cseg,ss:stack,ds:dseg
music proc far
push ds
sub ax,ax
push ax
mov ax,dseg
mov ds,ax
lea si,mus_freq
lea bp,mus_time
freq: mov di,[si]
cmp di,-1
je end_mus
mov bx,[bp]
call gensound
add si,2
add bp,2
jmp freq
end_mus: ret
cseg ends
end music
public gensound
cseg segment para 'code'
assume cs:cseg
gensound proc far
push ax
push bx
push cx
push dx
push di
mov al,0b6h
out 43h,al
mov dx,12h
mov ax,533h*896
div di
out 42h,al
mov al,ah
out 42h,al
in al,61h
mov ah,al
or al,3
out 61h,al
wait1: mov cx,2801
delay: loop delay
dec bx
jnz wait1
mov al,ah
out 61h,al
pop di
pop dx
pop cx
pop bx
pop ax
ret
gensound endp
cseg ends
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -