Różne asemblery mają różną składnię, ale w przypadku dyrektywy db
są całkiem spójne.
db
to dyrektywa montażowa, która określa bajty o danej wartości w miejscu, w którym znajduje się dyrektywa w źródle. Opcjonalnie do dyrektywy można przypisać pewną etykietę.
Wspólne składni:
[label] db n1, n2, n3, ..., nk
gdzie n1..nk pewne liczby rozmiarów bajtów (z 0..0xff) lub część stała łańcuchowa.
Dopóki ciąg znaków ASCII składa się z bajtów, dyrektywa po prostu umieszcza te bajty w pamięci, tak jak inne numery w dyrektywie.
przykład:
db 1, 2, 3, 4
przydziela 4 bajtów i wypełnia je numerami 1, 2, 3 i 4
string db 'Assembly', 0, 1, 2, 3
zostaną opracowane do:
string: 41h, 73h, 73h, 65h, 6Dh, 62h, 6Ch, 79h, 00h, 01h, 02h, 03h
Znak z kodem ASCII 0Ah (0xa) jest znakiem LF (wiersz), który jest używany w Linuksie jako nowe polecenie linii dla konsoli.
Znak z kodem ASCII 00h (0) jest znakiem NULL, który jest używany jako znak końca łańcucha w językach C-podobnych. (i prawdopodobnie w wywołaniach OS API, ponieważ większość systemów operacyjnych jest napisana w języku C)
Dodatek 1: Istnieje kilka innych dyrektyw dotyczących montażu podobnych do DB, ponieważ definiują niektóre dane w pamięci, ale z innym rozmiarem. Najczęściej są to DW (zdefiniować słowo), DD (zdefiniuj podwójne słowo) i DQ (zdefiniuj poczwórne słowo) dla danych 16, 32 i 64-bitowych. Jednak ich składnia akceptuje tylko liczby, a nie ciągi.
To zależy od tego, z jakiego asemblera korzystasz. Wszystkie mają różne wymagania dotyczące składni. –