Massivlər

Massivlər – eyni tipli elementlər yığımıdır. Assembler dilinin proqramlarında massivləri təşkil etmək üçün xüsusi vasitə yoxdur. Proqramda massivdən istifadə etmək tələbi yarandıqda onu aşağıdakı üsulların biri vasitəsi ilə təşkil etmək lazımdır:

- massivin elementlərini verilənlərin təsviri direktivlərinin birinin köməyi ilə təyin edib operandlar sahəsində ardıcıl sadalamaqla. Məsələn, hər bir elementi 4 bayt uzunluğunda olan, 5 elementdən ibarət massivi

Mas dd 124,32,-3,4,15

kimi təsvir etmək olar;

-DUP təkrarlama operatorundan istifadə etməklə. Məsələn, hər bir elementi 2 bayt uzunluğunda olan, 5 sıfır elementdən ibarət massivi

Mas dw 5 DUP (0)

kimi göstərmək olar;

Bu üsuldan massiv üçün yaddaş sahəsi ayırmaq və massivin elementlərini inisiallaşdırmaq məqsədilə istifadə olunur.

- LABEL REPT direktivlərindən istifadə etməklə. Bu iki direktiv cütlüyü böyük massivlərin yaddaşda yerləşdirilməsini asanlaşdıra və onun təsvirinin əyaniliyini artıra bilir. REPT direktivi assemblerin makrovasitələrinə aid olub, REPT direktivi ilə ENDM direktivi arasında yerləşən sətrlərin REPT direktivində göstərilən say qədər təkrar çağrılmasını təmin edir. mas_b adlı bayt massivinin yaddaşda təyin olunmasını buna misal göstərmək olar. Bu halda LABEL direktivi, yaddaşda yer ayırma və inisiallaşdırma direktivinə analoji olaraq mas_b simvolik adını təyin edir.

LABEL direktivinin üstün cəhəti ondan ibarətdir ki, o ehtiyat yaddaş sahəsi ayırmayır, ancaq obyektin xarakteristikasını təyin edir. Göstərilən halda obyekt – yaddaş xanasıdır.

Bir-birinin ardınca bir neçə LABEL direktivindən istifadə etməklə, eyni yaddaş sahəsini müxtəlif ada və tipə mənsub etdirmək olar. Məsələn:

...
n=0
...
mas_b  LABEL BYTE
mas_w LABEL WORD
REPT  4
           DW 0F157h
ENDM

Nəticədə yaddaşda dörd 0F157h söz ardıcılığı yaradılacaqdır. Bu ardıcıllığı proqramda mas_b və ya mas_w tiplərin seçilməsindən asılı olaraq bayt və ya söz massivi kimi götürmək olar. Aşağıdakı proqram mətninə baxaq:

MASM
MODEL SMALL
.STACK 256
.DATA
mes	DB 0Ah,0Dh,”Massiv – ”,”$”
mas    DB 10 DUP (?)	; İlkin massiv
I       DB 0
.CODE
main:
	MOV AX,@DATA
	MOV DS,AX
	XOR AX,AX         ; AX sıfırlaşdırmaq
	MOV CX,10          ; Dövrlərin sayını CX yükləmək 
	MOV SI,0             ; Başlanğıc elementin (sıfırıncı) 

                          ; indeksini SI yükləmək
go:	                 ; Dövrün inisiallaşması 
	MOV BH,I
	MOV mas[SI],BH      ; I qiymətinin  massivə yazılması
	INC I
	INC SI               ;Massivin növbəti elementinə keçid 
	LOOP go
;Alınmış massivin ekrana çıxarılması
	MOV CX,10
	MOV SI,0
	MOV AH,09h
	LEA DX,mes
	INT 21h
symb:
	MOV AH,02h      ; DL-dən qiymətin ekrana
                       ;çıxarılması funksiyası 
	MOV DL,mas[SI]
	ADD DL,30h  ; 0,...,9 diapazonunda olmaq şərti ilə, 
	INT 21h            ; ədədi simvola çevirmək
	INC SI
	LOOP symb
	MOV AX,4C00h 
	INT 21h
	END  main

«« Dövlərin idarəsi əmrləri    Massivlər    Massivin elementlərinə müraciətin təşkili »»
Share


Muəlliflər: A.Ş.Süleymanov, A.İ.Məmmədov, V.İ.Bədəlov, R.T.Mustafayev


YER Hostinq

Internet Jobs Database
Apart rent us