Commodore sayı 16, sayfa 62

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 62

AYHAN KALAYLIOĞLU

ASSEMBLER'LA ÇALIŞMA

Şimdi size küçük bir makine dili program vereceğiz. Bunu verirken aynı zamanda, assembler kullanmanın faydalarını ve avantajlarını vurgulayacağız. Bunun için aşağıdaki problemi, makine dilinde formüle edeceğiz: Yapmak istediğimiz işlem, Commodore 64'ün tüm karakter setini ekranda göstermek. Önce bu problemi BASIC'te nasıl çözeceğimizi gösterelim. Commodore 64'ün karakter setinde 256 değişik karakter yer almaktadır ve bunlar 0'dan 255'e kadar rakamlanmıştır. BASIC'te bu problemi çözmek için şöyle bir döngü kurmak gerekir.

100 X-0 120 POKE 1024 4 X,A:REM ekran kodu 130 A-I 140 POKE 552964 X,A:REM renk kodu 150 X-X41

160 IF X < >256 THEN 110 170 END

Bu programı RUN komutuyla çalıştırdığınızda, tüm karakter seti ekranın üst tarafını kaplayacaktır. Bütün bu işlem aşağı yukarı 7 saniye zaman alacaktır. Programa dikkat ettiyseniz, bazı şeyler fazlasıyla abartılıp yazılmış durumda. Bunun nedeni, programın makine diline yakın olması ve makine diline çevirirken fazla sorun çıkarmaması. Öyleyse, haydi iş başına!

100 X=0 m X değişkeni için X-register'ini, A değişkeni için ise akümülatörü kullanacağız.

NOA-X TXA

X-register'inin içeriği aküye kopyalanıyor. Bu arada X'in içeriğine hiçbir şey olmuyor.

120 POKE 10244 X,A — STA 1024,X

Burada, akünün içeriği 1024+X adresine saklanıyor. Yani indeksli adresleme tipini kullanıyoruz.

» LDA#1

Akü 1 numaralı renk koduyla (beyaz) yükleniyor.

140 POKE 552964 X,A m STA 1024,X

ve 55296+X adresli hafıza elemanına yazılıyor.

ç

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