Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Определение данных - Программирование от RIN.RU
Определение данных



Создание экземпляра записи


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


MYREC RECORD VEL:3=4,MODE:2,SIZE:4=15


Тогда оператор:


MTEST MYREC ?


будет создавать экземпляр записи myrec (определяя переменную mtest). В данном примере данные в сегмент не помещаются, так как задаются неинициализированные данные (?).


Экземпляры записи всегда имеют размер в байт, слово или двойное слово, в зависимости от числа бит, выделенных при определении.


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


При определении записи для некоторых или всех полей записи нужно задавать начальное значение. (Турбо Ассемблер предполагает, что все не заданные значения равны 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,,>


Создание экземпляра данных перечислимого типа


Экземпляр данных перечислимого типа вы можете создать, использую как директиву определения данных имя перечислимого типа данных. Предположим, например, что вы определили следующее:


ETYPE ENUM FEE,FIE,FOO,FUM


Тогда оператор:


ETEST ETYPE ?


будет создавать экземпляр перечислимого типа данных ETYPE (определяя переменную ETEST). В данном примере, поскольку задано значение неинициализируемых данных ?, начальные данные в текущем сегменте не генерируются.


Экземпляры перечислимого типа данных всегда представляют собой байт, слово или двойное слов, в зависимости от максимального значения, представленного в данных перечислимого типа.


<<<  НазадВперед  >>>
 1  2  3  4  5  6 


 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь