wave.asm
comment *
ml /c /coff /Fl /Sa wave.asm
link /subsystem:console wave
*
includelib <kernel32.lib>
includelib <winmm.lib>
.386
.model flat, c
option casemap:none
include <kernel32.inc>
include <windows.inc>
include <winmm.inc>
SAMPLE_RATE equ 8000
DATA_LEN equ 4000
.data
; WAVEFORMATEX
wfx dw WAVE_FORMAT_PCM
dw 1
dd SAMPLE_RATE
dd SAMPLE_RATE
dw 1
dw 8
dw 0
; WAVEHDR
wh db 32 dup (0)
wavdat db 500 dup (118,118,138,138)
db 250 dup (118,118,118,118,138,138,138,138)
.data?
hwo dd ? ; HWAVEOUT
.code
start:
mov dword ptr wh[0], offset wavdat
mov dword ptr wh[4], DATA_LEN
invoke waveOutOpen, addr hwo, WAVE_MAPPER, addr wfx, 0, 0, CALLBACK_NULL
invoke waveOutPrepareHeader, hwo, addr wh, 32
invoke waveOutWrite, hwo, addr wh, 32
invoke Sleep, 600
invoke waveOutReset, hwo
invoke waveOutUnprepareHeader, hwo, addr wh, 32
invoke waveOutClose, hwo
invoke ExitProcess, 0
end start
sndplay.asm
comment *
ml /c /coff /Fl /Sa sndplay.asm
link /subsystem:console sndplay
*
includelib kernel32
includelib winmm
.386
.model flat, stdcall
option casemap:none
include kernel32.inc
include winmm.inc
include windows.inc
.data
buf db 'RIFF'
dd 36 + 4000
db 'WAVE'
db 'fmt '
dd 16
dw 1, 1
dd 8000, 8000
dw 1, 8
db 'data'
dd 4000
db 500 dup (90h,90h,70h,70h)
db 250 dup (90h,90h,90h,90h,70h,70h,70h,70h)
.code
start:
invoke sndPlaySoundA, addr buf, SND_MEMORY or SND_SYNC
invoke ExitProcess, 0
end start
最終更新:2021年11月03日 09:01