STACK SEGMENT STACK
DB 256 DUP(0)
STACK ENDS
DATA SEGMENT
OUTB DB 0AH,0DH,"music:yue liang dai biao wo de xin",0AH,0DH,0ah,0dh
db " ^ ^ ^ ^ ",0ah,0dh
db " ^ ^ ^ ^ ",0ah,0dh
db " ^ ^ ^ ^ ",0ah,0dh
db " ^ ^ ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " ^ ^ ",0ah,0dh
db " -- Du Tian Wei.",0ah,0dh
db " 2008.11.25",0ah,0dh
db 0ah,0dh,"$"
music dw 262,1,294,1,330,1,349,1,0,1,392,1,0,1,440,1,0,1,494,1,0,1,523,5
dw 0,4
dw 196,1
dw 262,3,330,1,392,3,262,1
dw 247,3,330,1,392,2,0,1,392,1
dw 440,1,494,2,523,3,440,1
dw 440,1,392,1,392,2,0,2,330,1,294,1
dw 262,3,262,1,262,2,330,1,294,1
dw 262,6,294,1,330,1
dw 294,2,262,1,220,2,294,1,330,1
dw 294,6,0,1,196,1
dw 294,2,220,1,247,1,262,1,294,1
dw 262,6,330,1,392,1
dw 247,6,220,1,247,1
dw 220,3,247,1,220,3,196,2
dw 330,6,392,2
dw 330,3,294,1,262,2,392,2
dw 247,6,220,1,247,1
dw 262,6,294,1,330,1
dw 294,6,0,1
dw 196,1
dw 262,3,330,1,392,3,262,1
dw 247,3,330,1,392,2,0,1,392,1
dw 440,1,494,2,523,3,440,1
dw 440,1,392,1,392,2,0,2,330,1,294,1
dw 262,3,262,1,262,2,330,1,294,1
dw 262,6,294,1,330,1
dw 294,3,220,1,247,2,262,1,294,1
dw 262,6,"$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS: DATA
START PROC FAR
push si
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;PROGRAM START !!!
;CALL WAITT;WAIT A MOMENT
MOV AH,09 ; PRINT
MOV DX,OFFSET OUTB
INT 21H ; PRINT
;jmp exit;text test
mov si , offset music
play: mov ax,ds:[si]
cmp ax,'$'
je exit
cmp ax,0
je jtime
CALL SOUND
jtime: inc si
inc si
mov ax,ds:[si]
call waittime
call endsound ; end sound
inc si
inc si
jmp play
exit: ret
START ENDP
waittime proc near
push cx
mov cx,ax
wloop:call waitt
loop wloop
pop cx
ret
waittime endp
SOUND PROC NEAR ;
push bx
push cx
push dx
mov bx,ax
mov al,10110110b
out 43h,al
mov dx,12h
mov ax,34dch
div bx
out 42h,al
mov al,ah
out 42h,al
in al,61h
or AL,03H
OUT 61H,AL
pop dx
pop cx
pop bx
RET
SOUND ENDP
endsound proc near
push ax
in al,61h
and al,11111100b
out 61h,al
pop ax
ret
endsound endp
WAITT PROC NEAR
push cx
push dx
mov ah,86h
mov cx,3 ;cx:dx
mov dx,0e78dh
int 15h
pop dx
pop cx
ret
WAITT ENDP
CODE ENDS
END START