rin statü registerine yazılması sonucu bilgisayarımız kit- lenebilir. SP yine bir azaltılır. TSX: Bu komut “Transfer Stack-Pointer into X”” kelimele- rinden türetilmiştir ve “*Stack göstergesini X'e transfer et anlamındadır. Burada SP herhangi bir değişikliğe uğ- ramazken, X registeri $00-$FF arası değerlere sahip ola- bileceği için statü registerindeki N ve Z bayrakları deği- şebilir. TXS: TSX'in tam ters işlevine sahip olan bu komut X- Registerini stack göstergesine aktarmaktadır. Bu şekilde stack'daki istediğimiz bir değeri akümülatöre yükletebi- liriz. Yukarıda yer alan tüm komutlar birer baytlıktır. Stack bölgesi devamlı bilgisayar açıldıktan sonra ça- lıştırılmış Assemmbler programların izlerini taşıyacağı için bazı durumlarda gereksiz baytların silinmesi gereke- bilir. Aşağıdaki program SP'nin gösterdiği değerin altın- daki 32 bayt'a sıfır değerini yazmaktadır. 8000 LDA # $00 8002 TSX Stack göstergesi X registerinde saklanmaktadır. 8003 LDY # $20 8005 PHA Stack'a sıfır değerini gönderiyoruz. 8006 DEY 8007 BNE $8005 S 32 defa sıfır değeri yazıldıktan sonra X-registerinde sakladığımız eski stack göstergesini gönderiyoruz. SOCA BRK Stack ile çalışırken işleri fazla karıştırmamak için PHA- PLA, JSR-RTS gibi komut çiftlerinin sayısına dikkat et- melisiniz. Özellikle stack'ın tam olarak bilgisayar tara- fından nasıl yorumlandığını bilmeden TSX-TXS komut- larını kullanmamanızı tavsiye ederiz. Dolaylı adresleme: Stack bölgesini ve stack komutlarını tanıdıktan sonra yazımızın başında kısaca değindiğimiz dolaylı adresleme- ye tekrar dönmek istiyoruz. Şimdi bu yöntemi geçen sa- yıda öğrendiğimiz indeksli adresleme ile birleştirip dolaylı- indeksli adreslemeyi göreceğiz. daki satıra bir göz atalım: LDA (FA), Y Buradaki parantez işaretleri bize JMP komutunu ha- tırlatmaktadır ve hemen hemen aynı amaçla kullanılmış- tır. $FA ve $FB adresleri vektördür ve buralarda asıl iş- lenecek adres yer almaktadır. Bu adreslerin şu değerleri aldığını farzedelim: $FA — Ol 48 $FB --- 8Ü ve Y-registerinde de 5 olsun. Sonuçta vektörümüz $8001'i göstermektedir. Yukarıdaki şekliyle LDA komu- tunu bilgisayar yorumlarken $8001 değerine Y- registerinin değerini de ilave eder ve $8006 adresini akü- mülatöre yükler. Bu son öğrendiğimiz adresleme yöntemindeki tek sı- nırlama vektörün (parantez içindeki sayı) sıfırıncı sayfa- da olmasa gerektiğidir. Şu ana kadar öğrendiğimiz ko- mutlardan ADC, CMP, LDA, SBC ve STA bu yöntem- le adreslenebilirler. (Resim 2) Dolaylı-indeksli adresleme konusunu kapamadan ön- ce yine bir örnek programı in iz. Bu program tüm ekran değerlerin ($0100'dan başlayan) $E000 adresi ya- zacaktır. Öncelikle sıfırıncı sayfada iki vektör belirleyelim: $SFA/$FB ekran adreslerini ve $FC/$FD taranfer edilecek adresleri ($E000 ve sonra- s1) göstersin. 1000 LDA # $00 1002 STA $FA 1004 STA $FC Bunlar iki vektörün alçak baytları idiler. Şimdi de yük- sek baytlar: 1006 LDA # $04 1008 STA $FB I00ALDA $E0 1000 STA $FD Bu şekilde vektörler belirtilmiş oldu. Şimdi her biri 256 bayt olan 4 blok transfer edilmelidir. Blok sayısını X- registerine yazalım: 100E LDX # $04 , Daha sonra Y-Registerine de sayacı (indeksi) yükleye- lim: 1010 LDY # $00 Şimdi gerçek taşıma döngüsü başlayabilir: 1012 LDA(FA), Y 1014 STA (FO), Y 1016 DEY 1017 BNE $1012 Y-registeri ilk başta O değerine sahip olduğu için DEY komutuyla geri sayacaktır ve bu şekilde ilk blok taşına- caktır. İkinci blok için vektörlerin yüksek baytlarını | art- tıralım: 1019 INC $FB 101B INC $FD Komut — Adresleme Resim 2: Dolaylı olarak adreslenen komutlar