Plazma sayı 4, sayfa 61

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 61

vermeniz yeterlidir. Aynı şekilde “j start” da diyebilirsiniz, bu şekilde kodunuzun belirli bir yerinden itibaren çalıştırmaya başlayabilirsiniz.

Eğer derleme işlemi sırasında hatalar görüyorsanız, konsol ekranında (editör dışında) sağ tuş ile Assembler/Preferences/Assembler menü seçeneğini seçerek derleyici ayarlarına ulaşabilirsiniz. Burada “UCase - LCase” ve “Label :” seçeneklerini seçin. Bunlar sırasıyla büyük/küçük harf farkını kapatır ve etiketlerden sonra “:” konma zorunluluğu getirir.

Eğer hata almaya devam ediyorsanız yazdığınız kodda hata vardır. İyice gözden geçirip tekrar deneyin.

J komutu ile programınızı çalıştırdığınızda aşağıdakine benzer satırlar göreceksiniz;

DO; A0: SSP:

00000285 00000000 00000000 00000000 11390FC1I 00000000 00000000 00000000 110BCBF4 USP:

Bu gördükleriniz 68000'in register'larıdır. D0 register'ının değeri 'plazma'nın harflerinin hafızadaki değerlerinin toplamı olan $285 olarak görülmekte. Bu şekilde programımız bittiğinde register'ları hangi durumda bıraktığını görebilirsiniz.

Ayrıca aşağıdaki komutlarla 'checksum' adresindeki değeri de görebilirsiniz,

>h checksum

Bu komut ile hafızanın dump'ını alırken, aşağıdaki komutla hafızanın disassemble edilmiş halini görebilirsiniz. Yön tuşlarıyla hafızanın başka bölgelerini de görebilirsiniz.

>d checksum

Benzer şekilde a ve d komutlarını arka arkaya verdiğinizde programınızın derlenmiş halini görebilirsiniz.

Programımızda kullandığımız 68000 komutlarının anlamlarını öğrenmeye başlamadan önce 68000 işlemcinin register'larına kısaca bir göz atalım.

68000 Register'ları

68000 işlemci 16/32 bitlik bir işlemcidir, 32 bitlik veriler üzerinde çalışabilir ancak veri yolu 16 bit, adres yolu 24 bitliktir.

68000 işlemcilerde 8 adet data register'ı, 8 adet adres register'ı, durum register'ı (SR, status register), 2 adet yığın göstergeci (USP ve SSP) ve program göstergeci vardır.

Register'larla .b, .w, .l gibi sonekler (suffix) kullanarak sırasıyla byte (8 bit), word (16 bit) ve longword (32 bit) işlem yapabilirsiniz. Buna ileride tekrar değineceğiz.

Şekil 2.

Data register'ları D0-D7 olarak yazılır. Aritmetik işlemler ve diğer depolama gereksinimleri için kullanılabilirler. Bu register'lar üzerinde bayt (8 bit), word (16 bit) veya longword (32 bit) olarak işlem yapılabilir.

Adres register'ları A0-A7 şeklindedir. Belirli hafıza adreslerini tutarlar ve o adreslerle ilgili okuma/yazma işlemlerini gerçekleştirmede kullanılırlar (pointers). Data register'ları gibi 32 bitlik register'lardır. Ancak bu register'lar üzerinde sadece word ve longword işlem uygulanabilir. (Örneğin ADD.W #1,A0 kullanılabilir, ancak ADD.B #1,A0 kullanamazsınız.)

Bu noktada ufak bir ek bilgi verelim, data register'larının tümünü dilediğiniz gibi kullanabilirsiniz, ancak adres register'larının sonuncusu olan A7 aynı zamanda yığın göstergecidir (SP, stack pointer). Bu nedenle bu register'ı diğerleri gibi kullanmayın!

Durum register'ı (SR, status register) 2 bayt'tır ve aşağıdaki bilgileri içerir;

1. 0: Aritmetik ve kaydırma komutlarından etkilenir 2. 1: V, Overflow: Taşma olduğunda set edilir 3. 2: Z, Zero: Son işlemin sonucu sıfır ise set olur 4. 3: N, Negative: Son işlemin sonucu negatif ise set olur 5. 4: C, Carry: Aritmetik işlemlerden etkilenir 6. 5-7: Kullanılmıyor 7. 8: I0: Interrupt bitleri 8. 9: I1: Interrupt bitleri 9. 10: I2: Interrupt bitleri 10. 11: Kullanılmıyor 11. 12: Kullanılmıyor

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