Шрифт:
Директива CONST определяет соответствие между именем константы и ее значением. Данная директива имеет следующую форму записи:
Значения констант могут быть числовыми или символьными константами. Кроме того, допускается присваивать константам выражения. В выражениях разрешаются только арифметические или логические операции над двумя или более целыми константами. В качестве знаков выражений в ассемблере допускается использовать следующие символы:
+ — сложение;
– — вычитание;
* — умножение;
/ — деление;
% — модуль (целая часть от деления);
( — левая скобка;
) — правая скобка;
& — логическое «И» (AND);
| — логическое «ИЛИ» (OR);
~ — исключающее «ИЛИ» (XOR);
<< — логический сдвиг влево;
>> — логический сдвиг вправо.
Запись чисел в программах может осуществляться в нескольких форматах. Для записи шестнадцатеричных чисел используется префикс 0x (ноль и икс) или H#. Например:
Для восьмеричных чисел применяется префикс 0 (ноль):
Двоичные числа записываются с префиксом B#:
Десятичные числа записываются в программе без префиксов. Т.е. по умолчанию формат числа считается десятичным:
Пример записи арифметического выражения:
Пример записи директивы:
Директива VAR объявляет переменные и буферы переменных. Буфер переменных представляет собой набор ячеек памяти, расположенных упорядоченно друг за другом по смежным (соседним) адресам. Буфер может быть многомерным и одномерным, т.е. состоящим из нескольких или из одной переменной. Буфер должен быть объявлен до использования в программе. Буферы удобны для организации приема и передачи блочных данных и часто используются в программах.
Директива VAR имеет следующую форму записи:
С директивой могут использоваться следующие параметры:
PM или DM — тип памяти для размещения буфера;
RAM или ROM — тип памяти процессора;
ABS=адрес — абсолютный адрес (нельзя использовать вместе с директивой STATIC);
SEG=сегмент — размещение буфера в сегменте, объявленном системным конфигуратором;
CIRC — кольцевой буфер;
STATIC — предотвращает перезапись буфера во время загрузки начальной страницы.
Одна директива VAR позволяет объявить в одной строке длиной до 200 символов несколько буферов, разделенных запятыми.
Буферы могут быть линейными и кольцевыми. Буферы могут быть произвольной длины от единицы до размера, не превышающего объем памяти процессора. Линейный буфер размещается в памяти с любого адреса. Кольцевой буфер может быть размещен в памяти с некоторыми ограничениями, связанными с аппаратными особенностями памяти процессоров. Так, кольцевой буфер должен стартовать с базового адреса, который кратен 2 в степени n, где n — количество бит требуемых для представления длины буфера в двоичном виде. Это необходимо учитывать при создании кольцевых буферов с параметром ABS.
При многочисленном объявлении линейных буферов в одной строке редактор связей размещает их в смежных областях памяти. Если при таком объявлении используется параметр CIRC, то создается единственный кольцевой буфер, а остальные объявленные в этой строке буферы будут линейными.
Буферы могут быть размещены как в памяти программ PM, так и в памяти данных DM, по умолчанию. Тип памяти по умолчанию устанавливается в RAM для памяти DM и PM.
Параметр ABS размещает буфер с указанного стартового адреса, делая его неперемещаемым.
Параметр SEG размещает буфер в указанном сегменте памяти, который был объявлен в файле системного конфигуратора.
Параметр CIRC определяет кольцевой буфер. Буфер будет организован как линейный, если не применен атрибут CIRC.
Параметр STATIC предотвращает перезапись буфера, когда загружается страница начальной загрузки.
Пример объявления буфера:
Здесь линейный буфер объявлен в памяти программ RAM, который перемещаем в пределах сегмента с именем segdata. Буфер с именем buffer состоит из 10 ячеек в памяти программ. Длина буфера указывается в квадратных скобках.