Assembler proqramlaşdırma dili

Strukturla işləmə metodları

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 daxilin­də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 opera­torunda ünvan_ifadə-nin sintaksis təsviri göstərilmişdir.

Struktur_sahəsinin_adı – struktur şablonundakı sa­hə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
...