アセンブラが異なれば構文も異なりますが、db
ディレクティブの場合はかなり一貫しています。
db
アセンブリ ディレクティブであり、ソース内でディレクティブが配置されている場所に指定された値を持つバイトを定義します。オプションで、ディレクティブにラベルを割り当てることができます。
一般的な構文は次のとおりです。
[label] db n1, n2, n3, ..., nk
ここで、n1..nk はバイト サイズの数値 (0..0xff から)または文字列定数です。
ASCII 文字列がバイトで構成されている限り、ディレクティブは、ディレクティブ内の他の数値とまったく同じように、これらのバイトをメモリに配置するだけです。
例:
db 1, 2, 3, 4
4バイトを割り当て、1、2、3、および4の数字で埋めます
string db 'Assembly', 0, 1, 2, 3
次のようにコンパイルされます。
string: 41h, 73h, 73h, 65h, 6Dh, 62h, 6Ch, 79h, 00h, 01h, 02h, 03h
ASCII コード 0Ah (0xa) の文字は、Linux でコンソールの改行コマンドとして使用される文字 LF (改行) です。
ASCII コード 00h (0) を持つ文字は、C に似た言語で文字列の終了マークとして使用される NULL 文字です。(ほとんどの OS は C で記述されているため、おそらく OS API 呼び出しでも)
付録 1: DB に似たアセンブリ ディレクティブが他にもいくつかあります。これらはメモリ内のデータを定義しますが、サイズは異なります。最も一般的なのは、16、32、および 64 ビット データの DW (定義ワード)、DD (定義ダブル ワード)、および DQ (定義クワッド ワード) です。ただし、それらの構文は、文字列ではなく数値のみを受け入れます。