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



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


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


NNTYPE TYPEDEF PTR BYTE


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


NNTEST NTTYPE ?


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


Способ инициализации экземпляра именованного типа зависит от типа, который этот именованный тип представляет. Например, NTTYPE в предыдущем примере - это слово, поэтому он будет инициализироваться, как если бы вы следующим образом использовали директиву DW:


NTTYPE 1,2,3 ; представляет указатель значений 1,2,3
DW 1,2,3 ; то же, что NTTYPE 1,2,3


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


foo STRUC
f1 DB ?
ENDS
bar TYPEDEF foo
bar {f1=1} ; должен быть инициализатор структуры




Создание экземпляра объекта


Создание экземпляра объекта в инициализированном или неинициализированном сегменте данных полностью совпадает с созданием экземпляра структуры. Фактически, объекты в Турбо Ассемблере представляют собой структуры с некоторыми расширениями. Одним из таких расширений является элемент структуры @Mptr_<имя_объекта>.


Объектный тип данных с виртуальными методами - это структура, содержащая один элемент, указывающий на таблицу указателей виртуальных методов. Именем данного элемента является @Mptr_<имя_объекта>. Обычно инициализируется с помощью конструктора метода. Однако, вы можете построить статические объекты, не имеющие конструктора, но инициализируемые с помощью инициализатора в сегменте данных.


Если вы указываете используемое по умолчанию значение элемента @Mptr_<имя_объекта>, то Турбо Ассемблер будет корректно инициализировать экземпляр объекта.


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


Создание экземпляра таблицы виртуальных методов объекта


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


TBLINST


TBLINST определяет в качестве адреса таблицы виртуальных методов объекта @TableAddr_<имя_объекта>. Это эквивалентно следующему:


@TableAddr_<имя_объекта> @TableAddr_<имя_объекта> {}

<<<  Назад
 1  2  3  4  5  6 


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

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