После двоеточия указывается количество разрядов (бит) для каждого элемента записи.


Записи

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

Работа с полями структуры

Чтобы сослаться на некоторое поле в структуре, следует использовать специальный оператор – точку. Этот оператор отделяет имя структуры от поля, в котором происходит адресация. Для вычисления адреса необходимо сложить адрес самой структуры и смещение в этой структуре, которое задается именем поля.

Пример:

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, который позволяет определить размер элемента записи в битах, либо полностью размер записи.

 

Пример: