Assembler proqramlaşdırma dili

Əmrlərdə operandların verilməsi üsulları

Əmrlərdə operandların verilməsi üsulları

Əvvəlki paraqrafda maşın əmrlərinin operandlarının verilmə forması ilə qısaca tanış olduq.Əmrlərin operandlarının verilmə üsulları Assembler proqamında aparıcı amil olduğundan onunla daha ətraflı tanış olaq. Operandlar əmrdə aşkar və ya qeyri-aşkar şəkildə verilə bilər. Operandlarda ədəd, simvol və ünvan göstərilə bilər.

1. Operand mikroproqram səviyyəsində qeyri-aşkar şəkildə verilir. Bu halda əmr operandsız yazılır. Əmrin yerinə yetirilməsi alqoritmində susmaya görə hər hansı obyektlərdən (registlərdən, eflags bayraqlarından və s.) istifadə olunur. Məsələn, cli və sti əmrləri qeyri-aşkar şəkildə eflags registrinin if kəsilmə bayrağı ilə , xlat əmrini isə qeyri-aşkar şəkildə al registrinə və ds:bx registrlər cütlüyü ilə təyin olunan yaddaş ünvanındakı sətrə müraciət edir.

2. Operand əmrin özündə verilir (bilavasitə operand). Bu halda operand əmrin kodunda yerləşir. Başqa sözlə operand əmrin hissəsidir. Belə operandı saxlamaq üçün əmrdə 32 bitlik sahə ayrılır. Bilavasitə operand kimi yalnız ikinci operand (mənbə) ola bilər. Operand-qəbuledici ya yaddaşda, ya da registrdə ola bilər.

Məsələn,

Mov ax, 0ffff h

əmri ffffh onaltılıq konstantı ax registrinə göndərir.

Add sum, 3

əmri 3 tam ədədini yaddaşın sum adlı ünvanının məzmunu ilə toplayır və nəticəni birinci operandın yerinə, başqa sözlə yaddaşa yazır.

3. Operand registrlərin birində yerləşir. Registrli operandlarda registrlərin adı göstərilir. Bu məqsəd üçün aşağıdakı registrlərdən istifadə oluna bilər:

· EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP – 32 mərtəbəli registrlərdən;

· AX, BX, CX, DX, SI, DI, SP, BP – 16 mərtəbəli registrlərdən;

· AH, AL, BH, BL,CH,CL,DH,DL - 8 mərtəbəli registrlərdən;

· CS, DS, SS, ES, FS, GS-seqment registrlərindən.

Məsələn, ADD AX,BX

əmri ax və bx registrlərinin məzmunu toplayır və nəticəni ax registrində yerləşdirir.

DEC SI

əmri si registrinin məzmunu 1 vahid azaldır.

4. Operand yaddaşda yerləşir. Bu bir qədər mürəkkəb və eyni zamanda bir qədər də çevik operandların verilmə üsuludur. O iki əsas rejim olan birbaşa və dolayı ünvanlaşdırma rejimləri ilə realizə olunur.

Dolayı ünvanlaşdırma isə öz növbəsində aşağıdakı müxtəlif üsullara malikdir:

· Dolayı baza ünvanlaşdırma ( və ya başqa adla –registrli dolayı ünvanlaşdvrma);

· Sürüşdürməklə dolayı ünvanlaşdırma;

· sürüşdürməklə indeksli dolayı ünvanlaşdırma;

· baza indeksli dolayı ünvanlaşdırma;

· sürüşdürməklə baza indeksli dolayı ünvanlaşdırma (ünvanlaşdırma rejimləri haqqında geniş məlumat sonra veriləcək).

5. Giriş-çıxış portu operandda verilir. Mikroprosessor yaddaşda giriş-çıxış qurğularına müraciəti təşkil etmək üçün, ayırımış giriş-çıxış ünvan fazasından istifadə edir. Giriş-çıxış ünvan fazasının ölçüsü 64 Kbaytdır. Kompüterin istənilən qurğusu üçün bu ünvan fazasında ünvan ayrılır. Bu ünvan fazası daxilində ünvanın konkret qiyməti giriş-çıxış portu adlanır. Fiziki giriş-çıxış portlarına üyğun apparat (mikroprosessor registrləri ilə qarışdırmaq olmaz) registrləri mövcuddur ki, bunlara da Assemblerin IN və OUT xüsusi əmrlərinin köməyi ilə müraciət etmək olur. Məsələn,

IN AL,60H ; 60h portundan baytı daxil edir.

Giriş-çıxış portlarının ünvanını təyin edən registrlər 8,16 və ya 32 bit ola bilər. Ancaq, konkret port üçün registrlərin mərtəbələrinin uzunluğu fiksə olunur. Mənbə və ya qəbuledici registr-akkumulyator adlanan eax, ax, al registrlərindən istifadə olunur. Registrlər portun mərtəbəsinə uyğun seçilir. Portun nömrəsi in və out əmrlərində bilavasitə operand və ya dx registrində qiymət kimi verilə bilər. Axırıncı üsul proqramda portun nömrəsini dinamik təyin etməyə imkan verir.

Məsələn,

MOV DX, 20H ; portun 20h nömrəsini dx registrinə yazmaq

MOV AL, 20H ; 20h qiymətini al registrinə yazmaq

OUT DX, AL ; 20h qiymətini 20H portuna çıxarmaq.

6.Operand stekdə olduqda.