Assembler proqramlaşdırma dili

Yazı tip verilənlər

Yazı tip verilənlər

TASM istifadəçilərə xüsusi tip verilənlər ilə işləməyə imkan verən vasitələr təklif edir ki, bu da bitlərlə daha effektiv işləməyə kömək edir. Bu xüsusi tiplərdən birisi də yazıdırYazı –uzunluğu bir və ya bir neçə bit olan, qeyd olunmuş sayda elementlərdən təşkil olunmuş struktur tip veriləndir.

Deməli massivlərdən, çoxluqlardan, fayllardan fərqli olaraq yazılar da müxtəlif tipli verilənlər məcmusudur. Bu tiplər siyahını «yazı» tipi şəkilində tərtib etmək istədikdə siyahının əvvəlinə «recod», sonuna isə «end» sözü əlavə olunur. Başqa sözlə, yazılar struktur tipli verilənlər olub, uzunluğu bir və ya bir neçə bit olan qeyd olunmuş sayda elementlərdən (sahələrdən) təşkil olunur.

Yazıların təsviri zamanı onun hər bir elementinin ölçüsü bitlər sayı kimi göstərilir.

Yazıların ümumi ölçüsü onların sahələrinin ölçüləri cəminə bərabər olub 8, 16 və ya 32 bitdən böyük ola bilməz. Əgər yazıların ölçülərinin cəmi göstərilən qiymətlərdən az olarsa, onda bütün yazı sahələri kiçik mərtəbəyə doğru «sıxılır».

Proqramda yazılardan istifadə qaydaları strukturda olduğu kimidir və üç mərhələdə təşkil olunur:

1. Yazıların şablonunu vermək. Yəni, bitlər sahələri yığımının, onların uzunluğunu təyin etmək və lazım gəldikdə sahələri inisiallaşdırmaq.

2. Yazıların nüsxələrini təyin etmək. Strukturda olduğu kimi bu mərhələdə əvvəlcədən yazı şablonunun köməyi ilə təyin olunmuş konkret dəyişənləri inisiallaşdırmaq başa düşülür.

3. Yazının elementlərinə müraciətin təşkili.

Yazılar şablonunun yazılışı aşağıdakı kimi göstərilir:

Yazının_adı RECORD elementlərin_təsviri

Elementlərin _təsviri aşağıdakı qaydaya uyğun təyin olunmuş yazının ayrı-ayrı elementlərinin təviri ardıcıllığıdır:

Sahənin_adı:ölçü[=qiymət][,Sahənin_adı:ölçü [=qiymət]], ...

Kvadrat mötərizədəki parametrlər yazılmaya da bilər. Çoxlu nöqtələr onu göstərir ki, belə konstruksiyalardan bir neçəsi ola bilər.

Şablonun təsviri zamanı yaddaş sahəsi ayrılmır və o yalnız yazının strukturu haqqında assembler translya­to­runa məlumat verir. Strukturda olduğu kimi, şablon pro­qramın istənilən yerində yerləşdirilə bilər. Ancaq bu halda birkeçidli translyatorun iş xüsusiyyətlərini nəzərə almaq lazımdır.

Proqramda yazıların şablonundan istifadə etmək üçün verilmiş yazı tipinə uyğun dəyişənini təyin etmək vacibdir. Bunun üçün yuxardakı sintaksis konstruksiya tətbiq olunur.

Proqramda təyin olunmuş dəyişəni aşağıdakı kimi yazmaq olar:

Dəyişənin_adı inisiallaşan_ yazının_adı.

İnisiallaşma operandı aşağıdakı üç formadan biri kimi göstərilə bilər:

1. ? (sual işarəsi);

2. <[elementin_başlanıc_qiyməti][, elementin_başlanğıc_qiyməti] ...>;

Kvadrat mötərizə və nöqtələr çoxluğunun mənası yuxarda göstərimiş yazıların elementlərinin təsvirindəki təyinata uyğundur;

3. ([sahənin_ad=ifadə] [, sahənin_ad=ifadə])

İnisiallaşdırmanın bir neçə variantına baxar:

Əgər sahəni inisiallaşdırmaq tələb olunmayırsa, onda yazıların nüsxələrini təyin etmək üçün «?» işarəsini yazmaq kifayətdir.

...
iotest RECORD  i1:1, i2:2=11, i3:1, i4:2=11, i5:2=00
...
 flaq iotest ?
...

burada i1, i2... sahələrin adları, 1,2,3... ölçüləri, 11, 11, 00 isə qiymətləridir.

Əgər göstərilən qaydada təyin olunmuş yazının iştirakı ilə proqram tərtib etmək lazım gələrsə, sazlayıcıda flaq adlı yazı tip dəyişənin bütün sahələri sıfırlaşdırılır. Yazının təyini zamanı sahələrin başlanğıc qiymətlərinin verilməsinə baxmayaraq bu proses baş verir.

Əgər ayrı-ayrı elementləri inisiallaşdırmaq tələb olunar-sa, onlar bucaq («<>») və ya sistem mötərizə içərisində göstərilir. Fərq ondan ibarətdir ki, bucaq mötərizədə elementlər, yazıların təyinindəki ardıcıllıqla düzülməlidir.

Əgər hər hansı elementin qiyməti başlanğıc qiyməti ilə üst-üstə düşürsə, onu göstərməmək olar. Ancaq, onu əvəzinə vergül yazmaq lazımdır. Mötərizələr içərisində heç bir informasiya yazılmadıqda qiymətlər susmaya görə təyin olunur.

Məsələn, 
...
 iotest RECORD  i1:1, i2:2=11, i3:1, i4:2=11, i5:2=00
…
flaq  iotest <>   ; susmaya görə
…
i2 sahəsinin qiymətini aşaıdakı kimi dəyişdirmək olar:
  1)
    ...
   iotest RECORD  i1:1, i2:2=11, i3:1, i4:2=11, i5:2=00
   ...
  flaq  iotest <,10,>   ;i2  -nin yenidən təyini
  ...
2) Böyük mötərizəni tətbiq etməklə də ixtiyari sahənin inisiallaşdırılmasını göstərmək olar. Ancaq bu halda sahəni vergüllə göstərmək məcburi deyil:
...
iotest RECORD  i1:1, i2:2=11, i3:1, i4:2=11, i5:2=00
...
flaq  iotest {i2=10}; i2-nin yenidən təyini bu zaman digər 
 ; elementlərin yazılış ardıcıllığı gözlənilmir