musex.asm

来自「这是一个电话号码程序」· 汇编 代码 · 共 56 行

ASM
56
字号
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 + =
减小字号Ctrl + -
显示快捷键?