Commodore sayı 17, sayfa 63

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 63

10 - .BA $6000 100 - LDX #0 110 - ETİKET TXA 120 - STA $0400,X 130 - 140 - STA $D900,X 150 - INX 160 - BNE ETİKET 170 - RTS

Ne kadar rahat değil mi? Kullanacağımız bir adrese bir isim veriyoruz ve o adresi artık ismiyle anıyoruz. Assembler, programı iki kerede gözden geçirir (Two pass assembler — İki geçişli assembler). İlk geçişte, tüm etiketleri bulur ve bunlara ait adresleri (o sıradaki program sayacının değeri) belirler ve bunları aklında tutar. Daha sonraki ikinci geçişinde ise etiket ve sembol tablosundan tüm sembolize edilmiş değerleri alır ve obje kodunu üretirken kullanır. Yani, böylece bir programın içinde ilerdeki bir etiketi de kullanmak mümkündür. Buna örnek olarak ufak bir program parçası verelim. Bu kısmın yaptığı işlem onaltı bitlik bir göstergecin değerini bir artırmak olsun:

230 -

INC GÖSTERGEÇ 240 - BNE ATLA 250 - INC GÖSTERGEÇ * | 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 sembolün değerini kullanabiliyoruz. Tabii, bunu yapabilmemizin sebebi, demin bahsettiğimiz “iki geçiş' olayı. Zaten, assembler ve compiler'lar (derleyiciler) minimum iki geçişli olarak tasarlanırlar. Baştan beri, sözünü ettiğimiz sistemli çalışmaya bir örnek daha verip bu bölümü bitirmek istiyorum. Çünkü, Tuna'nın MART 87 sayısındaki yazısı, birçok detayı açıklıyor. Bunlara burada bir kere daha değinmeyeceğim. Deminden beri etiketten ayrı olarak sembol diye bir şeylerden söz edip durduk. Bunlar gene etiket gibi, assembler'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 kodumuzun 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 EKRAN—0400 90 EÇ RENK- D800 100 - LDX# 0 110 - ETİKET TXA 120 - STA EKRAN,X 130 - LDA#I 140 - STA RENK,X 150 - INX 160 - BNE ETİKET 170 - RTS

Assembly işlemi bittikten sonra /!! komutlarıyla alfabetik olarak sort edil-

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