Amiga Dünyası sayı 9, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Merhaba Assemblercılar. Şimdiye kadar verdiğimiz teorik örneklerle, ilerdeki makina dili programlarınızın temelini oluşturacak kısa rutinlerin oluşumunu ve program satırlarının birbirlerini nasıl etkilediklerini gördük.

Bu sayıdan itibaren, teorik örneklerden çok doğrudan makinada yazarak erişebileceğiniz ve etkisini göreceğiniz örneklere geçiyoruz.

Tabii önce kullanacağımız Assembler derleyicisini tanıyacağız. Bu konudaki tek favorimiz, Seka Assembler. Makina dili programlarımızı, Seka Assembler ile yazacağız. Seka Assembler diye isimlendirdiğimiz Assembler derleyicisini her yerden rahatlıkla bulabilirsiniz. Kullanacağımız Seka derleyicisinin ismi ve versiyonu MASTER SEKA 1.6'dır. Aşağıdaki açıklamalarda bu versiyonu kullanacağımızı ve diğerleri ile aralarında komut farklılıkları olduğunu da söyleyelim. SEKA ASSEMBLER

Amiga'daki Assembler derleyicilerinin içinde, bence en rahat ve en süratlisi Seka Assembler'dır. Programlarınızı Seka'da yazmak ve hiç zaman kaybetmeden tek tuşa basarak compile (derlemek) etmek Seka'da çok kolay. İşleyişi ve öğrenimi bakımından da en sadesi olması, bu yazı dizimizde size önermeme sebep oluyor.

Tabii makina koduna yeni başladığınızı düşünürsek, sizin için Seka Assembler kaçınılmaz bir fırsat oluyor. Ayrıca Commodore 64 kullanıcıları için de bir şey söylemek istiyorum. Amiga'daki derleyicilerden, C-64 Assembler'ına en yakın olanı Seka. Bu arada Seka Assembler'ın Coder'larından da çok memnunuz.

Şu an için, Seka'nın birçok çeşidinin dünya piyasasında dolaştığını söyleyebiliriz. Gerçi bugün, bunlardan sadece iki versiyonun sivrildiğini görüyoruz.

Avrupa'da, 88-89 yıllarında birçok kişi Seka'nın ilk versiyonlarından en seçkini olan Kuma Seka Assembler Ver 1.5'i taban alarak, kendi derleyicisini yazdı. Tabii iyi kötü herkes, yazdıklarının ürünlerini aldı. Bu arada 90 yılı içinde, PROMAX ve BUDDHA adında çalışkan iki ayrı Coder tarafından her ay Seka'nın iki yeni versiyonu üretilmeye başladı. Seka'yı, 90 yılı içinde öyle bir hale getirdiler ki; geçen sene kullandığım Seka'ya baktığımda, ne kadar ilkel bir ortamda Assembler çalıştığımı görüp üzülüyorum.

Bu arada, sizin ne kadar şanslı olduğunuzu söylemeye gerek yok. Siz

Assembler'a bizim gibi ilkel bir Seka yerine, çok modern bir Seka derleyicisi ile başlayacaksınız.

Seka Assembler'ın, devamlı kendini yenilediğini söyleyebiliriz. Seka'yı ilk yazılışından itibaren değerlendirirsek, görüntü ve işletiminde çok büyük değişiklikler oldu. Şimdi Seka'da programlarımızı nasıl yazacağımıza değinelim.

Seka'yı yüklediğinizde standart Seka ekranı gelir ve bilgisayar bize "CHIP OR RAST > " sorusunu yöneltir. Burada Seka'yı hangi tip hafıza bölgesine yüklemek istiyorsak, o hafıza bölgesini seçeriz. Bu soruya Chip memory seçmek için "C", Fast memory seçmek için "F" harfini yazıyoruz.

Bu arada, Amiga hafızasına ve adreslemesine biraz daha derinlemesine girmek istiyorum. Chip memory dediğimiz kısım, Amiga'da system hafızasında FAT AGNUS'un (system yardımcı mikrochip) gördüğü, grafik ve ses verilerinin bulunması gereken kısımdır ve hafızada $00000000 - $00080000 adresleri arasında yer alır.

Fast Memory diye adlandırılan kısım ise, FAT AGNUS'un görmediği ve diğer bütün RAM belleği (yazılıp okunabilir bellek) temsil eder. Normalde Amiga'nın alt kısmından takılan ilave RAM ile kazanılan ikinci 512K'lık kısım, hafızada $00C00000 - $00C80000 adresleri arasına yerleşir. Diğer expansion port'tan takılabilecek ve maksimum sekiz megabyte'a kadar olabilecek bellek ise, system'in $00200000 no'lu bellek adreslerinden itibaren yerleşmektedir. Seka ile çalışırken, programlarımızı bu hafıza bölgelerinde oluşturacağız. Ve 512K'lık bir Amiga'da çalıştığımızı düşünürsek, Seka ve makine kodu çalışmalarımızı çoğunlukla CHIP MEM ($00000 - $80000) hafıza bölgelerinde yapacağız.

Seka Assembler çalışmaya başlamadan önce, bize sorduğu bu soru ile Seka sisteminin ve bizim oluşturacağımız kodun çalışacağı bellek türünü burada C ve F harfleri ile belirtiyoruz. Tabii şimdi biz genelde kullanıcıların 512K'sı olduğunu düşünerek, soruya C yani CHIP MEMORY cevabını vereceğiz.

Bu soruyu cevapladıktan sonra bilgisayara, seçtiğimiz memory türünde ne kadar çalışma bölgesine ihtiyacımız olduğunu belirtmemiz gerekir. Programcı, kendi hazırladığı programın uzunluğuna göre bu değeri yüksek veya alçak tutmalıdır. Bu değeri belirtirken dikkat edilmesi gereken

AMIGA ASSEMBLER

Bir husus da şudur: Program kodu Seka Assembler'ın çalıştığı bölge içerisinde oluşturulacaksa, maksimum değer verilebilir. Ama, benim de yaptığım gibi, program kodunu Seka çalışma alanının dışında ve programın dataları ile bir arada kullanmak isterseniz, bu sayıyı ufak tutup, sadece ihtiyacınız kadarını yazmalısınız. Tabii derleyiciye, program kodunu Seka alanının dışında oluşturmasını söylemeyi de unutmamalısınız (Daha sonra örnekler ile açıklayacağız.).

Genelde, vereceğim örneklerde anlattığım ikinci yöntemi kullanıp sizin olayı daha yalın hali ile öğrenmenizi sağlamaya çalışacağım. Tabii bu yöntemleri kullanmayı öğrenmeden önce daha Seka Assembler'ın bir sürü komutunu ve işlevlerini açıklayacağım.

ÖMER SİNAN POLAT

Bizim vereceğimiz örnek makina dili programların uzunluğunu düşünürsek, bu sayı 10 KB ile 40 KB arasında bir sayı olacaktır. Siz de bu soruya 10-40 arasında bir sayı girin.

Artık Seka hazır ol vaziyette emirlerimizi beklemektedir.

Seka derleyicisinin sadece iki ekranı vardır. Birincisi direkt modu (ilk açılış ekranı), ikincisi ise ESC tuşuna basarak geçilen program yazım ekranıdır.

Source (Makina kodu Assembler listesi)'larımızı bu ekranda yazacağız. Daha sonra göstereceğimiz şekilde assemble edip onları makina kodu (obje kodu) haline dönüştürüp Seka'nın diğer bir komutu ile oluşturduğumuz kodu çalıştıracağız.

Direkt komut modunda Seka'nın tek harften oluşan komutlarını yazabiliriz. "SEKA>" ibaresi olan bir satır ve aynı satır karşısında yazı kursorunu görebiliriz. Yukarıda da belirttiğim gibi tek satırlık Seka komutlarını buradan gireceğiz.

Seka Assembler'ın en son versiyonu olan Master Seka V1.51 ile çalıştığımızı düşünerek direkt yazılan komutların tam listesini aşağıda veriyorum. =>Başlangıçta girdiğimiz memory opsiyonları hakkında bilgi verir. > Filename>Seka çıktılarını printer çıktısı veya bir disket dosyası olarak almak istersek, bu komutu kullanırız. Printer için filename yerine "PRT:" ve disket dosyası olarak atmak için ise "DF0:dosyaismi" şeklinde yazmamız gerekir. ?>Bu komut Basic'deki Print komutuna benzetilebilir. Yaptığı iş toplama-çıkarma gibi aritmetik işlemlerdir. Ayrıca bu komut yardımı ile Hexadecimal, Decimal ve Binary sayı sistemleri arasında sayı dönüşümleri de yapabilirsiniz. @ Komut>Burada Komut yazılı yere herhangi bir CLI komutunu yazarak onu çalıştırabilirsiniz. a Adress>Seka'da Compile işlemini bu komut yapmaktadır. Komutun iki kullanım modu vardır. Birincisi sadece "a" yazarak komutu Compile modunda kullanmaktır. Bu modda, V yazıp RETURN'e bastığınızda, bir soru ile karşılaşacaksınız ("OPTIONS>"). Burada, options sorusuna 8 ayrı şekilde yanıt verilebilir. Bu seçenekler ile compile işlemini ve adresleme sonuçlarını ekranda izleyebilir veya printer'dan çıktılarını alabilir ya da derleyiciye source üzerinde adreslemelerde düzenlemeler yapmasını söyleyebiliriz. OPTIONS komutlarının tam listesi aşağıdadır: A: Absolute memory adresleme hatalarını varsa bulur. E: Compile işlemini printer'dan liste olarak verir. H: Ekrana liste verirken her sayfada tuş beklemesi L: Oluşacak obje kodunun Linkable olması O: Adres düzenlemeleri seçimi (OPTIMIZE) P: E komutundakine benzer bir printer listesi R: Relocatable adreslemelerdeki hataları bulur V: Compile işleminin ekrandan liste olarak izlenmesi

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