[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1353] music.asm のプログラミング



小柳です。

music2.asm を参考にして音楽データを作ってみたのですが、
コメントで説明されている
>	unsigned char musicdata[266], [2 /* for align */];
>	// このmusicdataのサイズの決めかた
>	// 3.アセンブル時に出力される.lstファイルを開いて、アドレスを引き算して求める
>	// 4.WORKのサイズは4バイトの倍数でなくてはならないので、端数を忘れずに付ける
についてよく分からないのでお尋ねします。

lst ファイルが
(前略)
 00000020			header			endp	
								
 00000020			static_datas		proc	near
 00000020  00000004					DD	0004H
(中略)
 00000128  F0 03		DB Qcmd, 3
 0000012A  45 18 4F 18		DB O4A,L8, O5G,L8
(中略)
 000001A8  51 30 4F 18 00	DB O5A,L4, O5G,L8, Rst,L8
	   18
 000001AE  FF						DB	0ffH
 000001AF  00						DB	0
 = 00000000			@GL00000001			equ	0
 000001B0			static_datas		endp	
								
 000001B0			main			proc	near
 000001B0  BC 00000800					mov	ESP,0800H
(以下略)

となっています。
この時 musicdata のサイズ = 0x1AF - 0x128 + 0x1 = 136(10進)
WORKのサイズ = 0x1AF - 0x20 + 0x1 = 400
なので結局
unsigned char musicdata[136], [0 /* for align */];
となるような気がするのですが、正しいでしょうか?

よろしくお願いします。

--
小柳 雅明(Koyanagi.Masaaki !Atmark! nifty.ne.jp)