> Якщо при описі типу структури в директиві, яка описує деяке поле, міститься кілька операндів або конструкція повторення, то при описі змінної цього типу дане поле не може мати початкового значення і не може бути визначено знаком?, це поле має бути порожнім.
Один виняток: якщо поле описано як рядок, то воно може мати початковим значенням рядок тієї ж довжини чи меншою, в останньому випадку рядок доповнюється справа пробілами.
Наприклад:
student strucDB 10 DUP (?); прізвище DB « ******* » ; ім'я
gr DW? ; група
oz DB ??5, 5, 5; оцінки
student ends
Опис змінних:
1 student <«Petrov»,> ; можна, тому поле f не рядки
st2 student < , «Petr», 112,> ; можна, f - не має початкового значення
st3 student < , «Aleksandra» > ; не можна, в i 10 символів, а допустимо не більше 7.
Приклади програм з використанням даних типу структура.
Пряме звернення до полів структури:
; prim1.asm
. model tiny
. code
org 100h; обхід 256 байтного префікса пр-го сегмента - PSP ...
Start: mov AH, 9DX, offset message21h
; DX, st1.s21hDX, st1.f21hDX, st1.i21h
; DB « hello », 0dh, 0ah,« $ » struc; опис типу структури
s DB «student», «$»
f DB «Ivanov», «$» DB «Ivan», «$» ends
st1 tst < > ; опис змінної типу tst
end start
Всі сегментні регістри спочатку виконання програми містять адресу блоку PSP, який резервується безпосередньо перед EXE і COM файлами. Зміщенням для 1-ої команди програми є адреса 100h. Перехід на першу виконувану команду відбувається за допомогою директиви ORG 100h.
Звернення до полів структури в циклі.
; Prim2.asm
. model tiny
. code
org 100h; обхід 256 байтного префікса програмного сегмента
Start: mov AH, 9
mov DX, offset message21hSI, 0CX, 3: lea DX, st1 [SI] 21hSI, 9m1
message DB «hello», 0dh, 0ah, «$»
tst struc; опис типу структури
s DB «student», «$»
f DB «Ivanov», «$» DB «Ivan», «$»
tst endstst < > Start
3.asm - звернення до полів структур: цикл в циклі для роботи з 2-ма записами
. model tiny
. code
org 100h; обхід 256 байтного префікса пр-го сегмента - PSP
Start: mov AH, 9
mov DX, offset message 21h
lea BX, st1; адреса першого запису в BX
mov CX, 2: push CXSI, 0 CX, 3
m1: push CX
lea DX, [BX] [SI]; адресація по базі з індексуванням
int 21h
add SI...