62 4. Język asemblerowy> mikroprocesorów 808618088
DB 4
a także A AA DB 1,23,1,2,3,4,5,5,1,2,3,1,2,3,4,5,5 J
atrybuty to omi-
Słowo kluczowe DUP można leż wykorzystać przy (re)definiowaniu łańcuchów. Łańcuchy TEKST i INNYTEKST z wcześniejszego przykładu mają wynikające z zastosowanej dyrektywy: tvp = l, Iength= 1 oraz size = l. Można nąć następująco
TEKST DB 5 DUP (?)
ORC, OFFSET TEKST
DB 'Lidia’
Dyrektywa RECORD
Dyrektywa RECORD służy do przygotowania przydziału pamięci operacyjne na poziomie bitów. Sama definicja rekordu nie powoduje rezerwacji pamięci, dopiero użycie nazwy rekordu spowoduje, że miejsce w pamięci zostanie zarezerwowane i zainicjowane zgodnie z wcześniej zadeklarowaną formą. Jeżeli przy aktualnym wywołaniu rekordu nic jest podana wartość, to przy inicjowaniu jest przyjmowana wartoś standardowa. W zależności od sumarycznej liczby bitów (tzn. zadeklarowanych poi i ich długości) zostaje zarezerwowany bajt lub słowo w pamięci. Tak więc maksymalna! liczba bilów w rekordzie wynosi 16, minimalna zaś I. Składnia dyrektywy jest następująca 1
nazwa rekordu RECORD nazwa_pola_l:wielkość [=wyrażenie]
& [, nazwa pola_2:wielkość [ = wyrażenie],...] 4
przy czym:
- nazwajyola musi kończyć się dwukropkiem, 1
- wielkość oznacza długość pola w bitach, J
- wyrażenie, jeżeli występuje, określa wartość pola w momencie jego inicjacji (jeżeli wartość ta jest zbyt duża, to jest meldowany błąd).
Przykład
SEMAFORY
RECORD K:2, GW:4 = 0FH, WYN1K:3 = 010B
Pole rekordu zostaje zorganizowane zgodnie z kolejnością deklarowanych bitów, od najbardziej do najmniej znaczącego bitu. Gdy całkowita długość rekordu jest mniejsza niż 8 lub 16, to rekord zostaje przesunięty w prawo, aż ostatni bit ostatniego pola znajdzie się na pozycji najmniej znaczącego bitu bajtu lub słowa. Zdefiniowany rekord może być użyty do rezerwowania i inicjowania pamięci w podobny sposób jak dyrektywy DB i DW.
4.3. Dyrektywy i pseudoinstrukcje
Składnia wywołania rekordu jest następująca: nazwa nazwa rekordu [wyrażenie)
pr/y czym wyrażenie, jeżeli występuje, musi być w nawiasie trójkątnym. Inicjuje ono pole określoną wartością.
Przykład
A SEMAFORY < 3„ 11 IB > ; pole ”GW nic jest inicjowane
Zmienne określone za pomocą dyrektywy RECORD mogą być w programie używane tak samo jak inne zmienne (np. deklarowane dyrektywami DB lub DW). Z dyrektywą RECORD są związane trzy operatory - SHIFT, WIDTH, MASK oraz operator SIZE stosowany ogólnie w wyrażeniach adresowych. Ich znaczenie jest opisane w p. 4.4.
Dyrektywy STRUC/ENDS pozwalają na zdefiniowanie struktury danych na poziomie bajtów (podobnie jak dyrektywa RECORD na poziomie bitów). Wywołanie nazwy_struktnn>\ co może wystąpić w programie wielokrotnie, powoduje zarezerwowanie i ewentualnie zainicjowanie odpowiedniej liczby bajtów w pamięci operacyjnej. Składnia definicji struktury jest następująca
nazwastruktury STRUĆ
; między słowem kluczowym STRUĆ a ENDS ; może wystąpić dowolna kombinacja dyrektyw ; DB,DW,DW,DQ,DT definiujących pola ; struktury
nazwa struktury ENDS
Dyrektywy DB, DW, DD, DO i DT, przy wywołaniu nazwy struktury, są przepisywane tylko wówczas, gdy występują w formie pojedynczych deklaracji, np.: LICZBA DW ?, ABC DB 55H, lub w postaci łańcucha znaków, np.: TEKST DB TEKST’. Deklaracje z listą argumentów, np.: POLE A DB 1,2,3,? oraz wykorzystujące słowo kluczowe DUP nie są wtedy przepisywane. Składnia wywołania dyrektywy jest
nazwa nazwastruktury < wyrażenie [, wyrażenie, ...J >
Przy czym odpowiednie pole struktury przyjmuje wartość wyrażenia.
dane
pOLE DANYCH LICZBA WSKAŹNIK STAŁA TABELA TEKST
SEGMENT
STRUĆ ; definicja struktury
DW ? ; danych
DB 0
DD 0A6810012H DB 20 DUP (?)
DB ’ pewien tekst’