The first time, the code: Title Music - a Music of 'Mary Had a little lamb' EXTRN SOUNDF: FAR; LINK MUSIC SOUNDF Stack Segment Para Stack 'Stack' DB 64 DUP ('Stack ...') stack ends
dseg segment para'data 'mus_freg dw 330,294,262,294,3 dup (330) dw 3 dup (294), 330,392,392 dw 330,294,262,294,4 dup (330) dw 294,294,330,294,262, -1 mus_time dw 6 dup (25), 50 dw 2 dup (25 , 25, 50) DW 12 DUP (25), 100 DSEG Ends
CSEG Segment Para 'CSEG, SS: Stack, DS: DSEG Music Proc Far Mov AX, DSEG MOV DS, AX Lea Si, Mus_Freg LEA BP, DS: MUS_TIME FREQ: MOV DI, [Si] CMP DI, -1 Je Music; JE END_MUS MOV BX, DS: [BP] Call Soundf Add Si, 2 Add BP, 2 JMP Freq End_Mus: MOV AX, 4C00H INT 21H MUSIC ENDP CSEG ENDS End Music ;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;; Title Music - a Music of 'Mary Had a little lamb' Extrn Soundf: Far Stack Segment Para Stack 'Stack' DB 64 DUP ('Stack ...') stack ENDS
dseg segment para'data 'mus_freg dw 330,392,330,294,330,392,330,294,330 dw 330,392,330,294,262,294,330,392,294 dw 262,262,220,196,196,220,262,294,330,262 dw -1 mus_time dw 3 dup (500), 250,250,500,250,250,1000 dw 2 dup (500,500,250,250), 1000 dw 3 dup (500,250,250), 1000 dseg endscseg segment para' code ' Assume CS: CSEG, SS: Stack, DS: DSEG Music Proc Far Mov AX, DSEG MOV DS, AX Lea Si, Mus_Freg Lea BP, DS: Mus_Time Freq: MOV DI, [Si] CMP Di, -1 Je Music; JE END_MUS MOV BX, DS: [BP] Call Soundf Add Si, 2 Add_MUS: MOV AX, 4C00H INT 21h Music Endp CSEG Ends End Music ;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;; Title Soundf - The speaker beeper public soundf cseg segment para 'code'