标题: 用NASM代码解析WAV格式 [打印本页]

作者: daniu    时间: 2014-12-23 19:53
标题: 用NASM代码解析WAV格式
org 0x0000
;================================================================================
;= WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。  =
;=RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个 =
;=字节便是“RIFF”。        =
;=    WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE =
;=Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。    =
;================================================================================
;================RIFF WAVE Chunk=================================================
DD 'RIFF'  ;文件头(WAV格式是以RIFF为标准的,所以文件头为RIFF)
DD (WAVE_End-WAVE_Start);SIZE,文件总长度减去文件头和SIZE
;================================================================================
WAVE_Start:
;================Format Chunk Chunk==============================================
DD 'WAVE'  ;文件格式
DD 'fmt '
DD 0x0010  ;SIZE(数值为16或18,18则最后有附加信息)
DW 0x0001  ;编码方式,一般为0x0001
DW 2   ;声道数目,1--单声道;2--双声道
DD 0x0000AC44  ;采样频率(44100)
DD 0x0002B110  ;每秒所需字节数
DW 0x0004  ;每个采样所需字节数
DW 0x0010  ;每个采样需要的bit数
;DW 0x0000  ;附加信息(可选通过Size来判断有无)
;================================================================================
;================Fact Chunk======================================================
;DD 'fact'  ;ID
;DD 4   ;SIZE
;DD 0x00000000  ;Data
;================================================================================
;================Data Chunk======================================================

; =========================================================================
;     Data Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。然后是
; 数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数,
; wav数据的bit位置可以分成以下几种形式:
; =========================================================================
DD 'data'  ;ID
DD (Data_End-Data_Start);SIZE
Data_Start:

Data_End:
;================================================================================
WAVE_End:






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1