Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
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
Определение типов данных



Включение одной именованной структуры в другую


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


Приведем синтаксис режима Ideal:


STRUC имя_структуры параметры_заполнения


В режиме MASM вы можете использовать следующий синтаксис:


имя_структуры STRUC параметры_заполнение


Оператор такого вида можно использовать только внутри структуры или объединения. Здесь "имя_структуры" - это имя ранее определенной структуры или объединения, которая должны включаться. "Параметры_заполнения" задают изменения, которые вы хотите внести в начальные (используемые по умолчанию) значения включенных элементов структуры. Ключевое слово ? указывает, что все встраиваемые элементы структуры нужно рассматривать, как неинициализированные. В противном случае поле "параметры_заполнения" имеет следующий синтаксис:


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


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


Поскольку в режиме MASM имена элементов структуры являются глобальными, при копировании структуры они не переопределяются. Таким образом, в режиме MASM включение одной структуры в другую более полезно, когда вы делаете это в начале определяемой структуры или объединения.


Обычно, когда вы создаете экземпляр структуры, нужно обеспечить, что инициализированные данные содержал только один элемент объединения (подробности см. здесь). Поскольку при встраивании структуры создание экземпляра не предусматривается, это ограничение здесь не применяется. Инициализированные данные могут содержать несколько элементов включаемого объединения, например:


FOO STRUC
ABC DW 1
DEF DW 2
UNION
A1 DW "123"
A2 DW ?
ENDS
ENDS


FOO2 STRUC
FOO STRUC {A1=2} ; встроить структуру FOO в структуру FOO2 с переопределением заметим,
; что по умолчанию в FOO2 инициализируется и A1, и A2
GHI DB 3
ENDS


Определение структуры FOO2 в предыдущем примере эквивалентно следующей вложенной структуре/объединению:


FOO STRUC
STRUC ; начало вложенной структуры.
ABC DW 1
DEF DW 2
UNION ; начало вложенного объединения.
A1 DW "123"
A2 DW ?
ENDS ; конец вложенного объединения.
ENDS ; конец вложенной структуры.
GHI DB 3
ENDS


Заметим, что при создании экземпляра FOO2 нужно убедиться, что инициализируется только одно значение в объединении.


Использование имен структур в выражениях


После того, как вы определите структуру или объединение, информацию о структуре и объединении можно получить различными путями. Для получения информации с помощью выражений Турбо Ассемблера вы можете использовать имена типа данных структуры или объединения. Более подробно об этом рассказывается в этом разделе.


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


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

8  В тему

Начало работы на Турбо Ассемблере

Использование директив и параметров

Общие принципы программирования

Объектно-ориентированное программирование

Использование выражений и значений идентификаторов

Директивы выбора процессора

Использование моделей памяти программы и сегментации

Задание и использование счетчика адреса

Описание процедур

Управление областью действия идентификаторов

Определение данных

Расширенные инструкции

Использование макрокоманд

Использование условных директив

Интерфейс с компоновщиком

Генерация листинга

Интерфейс Турбо Ассемблера и Borland C++

Интерфейс Турбо Ассемблера с Турбо Паскалем

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