Commodore sayı 77, sayfa 18

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 18

Her şey yorumcunun anlayabileceği şekilde saklandığı için, BASIC programlar bellekte çok fazla yer kaplarlar. Basit bir BASIC programı bile hemen 1000 bayta çıkabilirken, aynı yere yazılabilecek makine dili programı çok daha fazla iş yapabilir. Makine dilini size sevdirmek için öncelikle bu dilin avantajlarını saydım. Ama madalyonun bir de öteki yüzü var (hiçbir şey bedava değildir). BASIC'in değişken bolluğuna alıştıktan sonra, sadece üç tane değişkene sahip olan makine diliyle çalışmak zor gelebilir size. Özellikle bu değişkenlerin her biri sadece 0-255 arası değerler alabiliyorsa... Tabii ki bu üç değişken sadece görünür değişkenlerdir. Belleği değişkenler yığını olarak kullanmaya alıştığınızda, BASIC'ten bile daha fazla değişkeniniz olduğunu anlayacaksınız.

BASIC programlarının en iyi yanı, neredeyse İngilizce diyebileceğimiz bir dille yazılmış olması, dolayısıyla çok kolay anlaşılabilir olmasıdır. Makine dilindeki tüm komutlar üç harfle kodlanmış olduğu için hem öğrenirken, hem de eski programlarınızı incelerken oldukça zorlanırsınız. Bir de BASIC'de yaptığınız gibi notlar düşme gibi imkanınız da olmadığı için programın neresinde ne iş yaptığınızı kısa süre içinde unutursunuz. Komutlarınızın anlaşılır olmasını sağlamasa da, yanlarına not düşmenizi sağlayacak programlar (neyse ki) mevcut. Assembler adı verilen bu programların asıl amacı tabii ki komut yanına not düşmek değil. Monitör programıyla bir makine dili rutin yazdığınızda, aradan bir komut çıkartmak ve araya bir komut eklemek çok zordur. Assembler kullandığınız zaman ise bu konuda BASIC kullanıyormuşcasına rahat olursunuz. Assembler kullanmanızı teşvik etmek için, monitör programından önce (daha önceleri de yayınlamış olduğumuz) SUPER ASSEMBLER programını yayınlayacağız.

250 |16

240

250—-SFA

Tablo : 3

Her ne kadar itici görünse de, makine dilini kullanmaya bir kez başladıktan sonra bırakması zordur. Altı aylık bir makine dili programcılığından sonra BASIC'in ne kadar sıkıcı bir dil olduğunu siz de kabul edeceksiniz. Artık BASIC'le makine dili arasındaki farkların çoğunu bildiğimize göre makine dilini öğrenmek için ilk adımlarımızı atmaya başlayabiliriz:

Bilgisayarınızın Sayı Sistemi

Aslında bilgisayarların sayı sistemi diye bir şey yoktur. Gerekli programı yazdıktan sonra her sayı sisteminde işlem yaptırabilirsiniz bilgisayarınıza. Ama, bilgisayarınız tamamen digital devrelerden oluşmuş olduğu için, her şeyin sahibi olan 6502'niz sadece yan yana gelmiş olan 0 ve 1'lerden daha iyi anlar. Belki de sırf bu yüzden “Bilgisayarlar ikilik düzenden başka sayı düzeninden anlamaz!” kanısı çok yaygındır. Bilgisayarınızın hangi dilden anladığını tartışmadan önce, sayı düzenleri, bitler ve baytlar hakkında bir miktar genel bilgi vermek istiyorum:

Sayı Sistemleri

Sayılardan bahsedildiği zaman, matematik dersinde sayı sistemleri konusunu görmemiş olan herkes, günlük hayatta kullandığımız onluk düzenden bahsedildiğini sanır. Onluk sayı sisteminde sayılar (hepimizin bildiği gibi) 0'dan başlar ve 9'a kadar çıkar. 9'dan bir sonra gelen sayı da 1 ve 0'ın yan yana gelmesinden oluşur. Yani ilk basamak gene en başa döner ve bunun bir yanındaki basamağın değeri bir artar. Tabii ki yıllardır aynı sistemi kullanmaya alıştığımız için, tüm işlemlerin sadece bu şekilde yapılabileceği gibi bazı fikirler olmuştur kafamızda. Oysa, bir söylentiye göre, kullandığımız sayı sisteminin her basamağında sadece on adet işaret olmasının tek sebebi on tane parmağımızın olmasıymış. Yani insanlar sekiz parmaklı olsaydı, sayılar şu şekilde sıralanacaktı belki de: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11 vb. İlk

O'ya baktığınız zaman garip görünüyor değil mi?

Oysa sayı sistemlerinin temelinde bu mantık yatar. Sayılar (tabii ki pozitif tam sayılar demem gerekliydi) sıfırdan yani 0'dan başlar ve sayı sisteminin bir eksik rakamına kadar tek basamaklı olarak gider (8'lik sistem için 7). Bundan bir sonra gelen sayıyı göstermek için de ilk basamak sıfırlanır (0) ve ikinci basamak bir artırılır. Alfabemizi 29'luk bir sayı sistemi olarak düşünebiliriz mesela: Sayılar A ile başlar, 29 sayı tek basamaklı gösterilebilir (A, B, .., Z). Daha sonra gelen 30. sayı ise iki basamaklı olarak gösterilir: BA. Yani ilk basamak sıfırlanır (ya da A'lanır) ve ikinci basamak bir artırılır. Alfabetik sistem diye bir şey olsaydı, bu sistemdeki CA sayısı bizim sistemimizde 60'a denk düşecekti. Bu sayıların onluk düzendeki karşılıklarını bulmak çok kolaydır. İsterseniz örneklerimizi alfabetik sistemden değil de 8'lik sistemden verelim. Dikkat ettiyseniz, onluk sistemdeki sayılan her sekiz sayıda bir ikinci basamak bir artırılıyor. Bu demektir ki bu basamaktaki sayıyı sekizle çarpıp, birinci basamaktaki sayıyı buna eklersek, bir basamaklı tüm sayıların onluk sistemdeki karşılıklarını bulabiliriz. Yani sekizlik sistemden onluk sisteme çevirme formülü şöyle olacaktır:

ONLUK - Bi 48xB2

Buradaki B1'in sekizlik sistemdeki birinci basamak, B2'nin de ikinci basamak olduğunu hepiniz fark ettiniz sanırım. Ama formül sadece iki basamaklı sayılar için geçerli. İki basamaklı en büyük sekizlik sayı 77 olduğu için, formülümüz sadece 0 ile 63 arasındaki ondalık sayılar için geçerli olacaktır. Peki 77'den sonra gelen sayı sekizlik olarak ne olacaktır? 100 değil mi? Demek ki onluk sistemdeki 64'ün karşılığı sekizlik sistemdeki 100 oluyor. Bu durumda formülümüzü üç basamaklı sayılar için değiştirebileceğiz. Acaba 64 ile 8'in bir ilişkisi var mı? Evet, “Karesi! Karesi!” diye bağırdığınızı duyuyorum. Doğru. Bu durumda formülümüzü en genel haline getirmek çocuk oyuncağı olacak:

ONLUK-BI148xB248x8xB348x8 X8xB34...

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