Сборник по задачам и примерам Assembler



Вложенные структуры



Вложенные структуры

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

Рисунок 2.6. Иерархическая структура сложной записи

Листы в этом дереве являются той полезной информацией, к которой необходимо получить доступ. Для этого нужно некоторым образом указать последовательность идентификаторов, в которой первым идентификатором является имя структуры, далее следуют идентификаторы промежуточных узлов и последним идентификатором является идентификатор нужного листа. Но в ассемблере подобная схема реализована очень ограниченно — можно указать только имена первого и последнего идентификаторов (промежуточных попросту нет). Рассмотрим пример. Как обычно, прежде чем работать со структурой, необходимо задать ее шаблон. Далее для работы со структурой в программе необходимо создать ее экземпляр. В программе ниже шаблон структуры называется element, а соответствующий ему экземпляр структуры — si. Отметим лишь, что не стоит искать в приведенных ниже примерах какой-либо смысл, так как они предназначены только для демонстрации механизма вложенности структур (и объединений).

:prg02_01.asm - программа, демонстрирующая описание и использование структуры в программе на ассемблере.

elementstruc

INN dd 0 ;ИНН

name db 30 dup С ') ;Ф.И.О.

у_birthday dw 1962 :год рождения

m birthday db 05 ;месяц рождения

d_birthday db 30 :месяц рождения

nationality db 20 национальность

;и так далее

ends

.data

si element<>

.code

mov al,si.m_birthday

Информацию о дате рождения можно оформить в виде отдельной структуры, вложенной в текущую структуру, так как это сделано в программе ниже:

:prg02_02.asm - программа, демонстрирующая вложение структуры в текущую структуру в программе на ассемблере.

:

elementstruc

INN dd 0 :ИНН

fiodb 30 dup (' ') ;Ф.И.О.

struc

y_birthday dw 1962 ;год рождения m_birthday db 05 ;месяц рождения d_birthday db 30 ;месяц рождения

ends




Содержание  Назад  Вперед