主题:[原创]请问那位高手帮我写一下:张雨生的《大海》的qb程序!!谢谢
xcm22
[专家分:20] 发布于 2005-12-05 15:31:00
请问那位高手能帮我写一下:张雨生的《大海》的qb程序!!谢谢
回复列表 (共2个回复)
沙发
飞鸟12 [专家分:2830] 发布于 2005-12-06 09:23:00
不是说看到了这个汇编的程序就让我们做qb的吧?!
data segment
freq dw 196,220
dw 262,262,262,262,262,220,196
dw 262,262,262,262,294,262,220,262
dw 294,294,294,294,294,262,220
dw 294,294,294,294,330,294,330,392
dw 440,440,392,440,392,330
dw 294,294,330,294,262,220,196,220
dw 262,262,262,262,262,220
dw 262,196,220
dw 440,440,392,440,524,440
dw 392,330,294,262,220,196,220
dw 262,262,262,262,294,262
dw 262,330,392
dw 440,440,440,440,524,440
dw 392,392,392,440,392,330,294
dw 262,262,262,262,294
dw 330,330,294
dw 262,262,262,262,524,440
dw 392,392,392,440,392,330,392
dw 440,524,524,440,392
dw 392,330,392
dw 440,440,440,440,524,440
dw 392,392,392,440,392,330,294
dw 262,262,262,262,392
dw 330,330,294
dw 262,262,262,262,294,330
dw 392,392,330,392,330,392
dw 440
dw 9,9,196,660,294,294,262
dw 262,-1
time dw 400,400
dw 400,200,400,400,800,400,400
dw 400,200,400,200,200,800,400,400
dw 400,200,400,400,800,400,400
dw 400,200,400,200,200,800,400,400
dw 400,800,400,800,400,400
dw 400,200,200,400,400,800,400,400
dw 400,200,400,400,800,800
dw 1600,800,800
dw 400,800,400,800,400,400
dw 400,400,400,400,800,400,400
dw 400,800,400,800,400,200
dw 2400,400,400
dw 400,800,400,800,400,400
dw 400,800,200,200,800,400,400
dw 400,800,400,800,800
dw 2400,400,400
dw 400,800,400,800,400,400
dw 400,800,200,200,800,400,400
dw 800,400,800,400,200
dw 2400,400,400
dw 400,800,400,800,400,400
dw 400,800,200,200,800,400,400
dw 400,800,400,800,800
dw 2400,400,400
dw 400,800,400,800,400,400
dw 400,800,400,800,400,400
dw 3200
dw 800,400,400,400,400,400,400
dw 4000
data ends
code segment
assume cs:code,ds:data
main proc far
start:mov ax,data
mov ds,ax
mov si,offset freq
mov di,offset time
l1: mov cx,[si]
cmp cx,-1
je exit
mov bx,[di]
call gensound
add si,2
add di,2
jmp l1
exit:mov ax,4c00h
int 21h
main endp
gensound proc near
push dx
mov al,0b6h
out 43h,al
mov dx,8h
mov ax,3208h
div cx
out 42h,al
mov al,ah
out 42h,al
in al,61h
mov ah,al
or al,3
out 61h,al
l2: push dx
push ax
mov dx,8h
mov ax,0f05h
s1: sub ax,1
sbb dx,0
jnz s1
pop ax
pop dx
dec bx
jnz l2
mov al,ah
out 61h,al
pop dx
ret
gensound endp
code ends
end start
板凳
飞鸟12 [专家分:2830] 发布于 2005-12-06 12:39:00
因为 不清楚DATA 数据存放形式 和位置,
所以 只好用数组来储存每一个数据了。
注:一共161个音符
DIM frag(1 TO 161) AS INTEGER, tim(1 TO 161) AS INTEGER
FOR i = 1 TO 161
READ frag(i)
NEXT i
FOR i = 1 TO 161
READ tim(i)
tim(i) = tim(i) / 100
NEXT i
FOR i = 1 TO 161
SOUND frag(i), tim(i)
NEXT i
END
REM freq
DATA 196,220
DATA 262,262,262,262,262,220,196
DATA 262,262,262,262,294,262,220,262
DATA 294,294,294,294,294,262,220
DATA 294,294,294,294,330,294,330,392
DATA 440,440,392,440,392,330
DATA 294,294,330,294,262,220,196,220
DATA 262,262,262,262,262,220
DATA 262,196,220
DATA 440,440,392,440,524,440
DATA 392,330,294,262,220,196,220
DATA 262,262,262,262,294,262
DATA 262,330,392
DATA 440,440,440,440,524,440
DATA 392,392,392,440,392,330,294
DATA 262,262,262,262,294
DATA 330,330,294
DATA 262,262,262,262,524,440
DATA 392,392,392,440,392,330,392
DATA 440,524,524,440,392
DATA 392,330,392
DATA 440,440,440,440,524,440
DATA 392,392,392,440,392,330,294
DATA 262,262,262,262,392
DATA 330,330,294
DATA 262,262,262,262,294,330
DATA 392,392,330,392,330,392
DATA 440
DATA 90,90,196,660,294,294,262
DATA 262
REM time
DATA 400,400
DATA 400,200,400,400,800,400,400
DATA 400,200,400,200,200,800,400,400
DATA 400,200,400,400,800,400,400
DATA 400,200,400,200,200,800,400,400
DATA 400,800,400,800,400,400
DATA 400,200,200,400,400,800,400,400
DATA 400,200,400,400,800,800
DATA 1600,800,800
DATA 400,800,400,800,400,400
DATA 400,400,400,400,800,400,400
DATA 400,800,400,800,400,200
DATA 2400,400,400
DATA 400,800,400,800,400,400
DATA 400,800,200,200,800,400,400
DATA 400,800,400,800,800
DATA 2400,400,400
DATA 400,800,400,800,400,400
DATA 400,800,200,200,800,400,400
DATA 800,400,800,400,200
DATA 2400,400,400
DATA 400,800,400,800,400,400
DATA 400,800,200,200,800,400,400
DATA 400,800,400,800,800
DATA 2400,400,400
DATA 400,800,400,800,400,400
DATA 400,800,400,800,400,400
DATA 3200
DATA 800,400,400,400,400,400,400
DATA 4000
我来回复