пор OF=1, якщо після зсуву старший біт змінився;- Після sar OF=0;- Після shr OF=значенням старшого біта вихідного числа.
16. Структури в Асемблері
Структура складається з полів-даних різного типу і довжини, займаючи послідовні байти пам'яті. Щоб використовувати змінні типу структура, необхідно спочатку описати тип структури, а потім описати змінні такого типу. Опис типу структури:
<ім'я типу> struc
<опис поля>
-----------------------
<опис поля>
<ім'я типу> ends
<ім'я типу>- Це ідентифікатор типу структури, struc і ends - директиви, причому <ім'я типу> в директиві ends також обов'язково, так як такий директивою закінчується сегмент. Для опису полів використовуються директиви визначення DB, DW, DD і т.д. Ім'я, вказане в цих директивах, є ім'ям поля, але імена полів не локалізовано всередині структури, тому вони повинні бути унікальними в рамках всієї програми, крім того, поля не можуть бути структурами - не допускаються вкладені структури.
Наприклад,
TData struc; data - ідентифікатор типу
y DW 2000DB? DB 28ends;
y, m, d - імена полів. Значення у полі операндів директив DW і DB, називаються значеннями полів, прийнятими за замовчуванням,?- Означає, що значення за замовчуванням немає.
На підставі опису типу в програму нічого не записується і пам'ять не виділяється. Опис типу може розташовуватися в будь-якому місці програми, але тільки до опису змінних даного типу. На підставі опису змінних Ассемблером виділяється пам'ять згідно з описом типу в послідовних комірках, так що в нашому випадку розміщення полів можна представити так:
Опис змінних типу структури здійснюється за допомогою директиви види: ім'я змінної ім'я типу <початкові значення>
Тут куточки НЕ метасимволи, а реальні символи мови, всередині яких через кому вказуються початкові значення полів.
Початковим значення може бути: 1)? 2) вираз 3) рядок 4) порожньо.
Наприклад:
Ідентифікатор типу TData використовується як директива для опису змінних так само, як використовуються стандартні директиви DB, DW і т.д. Якщо початкові значення не будуть вміщатися у відведений йому при описі типу поле, то буде фіксуватися помилка. Пріоритетними є початкові значення полів, зазначені при описі змінних, тобто якщо при описі змінної для поля вказано?, або яке-небудь значення, то значення цих полів за замовчуванням ігноруються.
Правила використання початкових значень і значень за замовчуванням:
) Якщо в полі змінної вказаний знак?, то це поле не має початкового значення, навіть якщо це поле має значення за замовчуванням (поле y змінної dt1);
) Якщо в полі змінної вказано вираження рядок, то значення цього виразу або сама рядок стає початковим значенням цього поля (поля m і d змінної dt1 і поле y змінної dt2);
) Якщо початкове значення поля змінної «порожньо»- Нічого не вказано при описі змінної, то в якості початкового встановлюється значення по умовчання - значення, вказане при опи...