music.asm
来自「计算机汇编实验:表格显示字符」· 汇编 代码 · 共 70 行
ASM
70 行
dseg segment para 'data'
dw 0
mus_f dw 262,294,330,262, 262,294,330,262, 330,349,392
dw 330,349,392, 392,440,392,349,330,262, 392,440,392,349,330,262
dw 294,196,262, 294,196,262
mus_t dw 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 50
dw 25, 25, 50, 12, 12, 12, 12, 25, 25, 12, 12, 12, 12, 25, 25
dw 25, 25, 50, 25, 25, 50
flag dw -1
dseg ends
cseg segment para 'data'
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, 2081
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 + =
减小字号Ctrl + -
显示快捷键?