Assembler proqramlaşdırma dili

Bazaya görə indeksləşmiş ünvanlaşdırma

Bazaya görə indeksləşmiş ünvanlaşdırma

Bazaya görə indeksləşmiş ünvanlaşdırmada mütləq ünvan, baza registrinin məzmunu və ya sürüşmənin cəindən alınır. Bu halda registri və nisbi ünvanı ixtiuari ardıcıllıqda vermək olar. Məsələn, aşağıdakı əmrlər müxtəlif yazılışa malik olmalarına baxmayaraq eyni nəticəni alırlar:

MOV  AX, [ AX+Sİ+2]
MOV  AX, [BX][Sİ]+2
MOV  AX, [BX+2][Sİ]
MOV  AX, [BX][Sİ+2]
MOV  AX, 2[BX][Sİ]

AX registrinə sürüşmənin qiyməti BX və Sİ registrlərinin məzmunları və 2 ədədinin cəmi ilə təyin edilən yaddaş sa­həsindəki iki bayt uzunluqlu verilən göndərilir. 16 mərtəbəli registrlərdən DX registri ilə Sİ registrni, BX registri ilə Dİ registrini, BP registri ilə Sİ registrini, BP registri ilə Dİ registrini, 32 mərtəbəli bütün ÜTR-ləri ələ­mək olar. Bu cür ünvanlaşdırma rejimindən əsasən ikiölçülü massivlərin elementlərinin ünvanlarının təyin olunmasında istifadə etək olar. Məsələn, əgər 10x10 bayt table (cədvəlin adıdır) cədvəli sürüşməsi (verilənlər seqmentinin başlanğıcına nəzərən) 100h, BX=14h və Dİ=7h verilibsə, onda

MOV AX, [DI][BX] table

əmri icra olunduqan sonra 3-cü sətrdən 7-ci və 8-ci baytlarda yerləşən verilən AX registrinə yazılacaqdır.

Bu əmrin icra sxemi aşaıdakı kimidir:

Əgər cədvəlin elementləri söz və ya ikiqat söz uzunluqda olarsa, tam ünvanlaşdırma üçün bazaya sürüdürmə və miqyaslaşma rejimindən istifadə etmək məqsədə uyğundur. Bazaya görə indeksləşdirilmiş ünvanlaşdırılma rejiminə aid bir neçə misalı nəzərdən keçirək:

a) MOV EAX, [ESİ][EDX]

Bu 2-ci operandın effektiv ünvanı iki komponentin (ESİ) və (EDX) registrinin cəmi şəklində təyin olunur.

b) MOV EAX, [ESİ+5][EDX]

Bu əmr (ESİ)+5+(EDX) ünvanındakı ikiqat sözü EAX registrinə göndərir.

c) ADD AX, array [ESİ][EBX]

Bu əmr AX_in məzmunu ilə array + (ESİ) + (EBX) ünvanındakı 2 bayt uzunluqlu veriləni toplayır