Turbo Assembler 3.0. Руководство пользователя

Инициализация экземпляров записи


При определении записи для некоторых или всех полей записи нужно задавать начальное значение. (Турбо Ассемблер предполагает, что все не заданные значения равны 0.) Простейший инициализиро- ванный экземпляр записи содержит просто заданное в определении начальное поле данных, например:

MYREC {}

что эквивалентно следующему:

DW (4 SHL 6) + (0 SHL 4) + (15 SHL 0) ; SHL - это операция сдвига влево для выражений

Фигурные скобки ({}) представляют нулевое инициализирующее значение записи. Значение инициализатора определяет, что началь- ное значение нужно переопределить, и каким именно новым значением его требуется переопределить (если вы выделяете данные для эк- земпляра записи).

Инициализатор записи в фигурных скобках имеет следующий син- таксис:

{ [имя_поля = выражение [,имя_поля = выражение.]] }

где "имя_поля" - это имя поля записи, а "выражение" - это значе- ние, которое вы хотите определить для поля в данном экземпляре. Пустое значение указывает, что вы будете использовать начальное значение поля из определения записи. Значение ? эквивалентно ну- лю. Турбо Ассемблер устанавливает для всех полей, которые не ука- зываются в инициализаторе, начальное значение, заданное в опреде- лении записи. Например:

MYREC {VEL=2,SZE=?}

эквивалентно следующему:

DW (2 SHL 6) + (0 SHL 4) + (0 SHL 0)

Альтернативным методом инициализации экземпляров записи является использование угловых скобок (<>). В этом случае скобка- ми ограничивается инициализатор. Значения инициализатора являются неименованными, но располагаются в том же порядке, что и соот- ветствующие поля в определении записи. Данный инициализатор имеет следующий синтаксис:

<[выражение [,выражение.]]>

где "выражение" представляет нужное значение поля соответствующей записи в определении записи. Пустое значение указывает, что вы будете использовать начальное значение из определения записи. Ключевое слово ? указывает, что это поле должно быть равно 0. Например:

MYREC <,2,?>

эквивалентно следующему:

DW (4 SHL 6) + (2 SHL 4) + (0 SHL 0)

Если вы задаете меньше значений, чем имеется полей в записи, Турбо Ассемблер завершает экземпляр, используя для оставшихся по- лей начальные значения из определения записи.

MYREC <1> ; то же, что MYREC <1,,>



Содержание раздела