Strukturla işləmə metodları
İstənilən proqramlaşdırma dilində struktur tipin daxil edilməsi ideyası müxtəlif tip dəyişənlərin bir obyektdə birləşdiriləməsidir. Dildə konkret struktur nüsğənın daxilindəki dəyişənə müraciət vasitələri olmalıdır.
Əmrdə strukturun hər hansı sahəsinə istinad etmək üçün xüsusi ”.“ (nöqtə) simvolu ilə göstərilən operatordan istifadə olunur. Onun formatı aşağıdakı kimi göstərilir:
Ünvan_ifadə . Struktur_sahəsinin _adı.
Burada:
Ünvan_ifadə –hər hansı struktur tip dəyişənin identifikatoru və ya ifadə olub, mötərizədə uyğun olaraq aşağıdakı qaydada göstərilir:
Dəyişənin_adı
Dəyişənin_adı+ konstant
[registrin _adı]
[registrin _adı+ konstant]
Yuxardakı şəkildə struktur sahəsinə müraciət operatorunda ünvan_ifadə-nin sintaksis təsviri göstərilmişdir.
Struktur_sahəsinin_adı – struktur şablonundakı sahənin adıdır. Bu da əslində ünvan olub, sahənin strukturun başlanğıcına nəzərən sürüşməsini göstərir.
Beləliklə, “.” operatoru aşağıdakı qayda ilə hesablanır:
(Ünvan_ifadə)+(struktur_sahənin _adı)
İndi isə yuxarda təyin olunmuş işçi strukturundakı yaş sahəsinin qiymətinin AX registrinə necə göndərməsi məsələsinə baxaq. Məsələdə qəbul olunmuşdur ki, iş qabiliyətli işçinin yaşı 99-dan çox ola bilməz. Verilənlərin saxlanması prinsipinə uyğun olaraq “kiçik bayt kiçik ünvanda” yaşın böyük rəqəmi AL registrində, kiçik rəqəmi isə AH registrində yerləşdiriləcəkdir. Burada düzəliş etmək üçün
XCHG AL, AH ; registrlərin məzmunu dəyişir. Əmrindən istifadə etmək kifayətdir: MOV AX,WORD PTR cod1. yaş XCHG AH, AL ; və ya: LEA BX, cod1 MOV AX, WORD PTR [BX]. yaş XCHG AH, AL
Yaş simvolik sahənin məzmunu AX registrində yerləşdirdikdən sonra AAD əmrinin köməyi ilə onu ikilik təsvirə çevirmək sərfəli olacaq.
Assembler dili, təkcə struktur tipli dəyişənin deyil, həm də massiv strukturların təyin edilməsinə imkan verir. Misal üçün 10 elementdən ibarət struktur tipli işçi massivini təyin edək:
Mas_cod işçi DUP (<>)
Sonra Massiv strukturu ilə işlər birölçülü massivə analoji aparılır.
Proqramda təyin olunmuş başqa identifikatorlara analoji olaraq traslyator, sruktur tipin adını və stuktur tip dəyişənlərin atributunun adını təyin edir. Bu atributun qiyməti onun strukturda baytlarla tutduğu sahələrin ölçüsü ilə təyin olunur. Bu qiyməti göstərmək üçün isə type operatorundan istifadə olunur. Beləliklə, struktur nüsğəsinin ölçüsünü təyin edib, massiv strukturdakı kimi indeksləməni təşkil etmək olar.
Məsələn:
... isci STRUC ... isci ENDS ... mas_cod isci 10 DUP (<>) ... MOV BX,TYPE isci ; BX=87 LEA DI,mas_cod ;Bütün işçilərin cinsi haqqında məlumatı ekrana çıxarmaq: MOV CX,10 cycl: MOV DL, [DI] .cins MOV AH,6 ; isçi strukturın cins sahəsinin INT 21h ; məzmunu ekrana çıxarmaq ADD DI,BX ;mas_cod massivindən növbəti ; struktura keçmək LOOP cycl ...
Üçüncü işçinin soy adlı sahəsinin sürətini, beşinci işçinin soy adlı sahəsinə köçürən daha bir proqram fraqmentinə baxaq:
... isci STRUC ... isci ENDS ... mas_cod isci 10 DUP (<>) ... MOV BX,OFFSET mas_cod MOV SI, (TYPE isci)*2 ; SI=87*2; ADD SI,BX MOV DI, (TYPE isci)*4 ; SI=87*4 ADD DI,BX MOV CX,30 REP MOVSB ...