Чтобы описать данные или зарезервировать для них место, используются директивы, перечисленные в таблице 1.3. За директивой описания данных должно указываться одно или несколько числовых выражений, разделенных запятыми. Эти выражения определяют значения для ячеек данных, размер которых зависит от типа директивы. Например, db 1,2,3 задает три байта со значениями 1, 2 и 3 соответственно.
Таблица 1.3 Директивы данных
Директивы db и du также поддерживают строки, заключенные в кавычки, любой длины. Эти строки будут преобразованы при использовании db в последовательность байтов и при использовании du – последовательность слов (word) с нулевым старшим байтом. Например, db 'abc' определяет три байта со значениями 61, 62 и 63.
Директива dp и ее синоним df принимают значение, состоящие из двух числовых выражений, разделенных двоеточием. Первое значение ‑ верхнее слово, а второе значение ‑ нижнее двойное слово значение дальнего указателя. Аналогично директива dd принимает такие указатели, состоящие из двух слов, разделенных двоеточием, а директива dt принимает слово и четверное слово, разделенные двоеточием, четверное слово хранится первым. Директива dt с одним выражением в качестве параметра принимает только значения с плавающей точкой и создает данные в формате FPU (сопроцессора) повышенной двойной точности.
Любая из вышеперечисленных директива позволяет использовать специальный оператор dup, создающий несколько копий данного значения. Количество дубликатов должно предшествовать этому оператору, а значение должно следовать за ним; это может быть даже последовательность значений, разделенных запятыми, но она должна быть заключена в скобки. Например, db 5 dup (1,2) определяет пять экземпляров данной последовательности из двух байтов.
Директива file ‑ специальная директива, и ее синтаксис может быть различным. Эта директива включает последовательность байт из файла. Обязательным параметром этой директивы является имя файла, заключенное в кавычки. Далее дополнительно может следовать двоеточие и численное выражение, определяющее смещение в файле от начала, затем, также необязательно, может следовать запятая и численное выражение, определяющее количество включаемых байтов (если этот параметр не задан, то будут включены все байты до конца файла). Например, file 'data.bin' включит весь файл в виде двоичных данных, а file 'data.bin':10h,4 включит только четыре байта, начиная со смещения 10h.
За директивой резервирования данных должно следовать только одно числовое выражение, определяющее количество резервируемых ячеек заданного размера. Все директивы описания данных поддерживают значение ?, которое означает, что ячейка не должна быть инициализирована, т.е. эффект от нее такой же, как и от использования директивы резервирования данных. Неинициализированные данные не могут быть включены в выходной файл, поэтому их значения всегда считаются неизвестными.