Bu sayfadaki yazılar
Sayfanın metni
Sayfa 48
$FB = 80 ve Y-registerinde de 5 olsun. Sonuçta vektörümüz $8001'i göstermektedir. Yukarıdaki şekliyle LDA komutunu 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ı sayfada olması gerektiğidir. Şu ana kadar öğrendiğimiz komutlardan ADC, CMP, LDA, SBC ve STA bu yöntemle adreslenebilirler. (Resim 2) Dolaylı-indeksli adresleme konusunu kapamadan önce yine bir örnek programı inceleyeceğiz. Bu program tüm ekran değerlerini ($0100'dan başlayan) $E000 adresine yazacaktır. Öncelikle sıfırıncı sayfada iki vektör belirleyelim: $FA/$FB ekran adreslerini ve $FC/$FD transfer edilecek adresleri ($E000 ve sonrası) göstersin. 1000 LDA #$00 1002 STA $FA 1004 STA $FC Bunlar iki vektörün alçak baytları idiler. Şimdi de yüksek baytlar: 1006 LDA #$04 1008 STA $FB 100A LDA #$E0 100C 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 100F ... Daha sonra Y-Registerine de sayacı (indeksi) yükleyelim: 1010 LDY #$00 Şimdi gerçek taşıma döngüsü başlayabilir: 1012 LDA (FA), Y 1014 STA (FC), Y 1016 DEY 1017 BNE $1012 Y-registeri ilk başta 0 değerine sahip olduğu için DEY komutuyla geri sayacaktır ve bu şekilde ilk blok taşınacaktır. İkinci blok için vektörlerin yüksek baytlarını arttıralım: 1019 INC $FB 101B INC $FD
Bye — LDA dolaylı X 2 AL 161 6 2 Bi 177 STA dolaylı X 2 Bı 129 6 - İz dolayıy 2 sı — dolayıx 2 61 87 6 NVZC nn ma ls NVZC — — 2" Et 226 6 dolayıy 2 Fİ NVZC CUP dolayıx — 2 — 188 6 NZC 6 NZC PHA — e me — ie ia PHP a 1 08 e. — G0 TSX a 1 BA 186 2 NZ TXS — 1 SA 154 2 -
Resim 2: Dolaylı olarak adreslenen komutlar
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 49
Bu işlemin dört defa tekrarlanması için her seferinde blok sayısını bir azaltmalıyız: 101D DEX 101E BNE $1012 Dolaylı-indeksli adresleme yönteminin daha birçok yararlı kullanım alanı mevcuttur. Yalnız bu yöntem mutlak-indeksli adreslemeye göre biraz daha yavaştır. İndeksli-dolaylı adresleme: Bu son adresleme aşağıdaki şekilde kullanılır. STA (FA, X) Burada vektörün değeri parantez işaretleri arasında belirtilmiştir. Yalnız burada vektör doğrudan doğruya $FA/$FB adres çifti değildir. İndeksli-dolaylı adreslemede vektör verilen değere X-registeri ilave edilerek bulunur. Eğer X-registeri $02 değerine sahip ise yukarıdaki örnekte vektör $FA + $02 = $FC ve $FB + $02 = $FD çifti olur. Sıfırıncı sayfadaki FA-FF adresleri şu değerlere sahip olsun: 00FA 00 04 FA/FB 00FC 00 00FD E0 FC/FD = E000 00FE 10 00FF 80 FE/FF = 8010 Bu şekilde bir vektör tablosu yaratırsak uygun X-registerini kullanarak örneğin akümülatör değerinin tablodaki değerlerden birine yazılmasını sağlayabiliriz. Bu adresleme yöntemi aslında oldukça faydalı olabilir, ancak sadece sıfırıncı sayfa ile kullanıldığı ve sıfırıncı sayfa da oldukça dar kapsamlı olduğu için, kullanım alanları sınırlıdır.
İndeksli-dolaylı adresleme şu komutlarla kullanılabilir: ADC, CMP, LDA ve STA Kursumuzun şu ana kadar olan bölümünün genelinde hemen hemen tüm makine dilleri için gerekli olan temel bilgileri edindik. Gelecek sayıdan itibaren C-64'ün işletim sistemindeki rutinlerden yararlanarak daha büyük program projelerine başlayacağız. Bu aylık