По каждой из этих директив ассемблер отводит одинбайт подпеременную изаписывает в этот байт указанное число.
Таким образом, к началу выполнения программы
переменная А будет иметь значение 254,
переменная В- значение –2,
а переменная С- значение 17h.
Операнд-число, естественно, переводится ассемблером в двоичную систему.
При этом неотрицательные числа записываются в память как числа без знака,
а отрицательные числа записываются в дополнительном коде (см. комментарии к директивам).
В связи с этим и получается, что в качестве операндовможно указывать числа от -128 до 255. Отсюда же следует, что числа 254 и -2 будут представлены в па-мяти одними тем же байтом 0FEh
(это для насданные числа различны, а для машины они одинаковы, и ей безразлично, что обозначает байт 0FEh - число со знаком или без знака).
В другом распространенном случае в качестве начального значения переменной указывается символ. Такое значение можно задать двояко:
-либо указать числовой код этого символа,
- либо указать сам символ в кавычках.
в системе кодировки ASCII код символа "*"равен 2Ah, поэтому следующие две директивы эквивалентны:
Q DB 2Ah Q DB "*"
Во второмслучае ассемблер сам определит кодуказанного символа и запишет этот код в ячейку памяти. Ясно, что этот вариант лучше - он нагляднее и не требует знания кодов символов, поэтому его обычно и используют на практике.
Мы рассмотрели два основных случая задания начального значения.
В общем же случае такое значение указывается любым константным выражением со значением
от -128до 255.
(Если значение выходит за эти пределы, то ассемблер зафиксирует ошибку.)
Константные выражения аналогичны арифметическим выражениям языков высокого уровня.
Мы их рассмотрим позже, а пока лишь отметим, что к таким выражения относится оператор TYPE, поэтому допустима, скажем, следующая директива (имя Qописано выше):
V DB TYPE Q
которая эквивалентна директиве V DB 1.
Мы рассмотрели случаи, когда в директиве DBуказывается один операнд.
Это удобно, когда надо описать скалярнуюпеременную, но неудобно, когда надо описать переменную-массив.
В самом деле, если надо, к примеру, описать массив из 4 байтов с некоторыми начальными значениями, то это можно сделать так: