Commodore sayı 43, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

İnsan beyninin bilgisayarlara göre en önemli üstünlüğü birkaç işlemi aynı anda yapabilmesidir. Örneğin bir insan müzik dinlerken kitap okuyabilir ve aynı zamanda bir şeyler yiyebilir. Bilgisayarlarda ise durum tamamen farklıdır ve tüm işlemler belli bir sıraya göre ardı ardına yapılır. Yalnız burada her şey o kadar hızlı gerçekleşir ki bilgisayar aynı anda birden fazla işlem yapıyormuş gibi görünür. Makine dilinin mantığı da hemen hemen aynıdır. Assembler komutlarını bilgisayar çok yakından tanıdığı için bunları hemen işleme koymaktadır. Böylelikle makine dilinin özelliklerini mantıklı şekilde kullanarak bilgisayarımızın birkaç işi birden yapmasını sağlayabiliriz. Yukarıda bahsettiğimiz komutlar zincirinin ilk parçası LDA komutudur. Bunun anlamı şudur: Bellekteki değeri akümülatöre yükle (Load accumulator with memory). Tüm Assembler komutları üç harften oluşmaktadır. Geçen sayımızda her makine dili komutuna bir 8-Bit kodun eşlenmiş olduğunu belirtmiştik. LDA komutu için bu kod $A9 veya desimal 169'dur (ikilik sistemde de 10101001). Şimdi bu kodun belleğin herhangi bir baytında kayıtlı olması lazımdır. Bu bayt $1500 veya desimal 5376 olsun. O halde Assembler satırımız şu şekilde olmalıdır:

1500 LDA

Yalnız burada yine eksik bir şey vardır. Akümülatöre hangi değer yüklenecek? PEEK, POKE gibi bazı Basic komutlarında da olduğu gibi Assembler komutlarının birçoğu da tek başlarına kullanılmazlar. Bunlarda her seferinde komutu takip eden bir parametre bulunur. Makine dilinde bu parametreler ikiye ayrılır: Bir baytlıklar ve iki baytlıklar. Eğer akümülatöre 01 değerini yüklemek istersek Assembler satırımız şu şekli alacaktır:

1500 LDA # $01

Şimdi burada 01 değerinin önündeki # ne işe yarıyor diye soracaksınız. Assembler programlarının birçoğu veri girişinde onaltılık sayı sistemini kullanır, fakat bunun yanında ikilik veya onluk sayı sistemini kullananlar da vardır. Hatta çok gelişmiş bazı Assembler'lar ASCII işaretlerini de kullanırlar. Her veri giriş türü için bir özel sembol belirlenmiştir. Genellikle onaltılık sayı sistemi için “$”, ikilik sayı sistemi için “%”, desimal için “#” kullanılır. Yukarıdaki örnekte kullanılan “#” parametrenin onaltılık sayı sisteminde olduğunu belirtmektedir. “#” işaretine gelelim. Akümülatöre bir değer yüklemenin çok çeşidi vardır: Burada olduğu gibi doğrudan bir sayı verme, herhangi bir adreste bulunan değeri yükleme vs. Bizim kullandığımız doğrudan bir sayıyı akümülatöre yükleme yöntemine “dolaysız adresleme” adı verilir ve “#” ile belirtilir. Eğer $1500 adresinde LDA'nın makine dili karşılığı yer alırsa bir sonraki adreste, yani $1501'de akümülatörün alacağı değer olan 01 bulunmalıdır. Bu nedenle bir sonraki Assembler satırımızı hafızada ancak $1502 adresinden sonra yerleştirebiliriz. Bir Monitör ile Assembler'da program yazarken genellikle istenen başlangıç adresinin başına bir “A” harfi konulur. İlk satır yazılıp RETURN'e basıldığında bilgisayar yazdığımız satırın kaç bayt işgal ettiğini hesaplar ve bir sonraki satırın başlayacağı adresi otomatik olarak yazar. Örneğin EXMON'da şu satırları yazmalısınız:

A 1500 LDA # $01 Şimdi RETURN'e bastığınız ekranda A 1500 LDA # $01 A 1502

satırları gözükür ve bilgisayar bizden bir sonraki satırı girmemizi bekler. $1502 adresine desimal olarak 0 ile 255 arası değerler yazabiliriz, fakat bu değerlerin herbirinin makine dilinde komut olarak bir karşılığı yoktur ve eğer burada karşılıksız bir değer varsa bilgisayar bunun yorumunu yapamaz ve kilitlenir. Bu nedenle Basic'te olduğu gibi satır numaralarını istediğimiz gibi belirleyemeyiz. Bilgisayar tarafından okunmasını istediğimiz iki satır arasında bir bayt bile boşluk olamaz. Şimdi isterseniz programımıza son verelim. Burada Basic'te oldukça sık kullanılan STOP benzeri bir komut kullanacağız: BRK. Bu komutun diğer işlevlerine daha sonra değineceğiz, fakat şu anda bilmemiz gereken tek unsur bilgisayarın bu komut ile karşılaştığında tüm registerlerin o anki değerlerini ekranda gösterdiğidir.

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