После двоеточия указывается количество разрядов (бит) для каждого элемента записи.
Записи
Mov cx,6
Lea di, mas
Lea si, sotr1.name
Move es,ax
Mov ds, ax
Code
Data
Lea ax, sotr1.name
Lea bx, sotr1
Работа с полями структуры
Имя_структуры ends
Заполнение шаблона:
sotr1 worker <'Иванов', 'инженер'>
Кроме явного заполнения можно использовать промежуточные варианты:
victor worker <>
В этом варианте заполнение экземпляра происходит из шаблона.
sotr1 worker <'Петров'>
sotr1 worker <'Петров','1200'>
Поля можно заполнять выборочно, а пропущенные поля выделять запятыми.
Чтобы сослаться на некоторое поле в структуре, следует использовать специальный оператор – точку. Этот оператор отделяет имя структуры от поля, в котором происходит адресация. Для вычисления адреса необходимо сложить адрес самой структуры и смещение в этой структуре, которое задается именем поля.
Пример:
mov al, byte ptr sotr1.name ; в al загружается одна буква 'и' –
mov al, byte ptr[bx] name
mov cx, [ax]+1третий вариант адресации
Пример:
Переслать поле name в область памяти
sotr1 worker <'Иванов','инженер'>
mas db 6 dup('')
assume ds:@data, es:@data
mov ax, @data
rep movs b ;записать поле ‘Иванов” в память mas
Это структурный тип данных, состоящий из фиксированного числа элементов длиной от 1 до нескольких бит. При описании записи для каждого элемента указывается его длина в битах и значение этих бит(не обязательно).
Суммарный размер записи определяется суммой размеров её полей и не может быть более 8,16 или32 бит.
Если суммарный размер меньше указанного значения, то все поля записи смещаются к младшим разрядам.
При работе с записями используются 3 этапа:
1. Задание шаблона записи
2. Определение экземпляра записи
3. Организация обращения к записи (обращение к отдельным битам)
Шаблон записи:
имя записи RECORD <описание элементов>
IOTEST RECORD I1:1, I2:2=11, I3:1, I4:2=11, I5:2=00
Для получения экземпляра записи используются варианты:
· FLAG IOTEST ? все элементы записи=0
· FLAG1 IOTEST <> ; в качестве экземпляра выбирается шаблон
· FLAG2 IOTEST <,10,>; вносится I2=10 вместо I2=11, остальные по шаблону
· FLAG3 IOTEST {I2=10} ; выборочная инициализация
Для работы с записями Assembler поддерживает ряд операций.
Каждому имени элемента записи Assembler присваивает числовое значение, равное смещению (в битах) элемента от правойграницы записи.
Assembler предлагает оператор width, который позволяет определить размер элемента записи в битах, либо полностью размер записи.
Пример: