1 Şubat 1990 Tarihli Commodore Gazetesi Sayfa 20

1 Şubat 1990 tarihli Commodore Gazetesi Sayfa 20
Metin içeriği (otomatik olarak oluşturulmuştur)

ASSEMBLER - / Geçen ay sıfırıncı sayfadaki CHRGET rutinini incelemeye başla- mıştık. Şimdi kaldığımız yerden de- vam ediyoruz. CHRGET rutini üç bölümden oluşmaktadır: 1. 0073-0079 satırları CHRGET göstergesini ilerletmektedir ve göster- diği adresteki değeri akümülatöre yüklemektedir. 2. 007C-0084 satırları kontrol sa- tırlarıdır. 3. 0084-008A satırları Flag (bay- rak) rutinleridir. İlk bölümde karşımıza yine yeni bir şey çıkmaktadır: Kendi kendini değiş- tiren bir program. Akümülatörün de- ğer aldığı adres INC 7A komutu ile 1 arttırılmaktadır. Burada arttırılan adresin alçak baytıdır. Bir sonraki satırda ise art- tırma sonucunda taşma olup olmadı- ğı (255 -- 1) kontrol edilmektedir: BNE $0079 Bu tekniği daha önceki sayılarımız- da görmüştük. Herhangi bir taşma anında statü registerindeki 2-Bayrağı 1 ve bu durumda BNE dallanma iş- lemini gerçekleştirmez. BNE komu- tunun Offset'inin 02 olduğunu kolay- ca hesaplayabiliriz. Program sayacı $0077'de durmaktadır. Dallanmanın olacağı adres ise $0079'dur ve arada- ki fark $02'dir. Yukarıda eğer 255 değeri aşılırsa bu adrese ait yüksek baytta bir arttı- rılacaktır. Bu işlem “INC $7B” sa- tırı ile gerçekleştirilir. Bu kısacık program bölümünden ANIL GÜL iki çok önemli şey öğrendik: 1. 16-Bit sayıların nasıl ileri veya geri saydırılacağını. 2. Bir göstergenin nasıl değiştirile- ceğini CHRGET rutinin ikinci bölümün- de kontrol satırları yer almaktadır. Burada kullanılan karşılaştırma ko- mutu akümülatöre yönelik olan CMP'dir. CMP # $3A satırı akümülatörde- ki değerin $3A yeni desimal 58 ile olan bağlantısını incelemektedir. Şimdi C-64'ün kullanım kitabının ar- ka sayfalarından birindeki ASCII kodlarını içeren tabloyu elimize ala- hım 1. Akümülatördeki ASCII kodu 58'den büyükse yani işaret ““:*'dan

Bu sayıdan diğer sayfalar: