SELAM KUDUCUK
-->lda komutu:Aküye sabit bir sayıyı veya adresteki değeri yükle. anlamina geliyorsa
LDA #$00 adresinde o sirada hangi deger vardi? sta yazmadan nasil oraya veri koyulmustu? yoksa makina acilinca otomatikman mi gerceklesiyordu? sonrada STA $D011 denince akudeki degeri yazinca nasil ekran gorunmez oldu? akunun o siradaki degeri bir anahtar acma kapama vazifesimi goruyor? ornegin akudeki deger sifir ise ekran ayni kalsin ama akudeki deger bir ise ekrani gorunmez yap gibi...<--
birazda ben döktüreyim
Asm ile uğraşmak bence iki aşamalıdır.
1-Önce komutlar ne işe yarar, nasıl kullanılır vs.. gibi bir ön bilgi gerekir. Buna teorik bilgi diyebiliriz.
2-Daha sonra bu bilgileri bir sistem üzerinde kullanmak gerekir. Buna ise pratik uygulama veya programcılık diyebiliriz.
Bir merdivenin en üst basamağına hoop diye çıkılmasının mümkün olmadığı gibi asm programcılığıda ufaktan başlar ve yeter artık dediğinde de biter. Teorik bilgi
tek başına yeterli değildir. Mutlaka uygulama gerekir. Bunun içinde asm yazacağın sistemi -yani C64'ü- az çok tanıman lazımdır. Fazla edebiyat yapmadan kafana takılan sorulara yanıt vermeye çalışayım.
LDA #$00 adresinde o sirada hangi deger vardi? Sanırım burada bir yanlışlık var. Aslında register demen gerekirdi. Register(ler)de o an için hangi değer olduğu tamamen o anda çalışmakta olan bir programa bağlıdır. Yani belirsizdir denilebilir. Eğer STA komutundan hemen önce LDA kullanmazsan AKüde o an için bulunan değeri adrese yazmış olursun. Bu değer ise 0 ile 255 arasında bir sayı olabilir. Asm yazarken bütün değerleri sen belirlersin ve işlem yaparsın.
STA $D011 denince akudeki degeri yazinca nasil ekran gorunmez oldu? akunun o siradaki degeri bir anahtar acma kapama vazifesimi goruyor? Ekranın görünmez olması C64'te görüntü işlerinden sorumlu VIC denilen çip'in bir registeri olan $D011 adresinden kaynaklanıyor. Aküdeki o sıradaki değerinin bir anahtar gibi olması söz konusu değil. Çünkü $D011 adresinin bitleri Y ekseninde scroll, rasterin 9. biti, ekranın 24/25 satır olarak seçilmesi gibi işleri yapar. Ama en basit olarak ekranın görünmez yapılması için $D011'e #$00 yazılması yeterlidir.
Registerlerdeki değerler eğer bir adrese yazılmayacaksa veya üzerinde işlem yapılıp kullanılmayacaksa önemli değildir. Ekranın açık kalması için $D011 adresine hiç bir sayı yazmazsın. Yoksa o sırada aküde 0 olmuş 100 olmuş önemli değil.
Umarım yardımcı olabilmişimdir.