Bu sayfadaki yazılar
Sayfanın metni
Sayfa 46
al
Assembler'da program yazarken bilgisayarın iç dünyası ile çok yakın ilişki kuracağımız için cihazımızın işleyişini bilmemiz gerekmektedir. Bunun için (Resim 1'e bakın.) Burada öncelikle tüm işlemleri yönlendiren mikroişlemci yer almaktadır ve yollarla bilgisayarın diğer bölümlerine bağlanmış durumdadır. Bu bağlantılar “Bus” diye adlandırılmaktadır. En altta mikroişlemci tarafından oluşturulan, verileri geldiği ve gideceği yerleri içeren 16 Bit'lik adresleri (örneğin $efd4) taşıyan Adress-Buss'u görmektesiniz. İşlemcinin sol tarafında değişik senkronizasyon işlemlerini gerçekleştirilen “Kumanda Bus”'unu görmektesiniz. Sağ tarafta ise ROM (Read Only Memory) yer almaktadır. Buradan sadece okuma işlemleri yapılabildiği için “Data-Bus''a doğru tek yönlü bir ok gösterilmiştir. Çift yönlü ok ise RAM (Random Access Memory) üzerinde bulunmaktadır, zira burada hem okuma hem de yazma işlemleri yapılabilmektedir. En sağda ise bilgisayarın diğer ünitelerle iletişim kurmasını sağlayan giriş/çıkış birimini görmektesiniz.
Mikroişlemcinin iç dünyası:
Mikroişlemcinin iç yapısı aslında burada birkaç satırda anlatılamayacak kadar karışıktır, fakat bize bu kadar derin bilgi gerekli değildir. Resim 2'de herşey basit bir şema halinde gösterilmiştir. Bir mikroişlemcinin kalbi ALU (Arithmetik Logical Unit) diye adlandırılan mantıksal elemandır. Bu ALU akkumulator veya Data-Bus'undan aldığı verilerle hesap işlemlerini gerçekleştirir ve sonucu tekrar akkumulator( — birşeyi toplayan, biriktiren)'a bildirmektedir. Bu akkumulator veya kısaca akku ile oldukça sık karşılaşacağız, zira birçok veri okuma, yazma ve taşı-
Basic'te halledilmesi imkânsız olan programlar Assembler'in çok yönlü kullanımı ile mümkün olmaktadır.
ma işlemleri bu register'le yürütülmektedir. X ve Y Index-Registerinde ne olduğu gibi akku'nunda alabileceği en büyük değer 255 (ikilik sistemde lili 1111)'dir. Resmin en sağ tarafında P diye adlandırılan mikroişlemci statü registerini (Processor Status Register) görmekteyiz. Bu register diğerlerinden çok farklı bir işleve sahiptir. Statü registerini (sicilini) oluşturan 8 Bit'ten her biri mikroişlemcinin o anki du- Tumunun çeşitli yönlerini gösteren bir evet/hayır göstergesi (Flag) olarak kullanılır. Buradan örneğin yapılan bir işlemin sonucunun negatif olup olmadığı, programın kesintiye uğrayıp uğramadığı vs. öğrenilebilir. C-64'ün belleğinde mikroişlemcinin doğrudan kullanabildiği 256 bayt uzunluğunda özel bir bölüm vardır ve burası “stack” diye adlandırılır. Yine oldukça sık kullanacağımız “Stack Pointer” bize yukarıda anlatılan özel bölümdeki ilk boş yerleşim adresini gösterir. Son registerimiz ise ““Program Counter”'dir. Bu register iki tane 8-Bit Registerden oluşmaktadır ve bu şekilde 65535 bayt erişilebilir. Program
Counter (program sayacı) bir sonra işlenecek olan makina dili komutunun adresini içerir. Bilgisayarımızın iç dünyası hakkında gerekli bilgileri aldıktan sonra Assembler programlarında kullanacağımız S-MON'a değinebiliriz. S-MON'u çalıştırdığımızda karşımıza ilk önce aşağıdaki gibi bir register göstergesi çıkacaktır:
PC-E147 NV-BDIZC-10110000 AC-0O XR-0O SP-F8
PC her seferinde bir sonra ele alınacak komutu gösterir (burada $E147). IRO ise bize Interrupt vektörünün adresini verir. Bu adres 788. ve 789 registerlerden de öğrenilebilir. Bir sonraki 8 haneli değer ise statü registerinin 8 Bit'ini yani flag'larını bildirir. AC akumulator'un o an içerdiği değeri göstermektedir. Aynı şekilde XR X-registerini, YR ise Y-registerini içerir. Bu ay makina dilinde ilk adımları atabilmek için gerekli temel bilgileri ele aldık. Gelecek ay değişik adresleme yöntemlerini görüp ilk Assembler programlarımızı yazacağız. Bu aylık hoşçakalın.
Klavyeyle gezinmek için ← ve → tuşları.