DİZİNLİ (SIRALI) ADRESLEME (INDEXED ADRESSING)

 
 İngilizce “Index” kelimesinin Türkçe sözlükteki karşılığı “Dizin”dir. Fakat bu terim günlük konuşmada fazla kullanılmamaktadır. Bu nedenle “Indexed”ın karşılığı olarak “Sıralı” kullanılacaktır.
     Sıralı adresleme, programcıya, çoklu veri tablosu veya diziye (array)
ulaşma kolaylığı sağlamaktadır.
     Dizilerin ard arda gelen elemanları arasında bir takım işlemlerin yürütülmesi sıralı adresleme metoduyla daha basit hale gelmektedir.
     Sıralı Adresleme yöntemi, endirek adresleme benzemektedir. Farkı, orada tek bir dizinin elemanlarıyla ilgilendiği halde, burada birkaç dizi ile birden ilgilenmekte ve orada değişik kaydedicilerden yararlanırken, burada sıralı kaydedici (INDEX REGISTER) den yararlanmaktadır.

Sıralı Adresleme İşlemi

Endirek adreslemede olduğu gibi, içerisindeki dizi sayısı ile işlem yapılacak “adrese” ulaşabilmek için:
Programda belirtilen ve hem bellekte hem de sıralı kaydedicide  kayıtlı bulunan, “Dizinin ilk sayısının bulunduğu adres” işlem yapılacak sayının bulunduğu adresin sıra numarası eklenir.
     İşlem yapılacak sayının bulunduğu adrese etkin adres (EFFECTIVE ADRES-EA), dizisinin ilk sayısının bulunduğu adrese de taban adres (BASE ADRES-BA) denilmektedir.
Sıra numarasına da X diyelim.

Yukarıda açıklanan bağıntı kısaca şöyle yazılacaktır:

Etkin Adres (EA)= Taban Adres (BA)+(X)
X’ i çevreleyen parantez X’ in sıra numarası olduğunu belirtmektedir.
Bu bağıntıyı kısaca örnekleyelim: LD A, BA +(X)

Açıklaması:

     Akümülatörü, BA temel adresinden sonra gelen X’ inci sıradaki adreste bulunan sayı ile yükle.
     Bu program gereğince yapılan işlem Şekil 3.6’ da şematik olarak gösterilmiştir.
Şekilde; Taban adres (BA)= 100, Sıra No (X)= 10, yüklenecek sayı=16 olarak alınmıştır. Görüldüğü gibi, sıralı kaydediciye  kaydedilmiş olan taban adrese  (100)10 sıra numarası eklenerek etkin adres (110) bulunmuştur. Bu adresteki 16 sayısı da akümülatöre  yüklenmiştir.
     Bellekteki bir sayının, Akümülatöre yüklenmesi için bu kadar uzun işlem yapılması biraz zaman kaybına neden olmaktadır. O halde bu tür işlemin bir yararının bulunması gerekmektedir.

Sıralı Adresleme Yöntemin Faydaları

     Sıralı adresleme yönteminin yararını daha iyi belirleme bakımından, aynı işlemi hem direk adresleme yöntemi, hem de sıralı adresleme yöntemi ile yapalım:
     A ve B gibi iki dizi bulunsun. Dizilerin her biri N elemanlı olsun. Program bu iki dizinin toplanarak belleğe kaydını istesin.
     Bu işlemi yürütebilmek için, önce dizilerin belleğe kaydı gerekmektedir. Bu dizilerden A dizisi belleğe 10. adresten itibaren, B dizisi 50. adresten itibaren, Toplam değerleri de 90. adresten itibaren kaydedilsin.

Örnek olarak dizilerin ilk üç sayıları alınırsa bellekteki durum şöyle olacaktır:


Buradaki toplama işleminin direk adresleme  yöntemindeki programlanması şöyle olacaktır:
LDA 10
ADDA5O
STA 90
LDA 11
ADD A 51
STA 91

Bu işlem dizideki N eleman sayısı kadar tekrarlanacaktır.

     Programdaki “A” Akümülatör anlamındadır. Yukarıdaki yazılımların anlamı “Direk Adresleme” bölümünden bilinmektedir.
Adres sıra numaraları konulurken N<40 olduğu kabul edilmiştir. Görüldüğü gibi direk adresleme yönteminde uzun bir program gerekmektedir. Her program satırının işlenişi kısa sürmektedir. Fakat programın tamamı düşünüldüğünde uzun bir zaman olacaktır.
     Programı bu kere de sıralı adresleme yöntemine göre yazalım
1-Sıralı kaydediciye ilk sıra numarası olan sıfırı (X=0) yükle.
2-Dizi elemanları işlemini yürüt.
3-Sıralı kaydediciyi “1” artır.
4-Sıralı kaydediciyi dizi eleman sayısı “N” ile karşılaştır.
5-Eğer dizinin sonuna gelinmemişse 2. sıraya dön.

Yukarıdaki işlem sıralamasına göre hazırlanacak program da şöyle yazılacaktır:

Program Açıklama :

LD X #0 :Sıralı kaydediciyi dizinin ilk sırası olan “0” ile hemen (#)yükle.
LD A 10, X :Dizinin 10 numaralı adresteki elemanını Akümülatöre yükle.
ADD A 50, X :Dizinin 50. adresteki elemanını akümülatöre ekle.
ST A 09, X :Akümülatördeki sayıyı bellek gözüne depola.
LEAX 1, X :Sıralı kaydediciyi 1 artır.
MP X #N : Dizi eleman sayısı kadar say.BNE LOOP : Son dizi eleman,
 işlemi yapılmamışsa başa dön.

Ek açıklama:

A (Accumulator) : Akümülatör.
X :Bellekteki işlem gören verilerin bulunduğu adresin, “0”dan başlamak suretiyle, sırasını gösteren, sıralı kaydedici numarasıdır. Aynı zamanda sıralı kaydediciyi sembolize etmektedir. Yukarıdaki programda ilk işlem için X=0 değerini almıştır. X=0 iken işlem gören bellek gözlerinin adresleri: 10,50 ve 90’dır. Sıralı kaydedici “1” arttığında yani       X= 1 olduğunda 11, 51 ve 91’inci adreslerdeki veriler işlem görmektedir. Ve X=N oluncaya kadar işlem devam etmektedir.
LEA (Load Effective Adresse) : Yük etkin adresi. (Yukarıda açıklaması yapılmıştı).
MP (Memory Phase) : Bellek fazı. Bellekteki işlem süreci

Örnekler:

1)  Z80 Mikroişlemcisinde Sıralı Adresleme:

Z80’lerde 1X ve 1Y olmak üzere iki adet 16 bit’lik sıralı kaydedici (INDEX REGISTER) vardır.
Sıralı adres komutları 2 byte OP-CODE ve 1 byte’lık adresten oluşur.
Yukarıda,
Etkin adres (EA)= Taban adres (BA) + (X) olarak verilmişti.

Z80’lerde ise durum şöyledir:

EA= Sıralı kaydedicinin 16 bit’lik adresi + komutun 8 bit’lik adresi (düşük değerli bit olarak)
Eğer bir dizinin temel adresi olarak komutun 8 bit’lik adresi tahsis edilirse bu bir dezavantaj olur.
Zira, bir dizinin taban adresi sıralı adresleme yoluyla (indexed addressing) ancak
 28 = 256 bellek gözüne ulaşabilecektir.
Bu sakıncayı gidermek için, Z80 üreticileri daha değişik taban adresleme (BASED ADDRESSING) yöntemleri geliştirmişlerdir. Bunlar kullanma talimatları (INSTRUCTION BOOK) açıklanmıştır.
Burada yalnızca bir “sıralı adresleme” Modu verilecektir.


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