64'ler sayı 34, sayfa 56

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 56

İşte bu ay yine karşınızdayım ve sizinde bunu kullanmanız, öncelikle yazılan bir mektuba (yazılan tek mektup galiba, heheheh - MAC) cevap vermek istiyorum. Mektubu yazan arkadaşımız Cebeci/Ankara'dan Tarkan adında bir arkadaşımız. Herhalde bu arkadaşımız ilkokul yıllarını Japonya'da falan geçirmiş, çünkü yazdığı mektubu okumak ve ustaca deşifre etmek oldukça uzun bir zaman aldı. SEKA yazı dizisinden dolayı teşekkürlerini kabul ettiğim Tarkan sayfa sayımızın artmasını istemiş. Bunun olması için bol bol mektup almamız gerekiyor, bu da sizin elinizde. Tarkan arkadaşımız dört adet soru sormuş. Tarkan'ın soruları şunlar : 1 - Bitlerdeki değişiklikleri, hex olarak gösterirken hesaplamayı nasıl yapıyoruz? Bu sorunun cevabını sanırım, önceki sayılardan bir tanesinde vermiştik. Fakat Assembler köşesine yazan ilk on kişi arasına girdiği için, Tarkan'ı, bu soruya cevap vermekle taltif ediyorum. Sorunun cevabı şu ; İlk önce kendinize 15'ten 1'e doğru bir tablo çizin (Bakınız sayı :33, TABLO 1), daha sonra bitlerin görevlerine göre istediğiniz değişiklikleri yapın, ve tablo üstünde açık olan bitleri 0, kapalı olan bitleri 1, numaralarıyla değerlendiririz. Daha sonra SEKA Assembler'ımızda bulunan Calculator ile (?) çıkan binary yani ikilik sistemdeki sayıyı, onaltılık düzene çeviririz. Örnek : Binary sayımız sözgelimi, 1001000111001000 olarak ortaya çıktı. (Dikkat en baştaki sayının bit numarası 15'tir, en sondakinin ise 0.) Seka promptuna şunu yazınız : 2 901001000111001000 Bunu yazınca bilgisayar, bize bu sayıyı, Hex, Decimal, ASCII ve en sondada Binary olarak verir. 2- Seka'da program bittikten sonra Dos'a dönmemizi sağlayan bir komut var mı ? Evet var. ! (dizgi hatası yok) yazıp ret. basarsanız. y/n/r harflerinden birine basmanız istenir. y'ye basarsanız Dos'a dönersiniz. n'ye basarsanız SEKA Assembler'a geri dönersiniz. r'ye basarsanız, SEKA Ass. programı yeniden başlar. 3 - Masterseka 1.53 kullanıyorum. Masterseka 1.7 çıktığını duydum. Sizde var mı. Nasıl temin edebilirim. Arkadaşımızın MS 1.53 kullanmasına aferin diyo-

SEKA ASSEMBLER

BAHADIR AKCAN BURAK ÖZIŞIK manızı ediyorum. İstanbul içindekiler cumartesi günleri saat 13.30-16.00 arası dergiye gelip bu programı alabilirler. İstanbul dışındakiler ise, bir zarfın üstüne ASSEMBLER köşesinin adresini, arkasına ise MS 1.53 yazıp içine bir disket koyup postaya verirlerse kısa zamanda bu programı elde edebilirler. Ayrıca MS 1.77 çıktığını ben de duydum, fakat daha elime geçmedi eğer geçerse haberiniz olur. 4 - Vektör grafikler için bir rutin var mı? ya da IFF formatındaki vektör grafikler nasıl rutinleştirilebilir? Evet vektör için birçok rutin mevcut. Vektörler hakkında bilgi almak isteyenler cumartesi günleri 13.30-16.00 arası dergiye gelip istediklerini elde edebilirler, ya da 3 nolu sorudaki taktiği uygulayıp mektuplarla istediklerini öğrenebilirler. IFF resimleri vektörleştirebilmek ise bayağı zor bir iş. Bunu yapan bir babayiğit coder henüz dünyaya gelmedi. (Belki gelmiştir de henüz Amiga almamıştır kimbilir, kıl tüy...) Şimdi gelelim, bu ayki konulara. Bu ay Assembler komutlarına yumuşak iniş yapıyoruz. İlk başlarda Data Transfer Instructions (DT) yani veri transferi işlemleri yapmamızı sağlayan komutları vereceğiz. Daha sonra konularımız yavaş yavaş ilerleyecek (Eğer sabotaja uğramazsak). DATA TRANSFER INSTRUCTIONS : MOVE komutu : Move komutu kullanımı en kolay olan ve en çok kullanılan data transfer işlemi sağlayan komut statüsündedir. Move komutuyla yapılan işlemin büyüklüğü, birçok işlemde olduğu gibi üç adettir. Bunlar (.B), (.L) ve (.W)'dir. Bu komut, bir operatör ile başka bir operatör arasında veri transferi yapmamızı sağlar fakat target operand yani hedef seçilen operatör adres olamaz. Böyle bir işlemi yapabilmek için MOVEA komutunu kullanmalıyız. MOVEA komutunu ilerleyen satırlardan birinde bulabilirsiniz. MOVE komutunun ASSEMBLER yazım şekli şöyledir. MOVE.B operatör,operatör MOVE.W MOVE.L Ayrıca bu komutun durum kodu registerini de etkilediğini söylemeden geçemeyeceğim. Komutun etkilediği bitler şunlardır : N-Eğer veri transferi yapılmamışsa bu bit 1 değerini alır. Eğer bu durumun tersi olursa bit 0 yapılır. Z-Eğer veri transferi yapılmışsa bu bit 1 değerini alır. Eğer bu durumun tersi olursa bit 0 olarak değiştirilir. V ve C bitleri her zaman 0 yapılır, X biti etkilenmeyen tek bittir. (Bu bitlerin anlamları için bakınız: sayı 33) MOVEA komutu : MOVEA (MOVE Address), adı üstünde kaynak veriyi bir adrese transfer etmemize yarar. Bu komutu kullanırken, hedef operatör olarak bir adres registeri kullanabiliriz (An, n=0, 1, 2, 3, 4, 5, 6, 7---Tabii burda A7'nin stack pointer registeri olduğunu biliyoruz). Bu komutta byte büyüklüğü kullanılmaz, ve ayrıca bu komut durum kodu registerine bağlı bitlere de herhangi bir etki etmez. Komutun ASSEMBLER yazımı şöyledir. MOVEA.W operatör,operatör (Bu bir adres registeridir.) MOVEA.L operatör,operatör (Bu da bir adres registeridir.) Komutun durum kodu registerine bir etkisi olmadığından bitlerde bir değişiklik olmaz. MOVEM komutu : MOVEM (MOVE Multiple), komutu sistemde çok önemli bir yer tutan register depolama işlemlerini yapmamızı sağlar. Bu komut Multitasking olayının en önemli parçalarından biridir, çünkü bir işlemden tekrar devam edilmek üzere başka bir işleme geçiliyorsa, ilk yapılan işlemde açığa çıkan sistem veri ve parametrelerini bir yerlerde sonra kullanılmak için depolamak gerekmektedir. Bu komutun yaptığı iş, birçok bilgisayarın makine dilinde bulunan PUSH ve POP işlemleridir. Büyüklükler, registerlerin hangi bölümlerinin ve ne büyüklükte depolanacağını belirtir. Bu komutun ASSEMBLER yazımı da şöyledir. MOVEM.W register listesi,pointer pointer,register listesi MOVEM.L register listesi,pointer Bu operasyonda durum kodu registeri etkilenmez. MOVEQ komutu : MOVEQ (MOVE Quick) komutu bir veri registerine 8 bitlik yani 1 baytlık bir veri transfer edilmesini sağlar, bu da demektir ki o veri registerine 0-255 arası bir değer yükleyebiliriz. Bu komutun bir büyüklüğü yoktur, fakat komut yapı olarak 8 bitlik bir komut olduğundan, bir baytlık işlem yapılabilir. Bu komut durum kodu registerine aynı MOVE komutu gibi etki eder. ASSEMBLER yazımı ise şöyledir. MOVEQ 0-255 arası bir baytlık değer,veri registeri Böylece MOVEQ komutuyla birlikte en işinize yarayabilecek MOVE komutu çeşitlerini öğrenmiş olduk şimdi sırada, değerleri ve bazı adresleri point etmemize yarayan LEA komutu var.

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