Assembler proqramlaşdırma dili

Birləşmə tip verilənlər

Birləşmə tip verilənlər

Praktitki məsələlərin həllində mövcud məşğul yaddaş sahəsini başqa tip və ada malik obyekt üçün yenidən təyin etmək lazım gəlir. Bu məqsədlə, Assembler dilində birləşmə (bir neçə verilənin birləşməsi olan verilənlər tipi) adlanan xüsusi tip verilənlərdən istifadə olunur. Birləşmə tip verilənlər, eyni bir yaddaş sahəsini mövcud başqa tiplər və adlar kimi təşkil etməyə imkan verir. Əsasən, birləşmə tiplər, yaddaşdan səmərəli (qənaətli istifadə etmək üçün) istifadə etmək məqsədi ilə tətbiq olunur. Proqramda birləşmənin təsviri strukturların təsvirinə oxşardır. Beləki, əvvəlcə verilənlərin təsviri direktivləri vasitəsi ilə sahələrin tipi və adı sadalanan şablon yaradılır:

birləşmənin_adı UNION

<sahələrin təsviri>

birləşmənin _adı ENDS

Birləşmə tip dəyişənin yaddaş sahəsi onun maksimal ölçülü elementinin sahəsinə uyğun təyin edilir. Birləşmənin elementinə müraciət onun adına görə aparılır. Bu halda birləşmədə bütün sahələrin bir-biri ilə üst-üstə yığıldığını nəzərdən qaçırmaq olmaz. Eyni zamanda birləşmənin bir neçə elementi ilə işləmək olmaz. Birləşmənin elementi kimi strukturlardan da istifadə etmək olar.

Aşağıdakı proqram fraqmentində birləşmə tip veri-lənlərdən istifadə olunmanın əyani təsvirinin verilməsindən başqa birləşmə və mürəkkəb strukturlardan istifadə olun-ması məsələsinə baxılmışdır. Burada əsas ideya proqramda formalaşdırılan yaddaş göstəricisinin aşağıdakı şəkillərdə göstərilə bilməsidir:

- 16 mərtəbəli sürüşmə;

- 32 mərtəbəli sürüşmə;

- ünvanın tərkib hissələri olan 16 mərtəbəli sürüşmə və 16 mərtəbəli seqment cütlüyü;

- 32 mərtəbəli sürüşmə və 16 mərtəbəli selektor cütlüyü.

Konkret halda bu göstəricilərin hansının tətbiqi (USES16 və ya USES32) ünvanlaşdırma rejimindən və mikroprosessorun iş rejimindən asılıdır. Aşağıdakı misalda təsvir edilən birləşmənin şablonu, müxtəlif tip göstəricilərin tərtibini və istifadəsini asanlaşdırır.

Birləşmənin proqramda tətbiq olunması prosesini aşağıdakı proqramda nəzərdən keçirək

MASM
MODEL SMALL
.STACK 256
.486P           ; 80486 bütün əmrlərinə icazə verilir 
    pnt   STRUC	 ; pnt strukturu 
                                       ;birləşmə tipə daxildir
     UNION      ; birləşmədə mürəkkəb strukturun təsviri
  offs_16 DW  ?
  offs_32 DD   ?
     pnt   ENDS	 ; birləşmənin təsvirinin sonu
   segm   DW  ?
   ENDS	                      ; Strukturun təsvirin sonu
.DATA
point  UNION ; mürəkkəb strukturlu birləşmənin təyini
off_16 DW  ?
off_32 DD  ?
point_16 pnt <>
point_32 pnt <>
point ENDS
tst       DB ” testləşdirmə üçün sətr ”
adr_data point <>  ; birləşmənin  nüsğəsinin təyini
.CODE
main:
MOV AX,@DATA
MOV DS,AX
MOV AX,SEG tst
; adr-data struktur sahəsinə tst sətrinin seqment 
; ünvanı yazmaq
MOV adr_data.point_16.segm, AX
; lazım gəldikdə bu sahədən əksinə qiyməti götürmək olar. 
; məsələn, BX registrinə:
MOV BX, adr_data.point_16. segm
; adr-data struktur sahəsində sürüşmənin təşkili
MOV AX,OFFSET tst	; Sətrin sürüşməsini AX yazmaq
MOV adr_data.point_16.offs_16,AX
    ; bu sahədən lazım gəldikdə analoji olaraq 
; qiyməti götürmək olar
MOV BX,adr_data.point_16.offs_16
exit:
MOV AX,4C00h
INT 21h
END main