3.2.1. Псевдокоманды определения переменных

Псевдокоманда - это директива ассемблера, которая приводит к включению данных или кода в программу, хотя сама никакой команде процессора не соответ­ствует. Псевдокоманды определения переменных указывают ассемблеру, что в со­ответствующем месте программы располагается переменная, устанавливают ее тип (байт, слово, вещественное число и т. д.), задают начальное значение и ставят в соответствие переменной метку, которая будет использоваться для обращения к этим данным. Псевдокоманды определения данных записываются в общем виде

следующим образом:

имя_переменной    d* значение

где D* - одна из нижеприведенных псевдокоманд:

DB - определить байт;

DW - определить слово (2 байта);

DD - определить двойное слово (4 байта);

DF - определить б байт (адрес в формате 16-битный селектор: 32-битное сме­щение);

DQ - определить учетверенное слово (8 байт);

DT - определить 10 байт (80-битные типы данных, используемые FPU). Поле значения может содержать одно или несколько чисел, строк символов

(взятых в одиночные или двойные кавычки), операторов ? и DUP, разделенных

запятыми. Все установленные таким образом данные окажутся в выходном фай­ле, а имя переменной будет соответствовать адресу первого из указанных Значе­ний. Например, набор директив

text_string db 'Hello world!'

number dw 7

table db 1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh

float number dd 3.5e7

Директивы распределения памяти

ж

заполняет данными 33 байта. Первые 12 байт содержат ASCII-коды символов строки Hello world!, и переменная text string указывает на первую букву в этой строке, так что команда

fflov       al,text_string

считает в регистр AL число 48h (код латинской буквы Н). Если вместо точного значения указан знак ?, переменная считается неинициализированной и ее зна­чение на момент запуска программы может оказаться любым. Если нужно запол­нить участок памяти повторяющимися данными, используется специальный опе­ратор DUP, имеющий форматечетчик DUP (значение). Например,воттакоеопре-деление:

table_512w dw 512

создает массив из 512 неинициализированных слов, на первое из которых указы­вает переменная 1аЫе_512\у. В качестве аргумента в операторе DUP могут высту­пать несколько значений, разделенных запятыми, и даже дополнительные вло­женные операторы DUP.