📄 musex.asm
字号:
dseg segment para 'data'
dw 0
mus_f dw 262,294,330,349,392,440,494,523,0
mus_t dw 7 dup(50),100
flag dw -1
dseg ends
cseg segment para 'code'
assume cs:cseg,ds:dseg
tone proc far
push ds
sub ax,ax
push ax
mov ax,dseg
mov ds,ax
lea si,mus_f
next:lea bp,mus_t
freq:mov di,[si]
cmp di,0
je end_f
mov bx,ds:[bp]
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
long:mov cx,2801
delay:loop delay
dec bx
jnz long
mov al,ah
out 61h,al
test flag,1
jz lower
add si,2
jmp cont
lower:sub si,2
cont:add bp,2
jmp freq
end_f:inc flag
jnz exit
sub si,2
jmp next
exit:mov al,48h
out 61h,al
ret
tone endp
cseg ends
end tone
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -