5.2. Определение данных

Мы уже рассматривали определение данных с помощью директивы 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.