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



Определение меток элементов структур с помощью директивы LABEL


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


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


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


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


где "имя" - это имя элемента структуры. "Тип" - это желаемый тип элемента структуры. Он может представлять собой любое допустимое имя типа. Описание имеющихся спецификаторов типов можно найти в здесь.


Выравнивание элементов структуры


В определения структуры для выравнивания элементов структур на соответствующие границы можно использовать директиву ALIGN. Например:


ALIGN 4 ; выравнивание на границу двойного слова
member dd ? ; member будет выравниваться на DWORD


Закрытие определения структуры или объединения


После того, как вы определите все элементы структуры или объединения, нужно закрыть определение структуры или объединения. Для этого используется директива ENDS.


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


ENDS [имя]


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


имя ENDS


где "имя" (если оно присутствует) соответствует имени открытого определения структуры или объединения. Если имя не указано, то закрывается открытая в данный момент структура или объединение.


Вы можете также использовать директиву ENDS для закрытия сегментов. Это не приводит к конфликту, поскольку открытие сегмента внутри структуры или объединения не допускается.


Вложенные структуры и объединения


Турбо Ассемблер позволяется для управления смещениями, присваевыми элементам структуры, использовать вложенные директивы STRUC, UNION и ENDS внутри открытого определения данных типа структуры или объединения.


В структуре каждый элемент данных начинается, когда заканчивается предыдущий элемент. В объединении каждый элемент данных начинается с того же смещения, что и предыдущий элемент данных. Если отдельный элемент данных может целиком включать в себя структуру или объединение, это дает существенную гибкость и открывает большие возможности. Описание директив STRUC, UNION и ENDS можно найти в следующей таблице:


Директивы STRUC, UNION и ENDS
ДирективаСмысл
STRUCПри использовании внутри открытой структуры или объединения данная директива начинает блок элементов, который внешняя (охватывающая) структура или объединение рассматривает, как один элемент. Смещения элементам в блоке присваиваются в возрастающем порядке. Размер блока представляет собой сумму размеров всех элементов в нем.
UNIONПри использовании внутри открытой структуры или объединения данная директива начинает блок элементов, который охватывающая структура или объединение рассматривает как один элемент. Элементам блока присваивается одно и то же смещение. Размер блока равен размеру наибольшего элемента в нем.
ENDSЗавершает блок элементов, начинающихся предыдущей директивой STRUC или UNION.



Например, в следующем определении данных типа структуры/объединения содержится в общей сложности 5 элементов.


CUNION STRUC
CTYPE DB ?
UNION ; начало объединения
; если CTYPE = 0, использовать следующее.
STRUC
CT0PAR1 DW 1
CT0PAR2 DW 1
ENDS
; если CTYPE = 1, использовать следующее.
STRUC
CT1PAR1 DW 3
CT1PAR2 DW 4
ENDS
ENDS ; конец объединения
ENDS ; конец структурного типа


Список этих элементов приведен в следующей таблице:


Элементы блока
ЭлементТипСмещениеЗначение по умолчанию
CTYPEByte0? (не инициализирован)
CT0PAR1Word 11
CT0PAR2Byte32
CT1PAR1Byte13
CT1PAR2Dwordc4



Длина данной структуры/объединения равна 6 байтам.


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


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

8  В тему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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