Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Определение экземпляра записи
Для использования шаблона записи в программе необходимо определить переменную с типом данной записи, для чего применяется следующая синтаксическая конструкция (рис. 7): Рис. 7. Синтаксис описания экземпляра записи Анализируя эту синтаксическую диаграмму, можно сделать вывод, что инициализация элементов записи осуществляется достаточно гибко. Рассмотрим несколько вариантов инициализации. Если инициализировать поля не требуется, то достаточно указать? при определении экземпляра записи:
Если вы составите и исследуете в отладчике тестовый пример с данным определением записи, то увидите, что все поля переменной типа запись flag обнуляются. Это происходит несмотря на то, что в определении записи заданы начальные значения полей. Если требуется частичная инициализация элементов, то они заключаются в угловые ( < и > ) или фигурные ( { и } ) скобки. Различие здесь в том, что в угловых скобках элементы должны быть заданы в том же порядке, что и в определении записи. Если значение некоторого элемента совпадает с начальным, то его можно не указывать, но обязательно обозначить его запятой. Для последних элементов идущие подряд запятые можно опустить. К примеру, согласиться со значениями по умолчанию можно так:
Изменить значение поля i2 можно так:
Применяя фигурные скобки, также можно указать выборочную инициализацию полей, но при этом необязательно обозначать запятыми поля, со значениями по умолчанию которых мы согласны:
Работа с записями Как организовать работу с отдельными элементами записи? Обычные механизмы адресации здесь бессильны, так как они работают на уровне ячеек памяти, то есть байтов, а не отдельных битов. Здесь программисту нужно приложить некоторые усилия. Прежде всего для понимания проблемы нужно усвоить несколько моментов:
Теперь у вас есть вся информация о средствах ассемблера для работы с записями. Вы также поняли, что непосредственно обратиться к элементу записи невозможно. Чтобы произвести обработку интересующего нас элемента, нужно сначала выделить, сдвинуть его, при необходимости, к младшим разрядам, выполнить необходимые действия и поместить его обратно на свое место в записи. Поэтому, чтобы вам не изобретать каждый раз велосипед, далее мы опишем типовые алгоритмы осуществления этих операций над элементами записи. Ваша задача — закодировать эти алгоритмы тем или иным способом в соответствии с требованиями задачи. Выделение элемента записи:
В результате этих действий элемент записи будет локализован в начале рабочего регистра и далее с ним можно производить любые действия. Работа с элементом записи: Как мы уже выяснили, с элементами записи производятся любые действия, как над обычной двоичной информацией. Единственное, что нужно отслеживать, — это размер битового поля. Если, к примеру, размер поля увеличится, то впоследствии может произойти случайное изменение соседних полей битов. Поэтому желательно исключить изменение размера поля. Помещение измененного элемента на его место в запись:
В качестве примера рассмотрим листинг 8, который обнуляет поле i2 в записи iotest.
В заключение еще раз проанализируйте тип записи и особенности работы с ним. При этом обратите внимание на то обстоятельство, что мы нигде явно не просчитываем расположение битов. Поэтому если понадобится изменить размер элемента или его начальное значение, достаточно внести изменения в экземпляр записи или в описание ее типа; функциональную часть программы, работающую с этой записью, трогать не нужно. Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 620; Нарушение авторского права страницы