ENDİREK ADRESLEME (INDIRECT ADRESSING)

 
 Endirek adresleme de çok uygulanan yöntemlerden biridir. Bellekte kayıtlı bulunan bir programın belirli bir adresindeki veya adres bölgesindeki bilgileri almak veya oraya yeni bilgi eklemek ya da bir değişiklik yapmak gerektiğinde, endirek adresleme  yöntemi uygulanmaktadır.
     Bu gibi işlemler, daha çok, veri listeleme ve dosya formatlamalarında görülmektedir.

Endirek adresleme prensibi

      Endirek adreslemede belirli bir adresteki veri alış verişi, bu adresi taşıyan diğer bir adres veya Mikroişlemci kaydedicileri aracılığıyla sağlanmaktadır.
Şekil 1.5te çoğunlukla uygulanan, bir ara adres yoluyla endirek Adresleme örneği verilmiştir.
     Şekilde gösterilen Bellek ve Akümülatör 8 bitlik örnektir.

Bu örnekte şu komut ile ilgili işlem yapılmaktadır: LDA ((1050H))
Bu yazılım şeklinin anlamı şudur:
Akümülatörü, 1050 adresinde kayıtlı bulunan adresin gösterdiği bellek gözünün içeriği ile yükle
(( )): Çift parantez endirek adresleme yapıldığını göstermektedir

Örnekler:

1. Z80 Mikroişlemcili bir bilgisayarda, bellekte kayıtlı bulunan programın 1000’inci adresinden itibaren 100 byte’ lık bir BLOK’ un her bir adres başlangıcı, programın bir başlangıç fazı olarak “0” (sıfır) yapılsın.
      Böyle bir durum nasıl gerçekleştirilecektir?
     Burada şu Endirek Adresleme yöntemi uygulanacaktır:

Çözümün mantığı;

     Önce, uygun bir kaydedici çifti ki bu kaydedici çifti BC, DE veya HL çiftinden biri olabilir, başlama noktasını belirtmek üzere l000 Hex adresiyle yüklenmeli, ve sonra da, bu adres “1” artırılırken, bir sayıcı tarafından da, çevrim (LOOP) boyunca, belirtilen blok sayısı kadar döngü sağlanmalıdır. Yani burada, 100’den başlanarak geri saymak suretiyle sıfıra kadar döngü işlemi devam edecektir.
     Bu işlemlerin her adımında da yeni adrese “0” sıfır bitinin kaydı yapılacaktır. Bu da akümülatör ‘aracılığıyla sağlanabilecektir.
     Bu mantığın programlanması şöyle olacaktır:
1000 Hex adresinin kaydı BC kaydedici çifti yapsın.
Geri sayma için D kaydedicisi kullanılsın.
“0” kaydını da A akümülatörü yapacaktır.

 Programın Yazımı:

KOMUT AÇIKLAMA

LD BC, 1000 H :”BC” kaydedici çiftine 1000 H adresini (1.adres)yükle.
1. adresi gösteren başlatma kaydedici çifti)
LD D, 100 :”D” kaydedicisine 100 döngü sayısını yükle. (Döngü sayımını başlatma)
LD A 0 :”A” akümülatörüne, kopya edilecek olan “0” başlangıç değerini yükle. (Kopya edilecek başlangıç değeri).
LOOP1:LD(BC),A :”BC” kaydedici çifti tarafından gösterilen adrese “A” akümülatörü içeriğini yükle.
(Bu işlem Z80 Kaydedici Endirek Adresleme Moduna örnektir.)
INC BC :Her işlemde BC’de kayıtlı adresi “1”artır.
DJNZ LOOP 1 :D kaydedicisi içeriğini 1eksilt. Eğer yeni değer “0” değilse LOOP 1’e dönerek işleme devam et.

Yukarıdaki MNEMONIC’ lerin açıklaması:

LD (load): Yükle
LOOP: Çevrim, döngü
INC (lncrement): Artır
DJNZ (Decrement....., Jump if Non-Zero):.....‘da kayıtlı sayıyı “1” eksilt ve bu yeni sayı “0” değilse başa dön.
Burada,”.....”lı kısım da, D kaydedicisi var. Başa dönme işlemi de LOOP 1 başlangıcıdır.

(BC) yazımının anlamı:

“BC” kaydedici çiftinin içeriğine göre işlem yapılacaktır. Endirek adresleme “BC” tarafından yapılmaktadır. Bu yönteme, KAYDEDİCİ ENDİREK ADRESLEME MODU (Register Indirect Addressing Mode) denmektedir.
Programın uzunca olması nedeniyle, “KISA YAZIM,” ve “MAKİNA KOD NO” yazılmamıştır.


Google Plus ile Paylaş

Kısaca: seymanblog

Panelde şablon düzenle deyip, bu satırı aratarak buraya kısaca hakkımda yazısı yazabilirsiniz.
    BLOGGER YORUMLARI
    FACEBOOK YORUMLARI

0 yorum:

Yorum Gönder