C64 Türkiye sayı 2, sayfa 11

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 11

Mutlak X İndeksli Adresleme : Bu modda belli bir taban adresine X registeri eklenerek bulunan yeni adresle işlem yapılır. Mesela taban adres $2000 olsun X registerinde ise $30 (desimal 48) bulunsun, işlem yaparken $2000 + $30 = $2030 adresi kullanılır. Örnek : LDA $3A00,X SBC $BACA,X DEC $EBEE,X Bu adresleme modundaki komutlar 3 bayt uzunluğundadır.

Mutlak Y İndeksli Adresleme : Yukarıdaki modun Y registerini kullanan şekli olarak tanımlayabiliriz. Mutlak X indeksli ve mutlak Y indeksli adresleme modlarını özellikle hafızada büyük veri transferleri sırasında ve döngü içinde adreslere sabit değer yüklerken kullanabilirsiniz.

Sıfırıncı Sayfa X İndeksli Adresleme : Bu mod Sıfırıncı Sayfa Adresleme moduna X registeri eklenerek kullanılır. Mutlak X indeksli adresleme modunun kısaltılmışı olarak düşünebilirsiniz.

Dolaylı İndeksli Adresleme : İşte geldik kullanımı biraz karışık olan bir adresleme moduna... Aslında çalışma mantığını bilirseniz çok rahat kullanırsınız. Bu mod sıfırıncı sayfada 2 ardışık (arka arkaya) adresle ve sadece Y registeriyle kullanılır. Bu moddaki komutların yazılışı KOMUT ($adres),Y şeklindedir.

Çalışma şekli şöyledir : İşlem yapacağınız bir taban adresini LOW BAYT-HIGH BAYT formatında (bkz: assembler-1) Sıfırıncı Sayfada arka arkaya gelen 2 adrese yerleştirin. Y registerine ise bir değer verin. Komut bu iki adreste bulunan değerlerin gösterdiği adrese Y'nin değerinin eklenmesiyle bulunan yeni adresi kullanarak işlem yapar. Komutunuz mesela LDA ($02),Y olsun. Daha önceden ise $C5A3 sayısını $A3 ve $C5 olarak $02 ve $03 adreslerine yükleyelim. Y registerinde de $12 (desimal 18) bulunsun. Bu durumda bizim komutumuz $02 ve $03 adreslerindeki değerlerin gösterdiği $C5A3 sayısına Y'deki $12 değerini ekleyerek bulunan $C5B5 adresindeki değeri aküye yükler. Yani aslında verdiğim örnek LDA $C5A3,Y komutunun değişik bir şeklidir. Aradaki tek fark LDA ($02),Y komutunun 2 bayt LDA $C5A3,Y komutunun 3 bayt sürmesidir.

Bu arada Dolaylı İndeksli komutları kullanırken Sıfırıncı Sayfada rastgele iki adresi kullanamazsınız. Çünkü işletim sistemi bu bölgeyi kendisi için kullanır ve bize kalan sadece $FB, $FC, $FD ve $FE adresleridir. Ben yazdığım programlarda $02 ve $03 adreslerini de kullanırım.

İndeksli Dolaylı Adresleme : En sona kalan bu mod ne yazık ki kullanımı oldukça dikkat isteyen ve benim şu ana kadar hiç kullanmadığım bir adresleme modudur. Üstteki mod sadece Y registeriyle kullanıldığı gibi bu modda sadece X registeriyle kullanılır.

Çalışma şeklini şöyle açıklayalım : Sıfırıncı Sayfada bir bayt olarak belirtilen adresten X ötedeki adreste ve onu izleyen adreste bulunan değerlerin gösterdiği adres işlem yapılacak yeni adrestir.

Örnek : Taban adresimiz $20 olsun. X registerinde $50, $70 nolu adreste $A5, $71 nolu adreste ise $85 olduğunu kabul edelim. Komutumuz ise LDA ($20,X) olsun. Bu durumda taban adres olan $20 sayısına X'in değeri olan $50 eklenir. Sonuç $70'tir. Daha sonra $70 (LOW BAYT) ve $71 (HIGH BAYT) nolu adreslerdeki değerlerin oluşturduğu sayı olan $85A5 nolu adresteki sayı Aküye yüklenir.

ŞARTLI DALLANMALAR Önce şartlı dallanmanın ne demek olduğunu açıklayalım. Program içinde yapılan bir aritmetiksel, mantıksal, arttırma, azaltma, karşılaştırma veya yükleme işleminde sonuca göre başka bir adrese dallanıp yani sıçrayıp programın akışını değiştirebilirsiniz. Daha genel bir ifadeyle programda o anda işlenmekte olan komut sonucunda eğer N, Z, C ve V flaglarından değişenler olursa, bu değişimlere göre program içinde sıçrama yapabilirsiniz. Şunu unutmayın: Flaglara göre yapılan sıçramalarda gideceğiniz yer çok uzakta olmamalıdır. Yazdığınız programlarda eğer uzak bir mesafeye sıçramaya çalışırsanız kullandığınız editör programı hata verecek ve hatanın hangi satır(lar)da olduğunu yazacaktır. Şartlı dallanmalarda, dallanma en fazla 127 bayt ileriye veya en fazla 128 bayt geriye olabilir. ALT PROGRAMLAR Alt program nedir? Önce tanımını yapalım. Bir program içinde farklı yerlerden çağrılan ve sadece belli işleri yapan ufak programcıklara alt program denir. Bir program yazmaya başladınız ve bazı yerlerde aynı işlemi yapan bölümler oluşmaya başladı. Bu durumda aynı işlemi yapan bölümü ayrı bir program olarak yazarsınız. Ana program içinde gerekli yerlerde JSR komutunu kullanarak alt programa sıçrarsınız, gerekli işlemler yapıldıktan sonra alt programın sonundaki RTS komutuyla ana programdaki alt programı çağıran komuttan bir sonraki komut işleme konulur ve ana program kaldığı yerden devam eder. Alt programları öyle yazmalısınız ki yazacağınız programlarda hazır halde olsun. Mesela bir intro yapmak ve bu intro da renk şeritleri olmasını istiyorsunuz. Önce renk şeritleri rutinini yazarsınız ve ana programda ilgili raster satır değerini vererek renk şeritleri rutinini çağırırsınız. Commodore 64'ün ROM'larında işinize yarayan birçok alt program mevcuttur. (İsterseniz alt rutin diyebilirsiniz. Bundan sonra hep alt rutin kelimelerini kullanacağız.) İşte birkaç hazır alt rutin adresi......

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