Commodore sayı 42, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

6502 oldukça yayılmış bir Processor'- dur ve C-64'ün mikro işlemcisi olan 6518'la hemen hemen aynıdır. Bu ikisi de 6502 Assembler ile programlanabilmektedirler. Bir Assembler kendi dilinde yazılmış komutları makina diline tercüme etmektedir. Bir de Assembler'in tam tersi olan, yani makina dili komutları çeviren Disassembler'lar vardır. C- 64'de makina dili bir program yazabilmek için Assembler ve Disassembler özelliği olan bir monitör programına ihtiyacımız olacaktır. Her ne kadar değişik özelliklere sahip birçok monitör programı mevcut ise de bunların kullanımı hemen hemen aynıdır. Yeri geldiğinde bu konuya daha detaylı değineceğiz.

Basic'e karşı Assembler:

Bu ikisi arasındaki farkı daha iyi görebilmek için aşağıdaki satırları yazın.

10 FOR TO 1024 STEP-İI 20 POKE I,1:POKE 1-4 54272,14 30 NEXT I

Bu programcık ekranın üst tarafındaki bölüme 255 tane ““A”' harfi basmaktadır. Eğer kronometre ile zaman tutarsanız bu işlem için aşağı yukarı 4 saniye harcandığını göreceksiniz. Ayrıca bu program hafızada 62 bayt işgal etmektedir. Şimdi aynı işi Assembler ile yapalım. NEW yazdıktan sonra bilgisayara aşağıdaki satırları girin:

10 FOR 1-7000 TO

20 READ A:POKE I,A:NEXT 30 DATA 160,255,162,14,169,1, 153,255,3,138,153,255,215,136, 208,244,96

RUN komutunu verdiğinizde makina dili program 7000. bayttan itibaren hafızada yer alacaktır. SYS 7000 ile programı çalıştırabilirsiniz, ama hiç süre tutmaya kalkışma) ra bu işlem Assembler ile 5,4 mili niyede halledilmektedir. Ayrıca program bellekte sadece 17 bayt işgal etmektedir. Görüldüğü gibi Assembler kullanımını bu kadar çekici yapan başlıca unsur sürattir. Bazı işlemler Basic'e göre aşağı yukarı 1000 kat hızlı gerçekleştirilmektedir. Ayrıca Basic'te halledilmesi imkansız olan programlar Assembler'in çok yönlü kullanımı ile mümkün olmaktadır. C-64 açıldığında ile programlanmayı beklemektedir. Bizim bilgisayara yazdığımız Basic komutları her seferinde “Interpreter” adındaki bir çevirici program tarafından bilgisayarın anlayabileceği bir şekilde yorumlamaktadır. Yalnız bu yorumlayıcı ile Assembler programları arasında çok önemli fark vardır: Assembler'da yazılan bir program bir defa çevrilerek tamamen makina dili haline gelmektedir ve bir daha yazıldığı Assembler programlarına ihtiyaç duymamaktadır. Basic programlarda ise tam tersine her seferinde yorumlayıcı işe karışmaktadır ve bu da önemli bir zaman kaybına yol açmaktadır. C-64'ün içinde açılışta hazır bir Assembler bulunmaması bu bilgisayar için önemli bir handikap teşkil etmektedir. Şimdi isterseniz normal şartlarda yani doğrudan Basic yardımıyla C-64'de nasıl makina dili program yazılacağını görelim: a)İlk önce Assembler program hazırlanmalıdır. Bu programda bir dizi komut yer alacaktır. Örnek olarak bu diziden bir RTS komutunu ele alahım. b) Her Assembler komutunun makina dilinde bir “binary” (ikilik sistem) kodu vardır. RTS için bu kod 01100000 dur. c) Şimdi bu kodun hafızanin bir registerine kaydedilmesi lazımdır. Bu işlem POKE komuduyla gerçekleşir. Yalnız Basic ikilik sistemden anlamadığı için bunun onluk sisteme çevrilmesi gereklidir. RTS'nin onluk sistem karşılığı 96'dır (onaltılık veya heksadesimal karşılığı 60). Bu değer istenen adrese POKE edilir, örneğin PO-KE 7016,96. d) Bu yöntemle tüm program bayt bayt hafızaya yerleştirilir. Eğer hafızadaki program incelenmek istenirse bu sefer PEEK komutu ile her bayt tekrar okunmalıdır. Görüldüğü gibi yukarıdaki yöntem oldukça zahmetlidir. Bu nedenle herhangi bir monitör programının kullanılmasında büyük yarar vardır. Kullanışlıkları açısından bize en uygun olanları S-MON veya EX-MON'dur. Monitörlerin yanında çok çeşitli Assembler programları mevcuttur. Örneğin Direkt-Assembler'lar yazılan her satırı anında makine diline çevirmektedirler. Bunun yanında 2-Pass- Assembler'lar tüm program tamamlanınca assembler (makina diline çe-

2

> virme) işlemine geçmektedirler. Bazı Assembler'larda her satıra (Basic'teki REM komutuna benzer şekilde) bir yorum sözcüğü ilave edilebilmektedir. Ayrıca istenen satırlara (Label) veya program bölümlerine (Makro) isim verme olanağı da vardır. Tüm bunlar kullanıcının üzerindeki yükü hafifletmek için geliştirilmiştir. Biz burada başlangıçta bu tür lüks Assembler'lar kullanmayacağız.

ARR ölü ELİ

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