Assembler proqramlaşdırma dili

Dolayı registrli ünvanlaşdırma

Dolayı registrli ünvanlaşdırma

Dolayı registrli ünvanlaşdırmada operandın effektiv (icra) ünvanı EAX, EBX, ECX, EDX, ESİ/Sİ, EDİ/Dİ, ESP (birbaşa AX, CX, DX, SP registrlərindən deyil) registrlərinin məzmunu ilə təyin edilə bilər.

Qeyd edək ki, baza registri kimi operandları 32 –mərtəbəli olan əmrlər üçün istənilən 32 –mərtəbəli ÜTR registrlərdən, operandları 16 –mərtəbəli əmrlər üçün isə yalnız BX və BP registrlərdən istifadə oluna bilər.

Dolayı registrli ünvanlaşdırmada əmrdə göstərilən registr kvadrat [,] mötrizə içərisində yazılır. Məsələn:

MOV AX, [BX]

Bu əmr sxematik olaraq aşağıdakı kimi icra olunur:

 

Yəni, MOV AX, [BX] əmrinə görə yaddaşdan söz AX registrinə yüklənir. Bu halda seqmentin selektoru (blokun başlanğıc ünvanı) DS registrində, sürüşmə isə BX registrində olur.

Ünvan sürüşməsini BX reqistrində yerləşdirmək üçün yaddaş xanasının ünvanına OFFSET əməliyyatını tətbiq etmək mümkündür. Odur ki, yuxarıdakı əmri aşağıdakı 2 əmrlə əvəz etmək olar:

MOV BX, OFFSET table

MOV AX, [BX]

Bu əmrlər cütü elə MOV AX, table əmrinin yerinə yetirdiyi əməliyyat icra edir.

Əgər yalnız bir yaddaş xanasına (table) müraciət etmək lazım gələrsə, onda

MOV AX, table əmrindən istifadə etmək əlverişlidir. Bir neçə yaddaş xanasına verilmiş baza ünvanından başlayaraq müraciət etmək üçün isə yuxarıdakı kimi iki əmrdən istifadə etmək daha sərfəlidir.

Qeyd edək ki, susmaya görə DS registrindən verilənlərin ünvanını təyin etmək üçün istifadə olnur. Əgər sürüşmə üçün ESP, EBP və ya BP registrlərindən istifadə olunarsa, onda segment registri kimi SS registri tətbiq olunur.

Real rejimdə 32 mərtəbəli registrlərdən sərbəst istifadə etmək olar, ancaq bu halda elə etmək lazımdır ki, onların məzmunu 16 bitdən artıq olmasın. Məsələn:

MOV AX, [ECX]