Plazma sayı 5, sayfa 62

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 62

Amiga Kursumuzun 2. bölümüne hoş geldiniz. Önceki sayımızda sizin de fark etmiş olacağınız gibi, bu yazı programcı olmayanlara değil, daha çok, programcılığı (Assembly, C veya en az bir programlama dilini) biliyor olup Amiga'da 68000 Assembly ile program yazmak isteyenlere yönelik. Ancak bu, programlamaya yeni başlayanları korkutmasın, bu şekilde öğrenmek zor olduğu kadar zevklidir de.

Önceki sayımızda 68000 komutlarını, veri transfer komutlarını ve Amiga'nın hafıza yapısı konularını incelemiş, basit bir kodu nasıl derleyeceğimizi öğrenmiştik. Bu sayımızda 68000 komutlarını öğrenmeye devam edecek, donanım register'larını kısaca tanıyacağız, ardından çeşitli örnek kodları inceleyeceğiz, son olarak biraz daha görsel sonuçlar görebileceğimiz, ilginizi çekeceğini umduğum bir örnek kod ile devam edeceğiz. Bunu yaparken henüz öğrenmediğimiz bazı konulara girmek zorunda kalacağız, ancak ileriki sayılarda bu konuların tümüne sırasıyla değineceğiz.

Öncelikle örnekleri kolaylıkla test edebilmeniz için hazırladığım asmpro.adf isimli dosyayı; eğer gerçek bir Amiga kullanıyorsanız boş bir diskete yazın (bunu yapan programları İnternet'ten bulabilirsiniz), eğer WinUAE Amiga emülatörü kullanıyorsanız ayarlarınızı aşağıdaki gibi yapın, df0'a asmpro.adf dosyasını gösterin, ayarlarınızı kaydedin ve emülatörü başlatın. Sistem bu disketten boot ederek açılacak ve karşınıza AsmPro çıkacaktır.

WinUAE ayarlarınızda 68020 işlemci, AGA chipset (en azından ECS), 3.1 veya 2.0 kickstart rom dosyası ve 4 MB fastram seçin.

Kodlarınızı rahatça yükleyip kaydetmek için bir harddisk oluşturmanızı tavsiye ederim. Hatta asmpro.adf disketindeki dosyaları harddiskinize kopyalayıp oradan da çalışabilirsiniz.

AsmPro ilk açıldığında gelen ekranda kullanacağınız ram tipi ve miktarını seçebilirsiniz. Şimdilik 100 KB CHIP RAM seçebilirsiniz.

68000 BCC Komutları (Dallanma Komutları)

68000 işlemcilerde genel olarak CC (Conditional Code) komutları adı verilen bir grup komut vardır. Bunlar çoğunlukla program içinde dallanmaya yarayan BCC komutlarıdır:

BCC Komutları (Koşullu Dallanma Komutları):

BCC komutlarının genel kullanım şekli aşağıdaki gibidir:

<label> Becc.W <label>

Burada komutu takip eden .S ve .W sonekleri (suffix) dallanmanın mesafesine göre belirlenir; .S kısa mesafe (short range: -128, +127 byte), .W ise uzun mesafe (word range: -32768, +32767 byte) dallanma anlamındadır.

Normalde belirtmediğiniz takdirde derleyiciniz en uygun olanı seçecektir.

BCC Komutları listesi aşağıdadır:

BCS BLS BEQ BNE BHI BCC

Carry Bit Set Lower or Same Equal (Z-bit Set) Not Equal (Z-bit Clear) Higher than Carry Bit Clear

BPL BMI BVC BVS BRA

PLus (N-bit Clear) Minus (N-bit Set) V-bit Clear (No Overflow) V-bit Set (Overflow) BRanch Always

BLT BLE BGT BGE

Less Than Less than or Equal Greater Than Greater than or Equal

İngilizce açıklamalarından komutların işlevlerini kolayca çıkarabilirsiniz. Burada dallanma komutlarına genel bir isim olarak kullanılan Bcc ile dallanma komutlarından biri olan BCC arasındaki benzerlik aklınızı karıştırmasın.

Bu listedeki tüm komutlar, .S ve .W eki ile kullanılabilir, .S hafızada daha az yer kapladığından ve daha hızlı olduğundan mümkün olan her durumda tercih edilir.

NOT: 68000 işlemcilerin üst modellerinde (68020/40) .L eki ile 32 bitlik mesafelerde dallanma yapılabilir. Ancak 68000 işlemcide .L ekli BCC komutları desteklenmemektedir.

waitelieck: btst #6,$bfe00l1l bne.s waitclick vts

Ayrıca DBcc (Decrement and branch conditionally) komutlarını da bu listeye eklemeliyiz. DBcc komutları (DBeq, DBne, DBpl vb.) verilen data register'ını bir azaltır ve koşul SAĞLANMADIĞI sürece veya verilen data register'ı sıfırın altına düşmediği sürece dallanma işlemini gerçekleştirir.

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