riydi. Şimdi aynı programı, bir de as- sembler kullanarak yazalım. Bu ara- da, yeni bir olayla karşılaşacağız. Sözkonusu olay “LABEL/ yani etiket kullanımı. Tuna'nın Süper Assemb- ler yazısını okuyanlara tanıdık gele- cek bu terim bizi birçok sıkıcı işlem- den kurtarıyor. Etiketler, program içindeki bazı yerlerin adresini as- sembler programına hesaplatmamızı sağlıyor. Diyelim ki, biz programımı- zı sabit adresler kullanarak yazdık. Araya bir bölge ekleyeceğimiz zaman programın birçok bölümü ileri veya geri kayacak ve sonuç olarak adresi değişecek, biz ise programın kendi içinde bu adresleri kullanan bütün bölgeleri bulup elden değiştirmek z0- runda kalacağız. Fakat, adresleri önemli yerlerin başına birer etiket ko- yup, programın diğer kısımlarından buraya yapılacak başvuruların bir eti- ket üzerinden yapılmasını sağlarsak programımız artık her türlü değişik- liğe karşı genel bir yapıya sahip ola- caktır ve bizi daha az uğraştıracak- tır. Tabif, yukarıda söz ettiğimiz de- gişikliklere, program içinde başvuru- lan bir yerin tümüyle silinmesi dahil değil! Sembol ve etiketleri de kulla- narak yazacağımız kaynak programı- mız şöyle görünecektir: 10 - BA $6000 100 X#0 1!0 ETİKET TXA 120 - STA $0400,X 130 - LDA#1I 140 - STA SD900,X 150 - INX 160 - BNE ETİKET 170 - RTS Ne kadar rahat değil mi? Kullana- cağımz bir adrese bir isim veriyoruz ve o adresi artık ismiyle anıyoruz. As- sembler, programı iki kerede gözden geçirir (Two pass assembler — İki ge- çişli assembler). İlk geçişte, tüm eti- ketleri bulur ve bunlara ait adresleri (o sıradaki program sayacının değe- ri) belirler ve bunları aklında tutar. Daha sonraki ikinci geçişinde ise eti- ket ve sembol tablosundan tüm sem- bolize edilmiş değerleri alır ve obje kodunu üretirken kullanır. Yani, böylece bir programın içinde ilerde- ki bir etiketi de kullanmak mümkün- dür. Buna örnek olarak ufak bir program parçası verelim. Bu kısmın yaptığı işlem onaltı bitlik bir göster- gecin değerini bir artırmak olsun: 64 230 - 240 - INC GÖSTERGEÇ BNE ATLA 250 - INC GÖSTERGEÇ 4 1 260 - ATLA Burada 240'ıncı satırda daha henüz değeri bilinmeyen ve değeri ancak 260'ıncı satırın işlenmesinden sonra belli olacak bir etiketin veya semba- lün değerini kullanabiliyoruz. Tabif, bunu yapabilmemizin sebebi, demin bahsettiğimiz '“iki geçiş' olayı. Zaten, assembler ve compiler'lar (derleyici- ler) minimum iki geçişli olarak tasar- lanırlar. Baştan beri, sözünü ettiğimiz sis-, temli çalışmaya bir örnek daha verip bu bölümü bitirmek istiyorum. Çün- kü, Tuna'nın MART 87 sayısındaki yazısı, birçok detayı açıklıyor. Bun- lara burada bir kere daha değinme- yeceğim. Deminden beri etiketten ayrı ola- Commodore rak sembol diye bir şeylerden söz edip durduk. Bunlar gene etiket gibi, as- sembler'in kullandığı kendine has de- ğişken tiplerinden biri. Biz burada sembolleri, programımızın kaynak kodunu iyice serbest hale getirmek için kullanacağız. Ayrıca kaynak ko- dumuzun okunabilirliği de önemli öl- çüde artacak. Yapacağımız tek işlem, ekran ve renk hafızalarının başı olan sabit sayıyı bir değişkene alıp öyle kullanmak. İşte örneğimiz: 10 -.BA $6000 80 -.EO EKRAN -— 0400 90 -.EO RENK - D800 100 - LDX4# 0 110 - ETİKET TXA 120 - STA EKRAN,X 130 - A#I 140 - STA RENK,X 150 - INX 160 - 170 - Assembly işlemi bittikten sonra /!! komutuyla alfabetik olarak sort edil- BNE ETİKET RTS