Курсовая работа: Робота з записами мови ассемблера
Имя_записи RECORD <описание элементов>
Тут: <описание элементов> є послідовністю описів окремих елементів запису згідно синтаксичній діаграмі (див. мал. 6):
Мал.1. Синтаксис опису шаблона запису
При описі шаблона пам'ять не виділяється, оскільки це всього лише інформація для транслятора асемблера про структуру запису.
Так само, як і для структур, місцеположення шаблона в програмі може бути будь-ким, але при цьому необхідно враховувати логіку роботи однопрохідного транслятора.
Визначення екземпляру запису
Для використовування шаблона запису в програмі необхідно визначити змінну з типом даного запису, для чого застосовується наступна синтаксична конструкція (мал. 7):
Мал.2. Синтаксис опису екземпляру запису
Аналізуючи цю синтаксичну діаграму, можна зробити висновок, що ініціалізація елементів запису здійснюється достатньо гнучко. Розглянемо декілька варіантів ініціалізації.
Якщо ініціалізувати поля не потрібен, то достатньо вказати ? при визначенні екземпляру запису:
...
iotest record
i1:1,i2:2=11,i3:1,i4:2=11,i5:2=00
...
flag iotest ?
Якщо ви складете і дослідите у відладчику тестовий приклад з даним визначенням запису, то побачите, що всі поля змінної типу запис flag обнуляються. Це відбувається не дивлячись на те, що у визначенні запису задані початкові значення полів.
Якщо потрібна часткова ініціалізація елементів, то вони полягають в кутові (< і >) або фігурні ({ і }) дужки.
Відмінність тут в тому, що в кутових дужках елементи повинні бути задані в тому ж порядку, що і у визначенні запису. Якщо значення деякого елементу спывпадає з початковим, то його можна не вказувати, але обов'язково позначити його комі. Для останніх елементів коми, що йдуть підряд, можна опустити.
Наприклад, згодитися із значеннями за умовчанням можна так:
iotest record
i1:1,i2:2=11,i3:1,i4:2=11,i5:2=00
...
flag iotest <> ;согласились со значением по умолчанию
Змінити значення поля i2 можна так:
iotest record
i1:1,i2:2=11,i3:1,i4:2=11,i5:2=00
...
flag iotest <,10,> ; перевизначили i2
Застосовуючи фігурні дужки, також можна вказати вибіркову ініціалізацію полів,але при цьому необов'язково позачити комами поля, із значеннями за умовчанням яких ми згодні:
iotest record
i1:1,i2:2=11,i3:1,i4:2=11,i5:2=00
...
flag iotest {i2=10} ; переопределили i2, не обращая внимания на порядок;следования других компонентов записи
1.Загальні відомості