Commodore sayı 45, sayfa 21

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 21

Program Yavaşlatma SFF-X-Reg | LDX FF | FE DEY â BNE 1504 Negatif DEX BNE 1502 Negatif en

Resim 2'de son öğrendiğimiz komutlarla ilgili bazı gerekli bilgiler yer almaktadır. Burada yine komutlar için harcanan süre çevrim sayısı (cycle) birim alınarak verilmiştir. Bu değerlerden faydalanarak yazdığınız programdaki bekleme sürelerini isteğiniz doğrultusunda belirleyebilirsiniz. Bu bekleme sürelerinde bilgisayarımız programın işleyişini yavaşlatmaktan başka bir iş yapmaz fakat bu oldukça önemli bir unsurdur. Örneğin bir kelime işlem programı düşünün. Eğer bu programda tüm metinler bir anda ekrana gelip giderse hiçbir işe yaramaz. Dolayısıyla benzeri durumlarda makine dilinin işleyişini yavaşlatmak son derece önemlidir. Yalnız geciktirme programlarının oldukça çeşidi vardır. Bunlara yine daha sonra zamanı geldiğinde değineceğiz.

Carry ve Overflow:

Şu ana dek bilgisayarımızın tam sayıları nasıl sakladığını öğrendik ve buna bağlı olarak da aritmetik işlemlerinde kullanılan 9 yeni komut ile tanıştık. İsterseniz kısa bir hatırlatma yapalım: Tam sayılar C-64 tarafından ikinci dereceden karşılıkları ile algılanmaktadır. 8-Bit bir sayının 7. Bit'i o sayının önündeki işareti belirtmektedir. Eğer bu Bit “0” ise bu sayı her zaman kullandığımız normal bir ikilik sayıdır. Diğer durumda ise, yani 7. Bit “1” ise elimizde negatif bir sayının ikinci dereceden karşılığı var demektir. 16 Bit'lik (2 Bayt) sayılar kullanırken ise 15. Bit işaret göstergesi olarak kullanılır. Bu sayılarla işlem yaptığımız bazen yanlış sonuç çıktığını daha önce belirtmiştik. Bu sorunu çözerken statü registerindeki iki bayrağı (göstergeyi) daha kullanacağız: Carry ve V-bayrağı. “To Carry” dilimizde “taşımak” anlamına gelmektedir. Register göstergesinde bu bayrak kısaca “C” ile gösterilir. Şimdi, her şey iyi de burada taşınan nedir, diye sorabilirsiniz. Bu soruyu en iyisi bir örnek ile cevaplayalım. Örneğimizde normal ikilik sayılarla (İşaret Bit'ine bakmadan) işlem yapacağız. 128 ile 130'u toplayalım:

128 1000 0000 +130 1000 0010

258 (1)0000 0010

Sonuç olarak elde ettiğimiz 258 tastamam doğrudur fakat 8 Bit'e sığmamaktadır. Burada artan Bit özel olarak bu iş için ayrılmış bir yere, yani Carry Bit'ine taşınmıştır. Eğer C-64'de aritmetik işlemlerinde bu tür bir artan olursa Carry Bit'i olur. (Resim 3) Bazı durumlarda bu Carry Bit'ini göz ardı edebiliriz, fakat genellikle sonraki işlemlerde bu Bit'in kullanılması gerekir. Yine burada da bazı özel durumlar için hata söz konusudur. Bilgisayarımız “1” değerini aldığında hemen işe negatif sayıları karıştırmakta ve yanlış sonuçlara ulaşmaktadır. Bunu aşağıdaki örneği incelerseniz daha iyi anlayabilirsiniz:

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