1 Eylül 1989 Tarihli Commodore Gazetesi Sayfa 24

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

bir sonraki satırı girmemizi bekler. $1502 adresine desimal olarak 0 ile 255 arası değerler yazabiliriz, fakat bu değerlerin herbirinin makina dilin- de komut olarak bir karşılığı yoktur ve eğer burada karşılıksız bir değer varsa bilgisayar bunun yorumunu ya- pamaz ve kilitlenir. Bu nedenle Ba- sic'te olduğu gibi satır numaralarını istediğimiz gibi belirleyemeyiz. Bilgi- sayar tarafından okunmasını istedi- ğimiz iki satır arasında bir bayt ile boşluk olamaz. Şimdi isterseniz programımıza son verelim. Burada Basic'te oldukça sık kullanılan STOP benzeri bir komut kullanacağız: BRK. Bu komutun di- ğer işlevlerine daha sonra değinece- ğiz, fakat şu anda bilmemiz gereken tek unsur bilgisayarın bu komut ile karşılaştığında tüm registerlerin o an- ki değerlerini ekranda gösterdiğidir. A 1502 BRK ile programımızı bitirebiliriz. Şimdi hafızada $1500 adresinden başlayan bu ilk programımızı çalıştırmalıyız. Bu iş için birçok monitör programın- da aşağıdaki satır kullanılır: 1500 Eğer Basic'ten çalıştırmak istersek SYS 5376 yazmalıyız ($1500'ün desi- mal karşılığı 5376'dır). Yukarıdaki yöntemlerden bınyle prograı:nı işlettiğinizde ekrana regis- tablosu gelecektir. Bu tabloyla da- ha önce monitör programını ilk kez Statüs registerinde ise Break Bit'i dı- şındaki tüm Bit'ler O'dır. Programımızda ufak bir değişiklik yapalım: A 1500 LDA # $00 A 1502 BRK Programı tekrar işlettiğimizde program sayacı 1503, akümülatör 00 olacaktır. Statüs registerinde ise “Zero-Flag” yani ““sıfır göstergesi”' de 1 değerini alacaktır. Şimdi son olarak akümülatöre $FF değerini yükleyelim: A 1500 LDA # $FF A 1502 BRK Programı tekrar çalıştırdığınızda akümülatörün ve program sayacının beklenen değerleri almasına karşılık statüs registerindeki 7. Bit'in 1 değe- rini alacağını göreceğiz. Bu bit “*Ne- gatif Flag'' diye adlandırılır ve bir iş- lemin sonucunun artı veya eksi olup olmadığını gösterir. Peki, akümüla- törde $FF veya desimal 255 değeri varsa, neden statüs registeri akümü- latörün değerini eksi olarak sösteri- yor? Bu bilmecenin çözümü için da- ha bir süre beklememiz gerekecek. Yalnız burada hemen şunu belirtelim: Eğer bir sayının 7. Bit'i O değilse, bu- rada hemen şunu belirtelim: Eğer bir sayının 7. Bit'i O değilse statüs regis- terindeki Negatif Flag 1 değerini alır. Bu konuya daha sonra negatif ikilik sayıları incelerken değineceğiz. Şim- di statüs registerinin Bit'lerini teker teker ele alalım: 7) N (negatif): Bir önceki işlemler ne- tif mi? 6) V (overflow): Bir önceki işlemin sonucu - 127'den büyük mü? 5) -boş- daima | değerini taşır. 4) B (break): Program kesintiye uğ- ramış mı? 3) D (decimal): İşlemci desimal işlem modunda mı? 2) I Çinterrupt — kesinti): Interrupt durdurulmuş mu? 1) Z (Zero): Bir önceki işlemin sonu- cu sıfır mı? 0) C (Carry): Bir önceki toplama, çı- karma veya kıyaslama işleminde ka- lan var mı? Mutlak adresleme: STA “Store Accumulator”, yani.- akümülatördeki değeri belleğe yükle anlamına gelmektedir. Bu komutu kullanarak akümülatördeki değeri ekran belleğinin ilk baytına ($0400) kaydedelim: A 1500 LDA # $01 A 1502 STA $0400 STA komutu ile yeni bir adresle- me yöntemi ile tanışıyoruz: Mutlak Adresleme. Bu adresleme yönteminin başlıca özelliği hafızada iki bayt kullanma- sıdır. Yukarıdaki program hafızada şu şekilde yer alır: 1500 LDA 1501 $ 01 1502 STA 1503 $00 1504 $04 kalım. Akümülatörün değeri 0l, NV-BDIZC program sayacının değeri 1502'dir. 76543210 ASSEMBLER KOMUT Adresleme Yöntemi LDA Dolaysız A9 2 Mutlak AD 4 LDX Dolaysız A2 2 Mutlak AE 4 LDY Dolaysız A0 Z Mutlak AC 4 STA Mutlak 8D 4 SIX Mutlak 8E R 4 STY Mutlak 8C 4 RTS - 60 6

Bu sayıdan diğer sayfalar: