19
yaddaş sahəsi
verilənlər seqmenti və stek üçün ayırılmış yaddaş sahəsi -
stek
seqmenti adlanır. Mikroprosessorda hər bir seqment üçün uyğun seqment
registrləri mövcudur. Bildiyimiz kimi informasiyanın emalı üçün aşağıdakı 6
seqment registlərindən istifadə edə bilərik:
CS – əmrlər seqmenti;
SS – stek seqmenti;
DS, ES, FS, GS verilənlər seqmentləri.
Ümumiyyətlə, assemblerdə proqramın həcmindən asılı
olaraq proqramlar
bir və ya bir neçə seqmentdə təşkil edilə bilər. Hər bir seqment ‘SEGMENT’
sözü ilə başlayaraq ‘ENDS’ sözü ilə qurtara bilər. Bu halda seqmenti aşağıdakı
kimi təyin edə bilərik:
Segmentin_ adı SEGMENT [
K] [N] [M] [L] …
Direktivlər, əmrlər, makroəmrlər, kommetariyalar
…
Segmentin_ adı ENDS
Burada
Segmentin_ adı – məcburi parametr olub seqmentin ünvanını
almaq və həmçinin seqmentlər qrupunda seqmentləri kombina etmək üçün
istifadə edilən nişandır. Ondan həm də seqmentlərin bir qrupda
birləşdirilməsi zamanı istifadə edirlər. SEGMENT-in başqa parametrləri
məcburi deyil. Burada
K – düzlənmə tipini ;
N –əlaqə tipini;
M –seqmentin sinfini;
L –seqmentin ölçüsünü təyin edən tipi göstərir.
Əvvəlcə verilənlər seqmentinə aid sadə misal göstərək:
Data_seg SEGMENT
A DB 56
BB DB ?
MAS DB 9,7,5,4,5DUP(3)
Data_seg ENDS
Qeyd etmək lazımdır ki, seqment təkcə proqramı kodlar, verilənlər və
steklərə bölmək üçün deyil, o, daha geniş funksional təyinatlara malikdir.
Seqment (bölüm) modul proqramlaşdırması konsepsiyası ilə bağlı olan ümumi
mexanizmin əsas hissəsidir. O müxtəlif proqramlaşdırma dillərinin
kompilyatorları tərəfindən yaradılan obyekt modullarının unikal təşkilinə
imkan verir. Bu isə müxtəlif proqramlaşdırma dillərində yazılmış proqramları
birləşdirməyə imkan yaradır. Müxtəlif varianların belə birləşdirilməsi üçün
SEGMENT direktivində bir sıra operandlar nəzərdə tutulub. Bunları ətraflı
nəzərdən keçirək:
Düzlənmə
tipi kimi Mempage, Page, Pare, Word, DWord, Byte kimi
atributlar götürülə bilər. Düzlənmə tipi bölümün hansı ünvandan başlandığını
20
təyin edir. Bu parametr ona görə
vacibdir ki, düzlənmənin düzgünlüyündən
asılı olaraq MP verilənlərə müraciəti daha sürətlə icra edir.
Mempage –tipli bölümün başlanğıc ünvanının axırıncı 3 rəqəmi ‘000H’ ilə
qurtarır. Yəni, ünvan 4kb –a qalıqsız bölünməlidir (növbəti yaddaş səhifəsinin
ünvanı 4kb səhifə sərhəddinə tamamlanır).
Page - tipli bölümün başlanğıc ünvanının axırıncı 2 rəqəmi ‘00H’ ilə
qurtarır. Ünvan 256–ya qalıqsız bölünür (256 bayt ölçülü səhifə sərhəddinə
tamamlanır).
Para - tipli bölümün başlanğıc ünvanının axırıncı rəqəmi ‘0H’ ilə qurtarır.
Yəni, ünvan 16–ya qalıqsız bölünür (paraqraf sərhəddinə tamamlanır).
Dword – bölümün başlanğıc ünvanı 4 bölünən olmalıdır (ikiqat söz
sərhəddinə tamamlanır).
Word - bölümün başlanğıc ünvanı 2–yə qalıqsız bölünən olmalıdır.
Byte –bölüm yaddaşın ixtiyarı ünvanından başlayır.
Susmaya görə düzləmə tipi kimi Para götürülür.
Əlaqə tipi, əlaqələr redaktoruna (LİNK.EXE və TLİNK.EXE proqramı) eyni
adlı bölümlərin necə əlaqələndirilməsi haqqında məlumat verir. Əlaqə tipi kimi
Private, Public, Common, Stac götürülə bilər.
Private –tipli əlaqə zamanı eyni adlı bölümlər by moduldan kənarda
birləşmir. Alınan yeni bölüm tam və kəsilməz olacaq.
Public –tipli əlaqə ilə bütün eyni adlı bölümlər Link mərhələsində birləşdilir.
Bütün əməliyyatlar bu bölümün başlanğıcına nəzərən aparılacaq.
Common – tipli əlaqə ilə Link mərhələsində eyni adlı bölmələr üçün eyni
ünvandan yer ayrılır. Bölümün ölçüsü ən böyük bölümə uyğun təyin edilir.
Belə üsul ilə bəzən overley proqramlar tərtib edilir.
Stac – tipli əlaqə bölmünlərin icra mərhələsində birləşəcəyini təyin edir. Bu
tip əsasən Exe genişlənməli fayllardan istifadə edilir. Əməliyyatlar SS
registrindəki ünvana nəzərən aparılır.
M – bölümün Code, Data və Extra siniflərindən birinə aid olduğunu göstərir
və onlar apastrof arasında yazılırlar. Proqram bir neçə molulların
bölümlərindən ibarət olduqda əlaqələr redaktoruna uyğun bölümlər
ardıcıllığını təyin etməkdə kömək edir. Əlaqələr redaktoru eyni adlı sinifləri
bir ünvandan başlayaraq birləşdirir.
L –atributu bölümlərin ölçü atributudur və Use16 və ya Use32 kimi təyni
edilə bilər. İ80386-dan başlayaraq bölümlər 16 və ya 32 mərtəbəli ola bilərlər.
Bu həm bölümlərin ölçüsünə, həm də seqment daxilində fiziki ünvanın tərtib
dərəcəsinə təsir göstərir.