Commodore sayı 44, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

(4)— 0000 0100 (Normal ikilik karşılığı) (—12)— 1111 0100 (Birinci dereceden karşılık) 0000 0001

1111 0100 (İkinci dereceden karşılık)

Şimdi isterseniz bu yöntemle bir toplama işlemi yapalım:

(4—6)— 0000 0100 1111 1010 (Bu (4—6)'nın (1) 0000 0001 ikinci dereceden karşılığı yani (—2)'dir) Baş tarafta yer alan 9 Bit'in bir bayta sığmayacağını düşünürsek doğru sonuca ulaştığımızı görürüz. Bu tür işlemlerde eğer negatif bir sonuç ortaya çıkarsa bunun gerçek değerini hesaplamak kolay değildir. Böyle durumlarda ortaya çıkan sayının tekrar ikincil karşılığı hesaplanır ve işareti değiştirilir. (4—15) 0000 0100 1111 0001 (—11) 1111 0101 Yukarıda çıkan sonuç (—11)'in ikinci dereceden karşılığıdır. Kontrol için ikinci dereceden karşılığını hesaplayıp, işaretini ters çevirelim.

Birinci karşılığı

0000 0000 + 1 0000 0001 sonuç 0000 0001

Çıkan sonucun (—1) işaretini değiştirirsek aradığımız (—1) sayısına ulaşırız. İşte bilgisayarımız yukarıda anlattığımız sistemle negatif sayıları hesaplamaktadır, yalnız burada eksik kalan bazı noktalar var. Bunun için yazıp kullandığınız monitör programından çıkıp aşağıdaki Basic satırlarına girin.

10 AX——İ2 28 END

Değişkenler Bellekte Nasıl Duruyor?

Yazdığımız programı daha “RUN” ile çalıştırmayın, şimdi tekrar monitör programına girip biraz önceki Basic satırlarını inceleyelim. Yalnız monitör programını işletmek için “RUN” komutunu kullanamayız, çünkü bu komutu kullandığımızda hafızadaki Basic programımız işleyecektir. Bu nedenle monitör programının başlangıç adresini bilip, o adres için “SYS” komutunu kullanmalıyız. C-64'ün Basic belleği normal durumlarda $0800'dan başlamaktadır. Monitör programındayken M 0800 yazalım. Bizi burada $081C'ye kadar olan baytlar ilgilendirmektedir. Resim de belleğin bu bölümü kısaca yorumlanmıştır. Basic programımız $0813'de son bulur. Bunu arka arkaya gelen iki boş bayt'tan anlıyoruz. Bu adreslerin arkasında programda kullanılan değişkenlerin değerleri yer alır. Yalnız bir daha programımızı “RUN” ile çalıştırmadığımız için bu baytlar “0” değerindedir. “X” ile monitörden çıkıp programı çalıştırırsak $081C'ye kadar olan baytlar değişmeyecek, fakat daha sonraki 7 bayt Resim 2'deki konuma gelecektir. Önce $0814 ve $0815'i ele alalım.

Bu baytlar değişkenin adını ve tipini belirtir. Bilgisayar, burada iki baytın da 7. Bit'i “1” olduğu için tam sayılar kullanılacağını anlar. Kullanılan değişkenin cinsini belirten 7. biti unutursak, $0814'de A harfinin kodu ve $0815'de sadece “0” değeri yer alır. Bildiğiniz gibi C-64 Basic'inde de değişkenler en fazla iki harften oluşabilmektedir. Geri kalan $0816 - $0817 arası baytlar ise tam sayı değişkenlerinde kullanılmaz. $0816'da ikilik sistem karşılığı 1111 0100 olan $F4 yer almaktadır. Bu değer (—12)'nin ikinci dereceden karşılığıdır. Peki $0817'deki $FF ne anlama gelmektedir? Daha önce söylediğimiz gibi tam sayılar hafızada 2 baytta saklanmaktadır. (—12)'nin 16 Bit ile gösterimi şu şekildedir:

Birinci dereceden karşılık

HA 0000 0000 06000 1100 0000 0000 0001 TELİ 0100 —(—12) yüksek bayt alçak bayt —$F4

2 bayt ile gösterilebilen en büyük pozitif sayı (+32767) ve en küçük negatif sayı (—32768)'dir. Şimdilik bu sayı oyunlarına son verebiliriz. Eğer yukarıda anlatılan sistemle biraz işlem yaparsanız birçok sefer doğru sonuç çıkmasına rağmen bazen de yanlış değerlerle karşılaşırsınız. Daha önce yeteri kadar açıklık kazandırmadığımız bir soruyu, şimdi rahatlıkla cevaplayabiliriz: Kullandığımız registerin 7. Bit'i eğer “1” değerini almışsa, statü registerindeki negatif göstergesi kesinlikle “1” olur. Bu aylık da bu kadar! Gelecek ay kaldığımız yerden devam etmek üzere...

Adres : — O8tA 0815 0816 0817 0817 - OBTA Bayı 1 2 4 5-7 cı 80 FF F4 00 00 00 Değer : 1100 0001 11111111 1111 0100 7 Bitler tamsayı değişkenini | Yüksek — Alçak bayt Boş belirtir. 6100 0001 165 Anın kodu Değişken adı ve tipi Değişken değeri Kullanılmamış

Basic programlardaki değişkenler C-64 tarafından böyle düzenlenir.

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