1 Eylül 1989 Tarihli Commodore Gazetesi Sayfa 25

1 Eylül 1989 tarihli Commodore Gazetesi Sayfa 25
Metin içeriği (otomatik olarak oluşturulmuştur)

Bu şekilde komutumuz 3 bayt İş- gal etmektedir ve bir sonraki serbest bellek adresi $1505'dir. Basic ile ilgilenmiş olanlar 0l'in A harfinin ekran kodu olduğunu belir- ler. Ekranın sol üst köşesinde beliren A harfini istesek başka bir renge de boyayabiliriz. Ekran renk kodları ise C-64'ün belleğinde $D800 adresinden itibaren yer almaktadır. Bunun için programımıza aşağıdaki satırları ek- leyelim: A 1505 LDA # $00 A 1507 STA $ D&800 Bundan sonra yazacağımız satır $ISOA adresinde olmalıdır. Bu sefer programımızı bitirmek için BRK ko- mutunu kullanmayacağız, zira her makine dili programın bitiminde re- gister göstergesiyle karşılaşmak iste- nilmez. Bunun için yeni bir komut kullanacağız: RTS “Return from Subroutine” veya alt programdan dönüş anlamı- na gelmektedir. Bu komut kullanılır- ken ardında herhangi bir parametre yer almaz. Bilgisayar RTS komutu ullanıldığında gideceği adresi Stack- Pointer'dan öğrenir. Şu satırla prog- ramımızı bitirelim: A 150A RTS Monitörden çıkmamışsak G 1500 ile, Basic'e dönmüşsek programı SYSS376 ile çalıştıralım. Ekranın sağ üst köşesinde siyah bir A harfi gözü- kecektir. Bu programı doğrudan Basic kul- lanarak da yazabiliriz, fakat teker te- ker her komutun desimal karşılığını hesaplamalıyız. Sonuçta aşağıdaki Basic program ortaya çıkacaktır. 10 FOR 1—5376 TO 5386: READ A: POKE I,A: NEXT I: END 20 DATA 169,1,141,0,4,169,0,141,0,216,96 Dört yeni komut: LDA ve STA'nın kombinasyonu Basic'teki POKE komutuna karşılık gelmektedir. Assembler'da bir sayı doğrudan doğruya bir bayta yazıla- maz, bu iş için her seferinde akümü- latör kullanılmalıdır. Makine dilinde akümülatörle aynı görevi gören iki register vardır: X ve Y registerleri. Bunlar için ayrıca LDX (X registeri- ni yükle), STX (X registerini boşalt), LDY (Y registerini doldur), STY (Y registerini boşalt) komutları mevcut- tur. Aşağıdaki programda şu ana ka- dar tanıştığımız tüm komutlar kulla- nılmıştır. A 1500 LDA # $01 A 1502 LDX # $00 A 1504 LDY # $02 A 1506 STA $0400 A 1509 STX $D800 A 150C STY $0401 A 150F STX $D801 A 1512 STA $0402 A 1515 STX $D802 A 1515 RTS Beklendiği gibi bu program ekra- nın sağ üst köşesine “ABA” harfle- rini basacaktır. Burada X register STX komutu ile üç defa okunmuştur. Şu ana dek LDA komutunu sade- ce dolaysız adresleme yöntemi ile kul- landık. Şimdi isterseniz akümülatö- rü STA komutundan tanıdığımız mutlak adresleme yöntemi ile yükle- yelim. A 1518 LDA $D800 Bu şekilde $D800 adresinde kayıt- h olan değer akümülatöre yüklene- cektir. Bu değer $1509'da sıfır değe- ri almıştır. Yine devam edelim: A 151B STA $0403 A 151E STX $D803 A 1521 RTS SYS 5376 ile programı çalıştırdığı- nızda ekranın sol üst köşesinde daha önce beliren üç harfin yanına bir *” işareti eklenecektir. LDA komutunu dolaysız adresle- me yöntemi ile kullandığımızda (ör- neğin LDA # $01) hafızada 2 bayt iş- gal ettiğini daha önce belirtmiştik. Mutlak adresleme yöntemi kullanıl- dığında ise (örneğin LDA $D800) bu iş için 3 bayt tır. Zaten he- men hemen tüm monitör programları bir Assembler satırı yazılıp RE- TURN'e basıldığında o satırın onal- tılık sayı sistemindeki kodları hemen yanında gösterilir. Örneğin LDA $01 ve LDA $D800 komutları şu şekilde gösterilecektir: 1500 A9 01 LDA # $01 1518 AD0OOD8 — LDA $D800 Her satırın başındaki ilk sayı LDA komutuna aittir, fakat görüldüğü gibi — bunlar farklıdır. Buradan şu sonucu çıkarabiliriz: Onaltılık sistemdeki bir kod hem makine dilinde bir komutu, hem de kullanılan adresleme yönte- mini belirtmektedir. Aynı şekilde LDX ve LDY için de dolaysız ve mut- lak adresleme yöntemleri mevcuttur. STX ve STY için dolaysız adresleme kullanılmaz. Şu ana dek öğrendiği- miz komutların adresleme yöntemleri ve onaltılık sistemdeki kodları Resim 1'deki tabloda gösterilmiştir. Tablonun son sütununda her ko- mutun statüs registerinde etkilediği göstergeler (flag) belirtilmiştir. Son- dan bir önceki sütunda ise her komu- tun yorumlanabilmesi için harcanan süre yer almaktadır. Burada birim olarak çevrim (cycle) sayısı kullanıl- mıştır. Her bir çevrimin 1 mikrosa- niye olduğu düşünülürse yukarıdaki 25

Bu sayıdan diğer sayfalar: