Мы уже рассматривали определение данных с помощью директивы DB. Данные задавались также как непосредственные операнды в командах, например,
MOV AL, 10001000B
Здесь мы рассмотрим общие директивы определения данных и методы определения констант.
Директивы определения данных. Общий формат
[имя] Dn выражение
где
· имя элемента данных необязательно;
· Dn принимает одно из следующих символьных значений: DB (байт), DW (слово), DD (двойное слово), DQ (учетверенное слово), DT (десять байт);
· выражение может быть константой или знаком вопроса для неопределенного значения, оно может содержать несколько констант, разделенных запятыми, или заданных с числом повторений.
Примеры
x db 10,12,30,40 ; массив x из 4 байт
y dw 10 dup(?) ; массив y из 10 слов
z dw 10 dup(0) ; массив z из 10 нулей
text db ‘abcd’ ; массив text из 4 байт
Обращение к элементам массива осуществляется с помощью смещения относительно начального адреса массива. Например,
mov al, x+2
запишет в предыдущем примере байт 30 в регистр al. Знак $ обозначает текущий адрес:
adr dw $ ; по адресу adr записано смещение adr.
Константы. Символьная константа задается в апострофах. Например, ‘а’. Рассмотрим числовые константы:
1) двоичная константа, добавляется B, например, 10b;
2) восьмеричная константа, добавляется буква O, например, 12o равно десяти;
3) десятичная, добавляется D, которая подразумевается по умолчанию;
4) шестнадцатеричная, начинается с цифры (иначе она будет принята за идентификатор), справа добавляется буква H, например, 0FFh, или 123h.
Директива EQU. Определяет имя для константы.
Например
cnt equ 10
определяет константу cnt = 10. Теперь, вместо cnt, повсюду в программе будет подставляться число 10.