1 Şubat 1987 Tarihli Commodore Gazetesi Sayfa 47

1 Şubat 1987 tarihli Commodore Gazetesi Sayfa 47
Metin içeriği (otomatik olarak oluşturulmuştur)

iyi kavrayacağız. Bilhassa makine di- lindeki özel döngülerde çok kullanı- lan bu adresleme tipine örnek verecek olursak: LDA $25B8,X Burada ilk bakışta görünen absolut adresşlemenin indeksleme ile birlikte yapıldığı. Peki gerçekte ne oluyor?.. Gayet basit: Ana işlem ünitesi $25B8 adresini oluşturduktan sonra hemen bu adresin içeriğine saldırmıyor. Ön- ce bu adrese X-Register'inin içeriğini topluyor; yeni bir adres oluşturuyor. Bu adresin içeriğini akümülatör'e yüklüyor. Diyelim ki X-Register'inin içeriği $35. Şimdi ana işlem ünitesinin içinde şöyle bir aritmetik işlem yapı- lıyor: $25B8 4 $35 — $25ED Yani sonuç olarak akümülatör'e $25ED adresindeki yazmaçın içeriği yükleniyor. Programın bu bölgesi her defasında değişik bir X- değeriyle yü- rütülürse elde edilen adres farklı ola- cağı için her defasında farklı bir de- ğer yüklenecektir. Bu adresleme tipi bilhassa döngülerde ve veri tabloları- nın işlenmesinde kullanılır. Mesela bir şifreleme tablomuz ve bir şifre çözü- cü tablomuz olsun, bu ikisi sayesinde bu karışık işlemleri, indeksli adresle- meyi kullanarak basit işlemlerle yeri- ne getirebiliriz. Daha ilerde başka uy- gulama örnekleri de göreceğiz. BA- SIC'te bu işlemi yapan satır şöyle bir şey olacaktır: Az PEEK(%*SÖ 4 X) $25B8 Buradaki X, X-registerinin içeriği- ni; A'da akümülatör'ü simgelemekte- . İndeksleme işleminde X-registerinin yçrine Y-registerini de kullanabiliriz. Örneğin: LDA 25B8,4 Burada ise Y-registerinin içeriği ad- rese toplanır ve esas adres oluşturu- lur. Mesela; böylece birbirinden ba- NL A SKİ L n A ğımsız iki döngü değişkenimiz olur ve içiçe geçmiş döngüler kurabiliriz. Sıfırıncı sayfanın da kendine özgü indeksli adresleme tipi vardır. Bura- da sıfırıncı sayfa adreslemesinin avan- tajlarının yanında indeksleme işlemi- ni de kullanabilmemiz sağlanır. Bir örnek olarak: LDA $BA,X Bu da iki Byte'lik bir komut olacak- tır. Şimdi geliyoruz; değişik ve kullanış- l1 olduğu kadar anlaşılması zor olan bir adresleme tipine, indirekt indeks- lemeli adresleme. Bu adresleme sıfı- rıncı sayfanın özelleşmiş bir kullanı- mı olduğu için sıfırıncı sayfanın öne- mini daha iyi anlayacağız. Sıfırıncı sayfada peşpeşe gelen iki Byte'ın içe- riği bir adres oluşturuyor, daha son- ra bu adrese Y-register'i toplanıyor ve esas adres oluşturuluyor. Çok mu karışık?.. Peki, bir örnek- le görelim: İndirekt adresleme operand'ın pa- rantez içinde yazılmasıyla ayırt edilir. Bu adresleme tipi çok güçlü program yapılarının kurulmasını sağlar. Çün- kü iki Byte süren bir işlemle bütün ha- fıza elinizin altında. Bu adresleme ti- pi de döngülerde ve tabloların değer- lendirilmesinde kullanılır. Basit in- dekslemeden daha esnek ve güçlüdür. Çünkü yalnızca bir sayfayı (256 Byte'- lık bölge) değil tüm hafızayı işleyebi- liyorsunuz. Tabif bu işlemleri yapabil- mek için sıfırıncı sayfada iki Byte'lık bir göstergeç hazırlamak gerekiyor. Son olarak indekslemeli indirekt adreslemeyi göreceğiz. Bu tip yukarı- da anlattığımızın tersine Y-registeri ile değil X-registeri ile yapılıyor. Genel- de kullanımı ötekine göre daha az olan bu adresleme tipinde de sıfırıncı sayfada bir göstergeç bulunuyor. Bu göstergeç esas adresi içeriyor. İndeks- leme işlemi ise sıfırıncı sayfa içinde bu göstergecin yerini bulmak için yapılı- yor. Daha anlaşılır olması için gene bir örnek üzerinde çalışalım: LDA ($70),Y Diyelim ki, $0070'in içeriği $20; $0071'in içeriği $C8 olsun. Bu ikisi birlikte $C820 adresini oluştururlar. Hemen arkadan Y-registerinin indeks- leme işlemi geliyor. Diyelim ki Y-re- gisterinin içeriği de $B3. Böylece bu değeri de adresimize toplayarak $C8D3 adresini elde ederiz. Bu adre- sin içeriği (diyelim ki $C8D3'ün içe- riği $4F olsun); akümülatör'e yükle- nir. Şematik olarak inceleyecek olur- sak: LDA ($70),Y ($70) — $20 ($71)- — $C8 $C820 V)- $B3 D ($C8D3)— $4F LDA (70,X) O0)- 508 (578) — — $40 ($79) — — $20 2040 ($2040) — SA9 Bu değer de akümülatör'e yüklenir. BASIC'te bu satırı şöyle yazarız: A - PEEK(PEEK(1124 X) 4 256“PEEK(1124 K4 1)) ST0 $704 1e$T7I Bu değer de akümülatör'e yüklenir. BASIC'te bu işlemi şöyle yaptırırız: A — PEEK(PEEK 4112)4 256*PEEK(113)4 1) $70 $71 Demek ki burada önce X- değeri oöperand'a toplanıyor ve göstergecin adresi elde ediliyor. Bu göstergecin içeriği alınarak esas adres elde edili- yor ve bu adresten akümülatör'e yük- leme işlemi yapılıyor. Bu adresleme ti- pi pek ender kullanılır ve pek kulla- nışlı olacağı da şüphelidir. Bu yüzden başlangıçta bu adresleme tipine pek önem vermeyeceğiz. Şimdiye kadar gördüğümüz komut- ları ve adresleme tiplerini toplu ola- rak görelim: A7

Bu sayıdan diğer sayfalar: