Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
asm.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
694.27 Кб
Скачать

12. Структури даних.Опис структур

Struct – об’єднує в собі кілька змінних

<імя с-ри> struct date struct

<Опис полей> day db 1

<імя с-ри> ends year dw 2000

date ends

С-ри можуть бути в будь-якому місці, але перед 1-им використанням. Для визн.атрибута с-ри, треба визн.розмір елемента с-ри у байтах.

Mov ax, offset date або mov al, byte ptr date.day

mov al, [bx].day

<адресовий вираз> . <імя ділянки с-ри>

Union об’єднання – специфічні с-ри, які можуть викор. Різними модулями, при чому розмір обєдн. будуть мати розмір найбільшого з об’єктів.

<імя обєдн> union

<Опис ділянок>

<імя обєдн> ends

Можна використовувати як елемент с-ри, в різних модулях доступ до елем.обєдн.можна здійснювати за різними типами. Доступ до елементів проходить по їх іменах. Одночасна робота з елементами виключена. В якості елементів об’єднань можна використ. і с-ри.

Record – записи <ім’я запису> record<Опис елементів>

з метою економії пам’яті введено записи. При опису запису для кожного елемента вказується довжина в бітах, і необов’язково, деякі значення.

13. Доступ до примірників структур даних.

Структуры представляют собой шаблоны с описаниями форматов данных, которые можно накладывать на различные участки памяти, чтобы затем обращаться к полям этих участков с помощью мнемонических имен, определенных в описании структуры. Структуры особенно удобны в тех случаях, когда мы обращаемся к областям памяти, не входящим в сегменты программы, т.е. к полям, которые нельзя описать с помощью символических имен. Используются структуры также и в тех случаях, когда в программе многократно повторяются сложные коллекции данных с единым строением, но различающимися значениями. Пример:

meddata struc ;Структура с именем meddata

index dd 0 ; Номер карты

sex db 0 ;Пол

birth dw 0 ;Год рождения

datein db ' / / ' ;Дата поступления

dateout db ' / / ' ;Дата выписки

meddata ends ;Конец описания структуры

Описание структуры можно располагать в любом месте программы, но до описания конкретных структурных переменных. Транслятор, встретившись с описанием структуры, не транслирует ее текст, т.е. не выделяет место в памяти, а просто запоминает приведенное описание, чтобы воспользоваться им в дальнейшем, если в программе встретятся объявления переменных типа этой структуры.

Заполним ее конкретной информацией, которая была указана в описании структуры:

data segment

pat 1 meddata <1234567, 'м',1955, 1З/06/981, '15/06/98'>

pat2 meddata <1982234, 'м',1932, '18/06/98', '25/06/98 '>

pat3 meddata <4389012, 'ж',1966, '01/12/97', '15/12/97'>

pattemp meddata <>

data ends

При обработке данных в программе можно пользоваться мнемоническими обозначениями всей структуры и ее составляющих, причем имена элементов структуры должны отделяться точкой:

mov EAX,patl.index ;ЕАХ=1234567

mov SI,offset patl.datein ;31=смещение элемента patl.datein

mov DL,pat3.sex ;DL='ж'

Адрес конкретной структурной переменной можно поместить в базовый или индексный регистр, и пользоваться им в конструкциях с косвенной адресацией:

mov BX,offset pat3 ;ВХ=смещение pat3

mov EAX,[BX].index ;EAX=4389012

mov [BX].sех='м' ;Программная инициализация

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]