Типы данных
BYTE. Этот тип данных занимает 1 байт (8 битов). При помощи этого типа можно зашифровать целое число со знаком или без знака в диапазоне от –128 до 255 или любой ASCII-символ. Директива определения – DB (Define Byte)
WORD. Этот тип данных занимает 2 байта (16 битов). В переменную данного типа можно поместить целое число в диапазоне от –32767 до 65535, два ASCII-символа или адрес памяти типа near. При этом запись в память производится следующим образом: младшая часть числа располагается по младшему адресу, а старшая – по старшему. Например, если целое шестнадцатеричное число 1234h расположено по адресу 1000h, то младшая часть 34h будет расположена по адресу 1000h, а 12h – по адресу 1001h. Директива определения – DW (Define word)
DWORD – 4 байта (2 слова) может вместить целое 32-битное число со знаком или без знака, число с плавающей точкой, 32-разрядный адрес памяти или 4 ASCII- символа. Все данные хранятся в перевернутом виде: младшие байты – по младшим адресам, старшие – по старшим. При хранении адреса адрес сегмента располагается в двух старших байтах, а смещение – в двух младших байтах памяти. Директива определения – DD (Define Double word)
QWORD – 8 байтов. Используется начиная с 32-процессорных машин. Может быть целым знаковым или беззнаковым числом или числом с плавающей точкой двойной точности. Директива определения – DQ (Define Quad)
Ten-Bytes – 10 байтов. Используется для хранения данных в основной памяти или в сопроцессоре. Может быть упакованным двоично-десятичным числом, расширенным целым числом или расширенным числом с плавающей точкой. Директива определения – DT (Define Ten bytes).
Общий синтаксис определения данных:
<name> <type> <value>
или
< name> < type> <number> dup (expression)
где name – имя переменной
type – одна из рассмотренных выше директив выделения памяти
value – список значений, который может содержать символьные или числовые константы; символ ?, если значение неопределено; адрес, если это имя переменной (используется в директивах DW и DD); строка ASCII-символов, символы заключаются в кавычки.
Оператор DUP означает повторение значений, указанных в скобках, заданное число раз.
Например,
var_a db 2 dup (0, 3 dup (1) ) ;эквивалентно var_a db 0, 1, 1, 1, 0, 1, 1, 1
var_b db 1, 2, 3, ?, ?
adr_n dw var_a
adr_f dd vax_d
Определим размер памяти, выделенный под каждую из следующих переменных:
m1 db 4,5,1,6 ; 4*1=4 байта
m2 db “xzyqw” ; 5*1=5 байтов
m3 dw 12 dup(?) ; 12*2=24 байта
m4 dd 345h, 234h ; 2*4=8 байтов
Общее количество байтов, выделенных данными директивами, равно 41 байт. Переменная m1 располагается по адресу 0h, m2 – 4h, m3 – 9h, а m4 – 21h. Адреса записываются в шестнадцатеричной системе счисления.