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



Определение именованного типа


Именованные типы представляют простые или сложные типы. Для определения именованных типов вы можете использовать директиву TYPEDEF. Приведем синтаксис режима Ideal.


TYPEDEF имя_типа сложный_тип


В режиме MASM синтаксис следующий:


имя_типа TYPEDEF сложный_тип


где "сложный_тип" описывает любой тип или указатель нескольких уровней косвенности. Подробнее о сложных типах рассказывается в этом разделе. "Имя_типа" определяет имя заданного типа.


Когда вы в выражении указываете названный тип, он действует так же, как простой тип соответствующего размера. Например:


MOV ax, word ptr [bx] ; простой оператор
foo TYPESEF near ptr byte ; FOO - это слово
MOV ax, foo ptr [bx] ; поэтому это тоже работает


Определение объекта


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


Определить объекты вам поможет директива STRUC. В режиме Ideal используется следующий синтаксис:


STRUC имя [модификаторы] [имя_порождающего_объекта]


[METHOD [элемент_таблицы [,элемент_таблицы.]]]
элементы_структуры
ENDS [имя]


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


имя STRUC [модификаторы] [имя_порождающего_объекта]
[METHOD [элемент_таблицы [,элемент_таблицы.]]]
элементы_структуры
ENDS [имя]


где "имя" - это имя объекта. "Имя_порождающего_объекта" - это необязательное имя порождающего объекта. (Турбо Ассемблер явно поддерживает только одиночное наследование.) Структура данных порождающего объекта будет автоматически включаться в структуру данных нового объекта, а таблица методов порождающего объекта - в таблицу методов нового объекта.


Каждое поле "элемент_таблицы" описывает имя метода и процедуры метода, связанного с объектом. Синтаксис этого поля такой же, как в определении таблицы.


Поле "элементы_структуры" описывает дополнительные элементы структуры, которые вы хотите определить в структуре данных объекта. Они форматируются точно также, как в открытом определении структуры.


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


Разрешенные модификаторы
Ключевое словоЗначение
GLOBALПриводит к тому, что адрес таблицы виртуальных методов (если она имеется) будет объявлен общедоступным.
NEARУказатель виртуальной таблицы (если она имеется будет содержать смещение (16 или 32, бита в зависимости от выбора текущей модели по USE16 или USE32).
FARУказатель виртуальной таблицы (если она имеется будет содержать величины, задающие сегмент и смещение (32 или 48 бит, в зависимости от выбора текущей модели по USE16 или USE32).



Если вы не задаете модификатор, размер указателя виртуальной таблицы (если он имеется) зависит от того, адресуются ли данные в текущей модели как NEAR, или как FAR.


Директива TBLPTR


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


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


TBLPTR


Размер указателя, который резервирует TBLPTR, определяется тем, задано в текущей модели USE16 или USE32, и тем, какие модификаторы используются в определении объекта.


Идентификаторы, определяемые расширенной директивой STRUC


Расширенная директива STRUC определяет и использует несколько идентификаторов, которые отражают определяемый объект. Эти идентификаторы показаны в следующей таблице:


Идентификаторы, определяемые расширенной директивой STRUC
ИдентификаторЗначение
@ObjectТекстовая макрокоманда, содержащая текущий объект.
@Table_<имя_объекта>Табличный тип данных, содержащий таблицу методов объекта.
@Tableaddr_<имя_объекта>Метка, описывающая адрес таблицы виртуальных методов объекта.

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


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

8  В тему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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