русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Структуры


Дата добавления: 2015-06-12; просмотров: 553; Нарушение авторских прав


Структура представляет собой набор полей байтов, объединенных одним именем.

Объявление структуры в программе на языке Ассемблера включает в себя 2 действия:

1. Объявление шаблона или типа структуры директивами STRUC и ENDS.

2. Объявление собственно структуры.

Формат объявления типа структуры:

имя STRUC

описания-полей

имя ENDS

Директивы STRUC и ENDS обозначают соответственно начало и конец описания шаблона (типа) структуры. Описание типа структуры задает имя типа структуры и число, типы и начальные значения полей структуры.

Указанное в директивах STRUCи ENDS имя задает новое имя типа структуры. Оно должно быть уникальным. Описания-полей определяют поля структуры и могут быть заданы в одной из следующих форм:

[[имя]] DB значение,...

[[имя]] DW значение,...

[[имя]] DD значение,...

[[имя]] DQ значение,...

[[имя]] DT значение,...

 

Каждое поле может иметь свое имя. Директивы DB, DW, DD, DQ или DT задают длину поля. Для каждого поля могут быть указаны начальные значения, которыми инициализируются поля при отсутствии соответствующих начальных значений при объявлении структуры. Имя каждой директивы, если оно задано, должно быть уникальным и представляет смещение поля относительно начала структуры.

Значением поля может быть число, символ, строковая константа или имя другого объекта. Для определения множества значений поля может использоваться оператор DUP. Если в качестве значения задана строковая константа, поле занимает столько байтов, сколько символов в константе. Если задано несколько значений, они должны разделяться запятыми.

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

Пример:

table STRUC

count DB 10

value DW 10 DUP(?)

tname DB 'font'

table ENDS



При обработке директив STRUC и ENDS формируется шаблон структуры, а сами данные создаются при объявлении структуры, которое имеет следующий вид:

[[имя]] имя-структуры <[[значение,...]]>

По такому объявлению создается переменная типа структура со структурой полей, соответствующей шаблону, заданному директивой STRUC с именем имя-структуры.

Имя задает имя переменной. Если имя опущено, MASM распределяет память, но не создает переменную, которую можно было бы использовать для доступа к структуре.

В скобках <> указывается список значений полей структуры. Значения в списке, если их несколько, должны разделяться запятыми. Каждое значение может быть целым числом, строковой константой или выражением, тип которого должен совпадать с типом соответствующего ему поля. Для каждого поля может быть задано одно значение.

Скобки <> обязательны, даже если начальные значения не заданы.

Если в качестве значения используется оператор DUP, в скобки <> следует заключать список значений оператора DUP.

Задавать значения всех полей структуры необязательно. Если Ассемблер вместо значения обнаружит левый пробел, будет использовано начальное значение поля, заданное при описании типа структуры, а если и оно опущено, значение поля будет не определено.

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

strings STRUC

buffer DB 100 DUP(?)

crif DB 13,10

guery DB 'Filename'

endm DB 35

strings ENDS

При объявлении структуры с использованием этого шаблона значения полей buffer и crif не могут быть заданы, так как шаблон для них определяет множество значений. Значение поля guery может быть перекрыто только значением, длина которого не превышает 8 байтов. Аналогично, значение поля endm может быть перекрыто любым однобайтовым значением.



<== предыдущая лекция | следующая лекция ==>
Скалярные данные | Описание символических имен


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.369 сек.