Commodore sayı 1, sayfa 53
Sayfanın metni

Sayfa 53

Kulüp üyeleri, Baytan Bitirmez'i Commodore Haberler Bülteni'ndeki Makine Dili yazılarından tanıyacaklar. Başladığı makaleleri pehlivan tefrikası gibi uzatıp hiçbiri bitirmemekle meşhur olan Baytan Bitirmez, aylardır sürdürdüğü sonuca varacakmış gibi gözüken yazılarını baştan almakla alanında yeni bir rekor kırmış oluyor. Dergi için yazı istemeye gittiğimizde, Baytan Bitirmez'in bilgisayar alanında inceleme ve denetlemelerde bulunmak üzere birkaç aylığına Isparta'ya gittiğini söylediler. Bizim tahminimiz, eski

Herhalde bülten okurlarından gelebilecek tepkileri düşünüp her ihtimale karşı bir süre ortadan kaybolmak istediği... JSR 0 İNY 32 So Hexadecimal (onaltılı) sayı sistemi- Makina dili-denilen gayriinsani dil. — BNE ni birkaç sefer anlattım. Aslında çok — PRINT, GET filan gibi yarı-ingilizce terimler basit. Decimal (onlu) sistemi biliyoruz. Bir sayı görünce otomatikman, sağdan sola ilk haneyi 1'le, ikinciyi 10'la, üçüncüyü 100'le, dördüncüyü 1000'le çarpıyoruz. Onaltılıda ilk hane * 1, ikinci hane * 16, üçüncü hane * 16*16 filan. Tabii 0'dan 9'a on rakam yerine, 0'dan 15'e 16 rakama ihtiyacımız var. diye gidiyor.

dec 1 10 15 16(1*16+0)

100=256 (1*16*16+0*16+0) Peki ya FFFF ne ediyor?

Bir de ikili (binary) sistem var. Bunun da numarası, yine sağdan sola, ilk hane*1, ikinci*2, üçüncü*4, dördüncü*8, beşinci*16, vb. Yalnız iki rakam var: 1 ve 0

Mesela: 000004100 4 01000100 68 401040410 — 170 41444414 — 255

Bunların hex karşılığı ise, sırasıyla; 01, 44, AA, FF. Dikkat edilsin; ikiliyi hex'e çevirmek, onluya çevirmekten daha kolay. Örneğin 8 haneli bir binary sayının sol yarısı, iki haneli hex sayının ilk (sol) hanesine, sağ yarısı ise ikinci (sağ) haneye karşılık düşüyor. 0100 = hex 4, 01000100 = hex 4d. 8 haneli binary ile ifade edebilecek en büyük rakam 11111111 = 2 haneli hex ile ifade edilebilecek en büyük rakam FF. Commodore'un kafası, bir defasında sadece 8 tane on-off (1-0) işaretini anlamaya yetenekli olduğundan, hex sisteminin neden kullanıldığını anlamak kolay. BASIC'in PEEK-POKE komutlarında niye hep 0 ile 255 arası sayıların kullanıldığı da böylece anlaşılıyor.

rimlerden değil, sıra sıra hex rakam- lardan oluşuyor. Buyurun bir örnek: A0 00 B9 DE CO 20 D2 FF COO8: C8 CO 07 DO F5 60 4D 45 C010: 52 48 41 4241---

Bunun BASIC'teki karşılığı: PRİNT Denemesi bedava. Programcılığımızı CO00, yani 49152 adresinden başlatıp C014 (49172) adresinde bitecek şekilde düşündük Şimdi yukardaki 21 tane rakamın desimal — karşılığını hesaplayıp, 49152'den başlayarak sırayla POKE edin. (POKE POKE 49153,0: POKE Sonra SYS 49152 deyin. Ve seyredin. Birinci ilkemizi tahmin ettiniz de: Makine dili programlar, birer byfe'lik rakamlardan oluşuyor ve bellekte, bizim seçeceğimiz belli bir adresten başlayarak, her adrese bir byte olarak duruyor. BASIC'ten makine dili bir programı işletmek için, programın başladığı adrese SYS veriliyor. Bu rakamlar ne demek oluyor? Ramalların bazısı makine dilindeki komutların rakamsal kodları, bazısı ise komutu izleyen değerler. Her komutun, arkasında kaç sayı değer alacağı. komuta göre değişiyor ve sabit. Programcığımızın ilk rakamı olan A0, bir komut kodu. Makine buradan işlemeye başlıyor. A0 kodu, ardından bir rakam değer (parametre) alan bir kod. O halde 00 bir değer. Dolayısıyla, onu izleyen B9'un da kod olması şart (yoksa makine sapıtır). B9, 2 byte parametre alan bir komut. Programımızda bu değerler DE, CO. Sonra gelen 20 gene bir komut. 2 byte porametre (D2, FF) alıyor. C8 gene komut. Pararnetre yok. CO komut, 07 parametre. DO komut, F5 parametre. 60 komut: "İş bitti, geri dön” demek. 4D 45 52 48 44 42 41 ise merhaba demek. İnanmazsanız, üşenmeden bunları desimale çevirip, tablosundaki karşılıklarına bakın. Bu rakamlarla program yazmaya sadece deliler kalkışacağından, makine dilinin yarı insani bir dille tercümesi olan Assembly diye birdil daha icat edilmiştir. Assembly dili, makine

$'lar ve başka hususların ne olduğunu sırayla anlatacağız. Yalnız $ işaretinin hex demek olduğunu söylemek şimdilik yetsin. Yani bir yerde $10 gibi bir ifade görürsek, bunun, bizim bildiğimiz on değil, hex 10 olduğunu anlıyoruz. Bu dolar işaretinin BASIC'teki dizi anlamına gelen $ ile ilgisi yok.

Makine diliyle iştigal etmenin bir numaralı koşulu, bir adet Makine Dili Monitörüne sahip olmak. Televizyona benzeyen monitörlerle bir ilgisi olmayan bu monitör, kaset veya diskette bulunan bir program. Makine dili programları ve basit çevirileri yazmayı, okumayı, değiştirmeyi, işletmeyi vb. sağlıyor. Yazının devamını beklerken, yoksa, eşten dosttan bir tane monitör sağlamaya bakın; veya 41500 liraya kıyıp Teleteknik'ten istetin. Gelecek sayıda bir monitör programı dökümü vereceğim ama, ikibinbeşyüz küsur DATA'yı hatasız girmeye çalıştıktan sonra hâlâ bu diziyi izlemeye devam edeceğinize pek ihtimal vermiyorum. Bir de küçük yarışma: Elinize kâğıt kalem alın ve, 1) $A9$A6$1F$C0'nun desimal karşılığını, 2) “Merhaba” diyen makine dili programcığımızı bilgisayar belleğine POKE edecek BASIC programı yazıverin.

(ipucu: 10 FOR X— O TO 20 20 READ A

Elimize ilk geçecek doğru çözümün sahibine bir adet monitör kasedi acele postayla gönderilecektir. O

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