Commodore sayı 47, sayfa 44

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 44

BNE komutunu ilk defa kullandığımızda örneğin BNE 1200'ün tahmin edildiği gibi 3 Bayt'lık bir komut olmadığını belirtmiş ve hafızada sadece iki bayt işgal ettiğini söylemiştik. Şimdi yeni bir adresleme yöntemi olan relatif adreslemeyi öğrenirken aynı zamanda Branch komutlarının neden 3 yerine 2 bayt kapladıklarını göreceğiz. Örneğin BNE 1200 yazdığımızda kullanmakta olduğumuz monitör programı $1200 mutlak adresine karşılık gelen relatif adresi hesaplamaktadır. Son adresleme yönteminde bilgisayar dallanmanın kaç bayt ileri veya geriye yapılacağına bakmaktadır. Karşımıza iki soru çıkmaktadır: 1. Bilgisayar hangi adrese göre relatif olarak dallanmaktadır? 2. $1200 gibi mutlak bir adres girdiğimizde bilgisayar kaç bayt ileri veya geri dallanacağını nasıl saptamaktadır? Bu soruların cevaplarını aşağıdaki kısa programda bulacağız.

2000 AD0030 LDA $3000 2003 FO 05 BEO $200A 2005 A9 00 LDA # $00 2007 — 8D 00 30 STA $3000 2004 60 RTS Programımız $3000 baytının içer-

diği değeri akümülatöre yüklemekte, eğer sonuç sıfır ise Basic'e geri dönmektedir (RTS). Eğer $3000 sıfıra eşit değilse bu adres sıfır yapılmaktadır. Bu program ilk bakışta pek anlamlı gözükmese de $3000 bir Flag (bayrak) olarak kullanılırsa oldukça yararlı olur. 6510 makina dilinde bilgisayar hangi satırı işleyeceğini program sayacından (Program Counter) öğrenmektedir. Yukarıdaki programımızda sıra BEQ'ya gelince sayaç otomatik olarak bir adım fazla atarak bir sonraki satırı yani $2005'i göstermektedir. Bu şekilde birinci sorumuzun da cevabını almış oluyoruz. Branch komutlarında dallanmanın gerçekleşeceği uzaklık (genellikle Offset olarak adlandırılır) program sayacına eklenir. İkinci sorunun cevabı için ise yukarıdaki programı bu sefer bayt bayt inceleyelim:

Değer:

AD

838388

ANIL GÜL

Anlamı:

LDA $3000'ın Alçak Baytı $3000'in Yüksek Baytı BEQ Offset LDA $

STA

$3000'in Alçak Baytı $3000'in Yüksek Baytı

Klavyeyle gezinmek için ← ve → tuşları.