このコードはここにありますが、構文には慣れていません。
STACK16_SIZE = 100h
stack16 db STACK16_SIZE dup (?)
これはスタックなので、dup
は配列型の変数を宣言することを意味すると思いますが、よくわかりません。 TASMでのdup
は正確にはどういう意味ですか?
STACK16_SIZE dup (?)
は、括弧内のデータをSTACK16_SIZE
回複製することを意味します。 ?, ?, ?, ?,
...(100h回)を書き込むのと同じです。
括弧内のデータは「初期化されていないデータ」です。つまり、メモリは割り当てられますが、ロード時に特定の値に設定されません。
アセンブリは配列の「タイプ」を提供しません。含まれている場合、それはデータを検査するときに使用するデバッガ専用です。ただし、このコードスニペットでは、stack16
はバイトのメモリブロックを開始するアドレスを持つシンボルです。これは直観に反しており、微妙なバグの原因となる可能性があります。 CPUスタックの場合、実際には16ビットワード(dw
)または32ビットワード(dd
)として定義する必要があります。
?
は特定の値がないことを意味し、初期化されていません。 DUP
は重複を意味します。
したがって、初期化されていない100hバイトを取得します。