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