Bu sayfadaki yazılar
Sayfanın metni
Sayfa 21
STA komutu ise “store A” anlamına gelir. Bu komut BASIC'deki POKE komutuna karşılıktır. LDA ile yüklediğiniz değeri STA ile istediğiniz adrese yerleştirebilirsiniz. LDA #$09 - A'ya #$09 değerini verir. STA $1000 - değerini adresine yerleştirir. Aynı işlemi BASIC'de şu şekilde yapabilirsiniz. POKE 4096,9 - Buradaki 4096, decimal (onluk sistem)'deki değeridir. Umarız ki bu yazılanlar size karmaşık gelmiyordur. Çünkü LDA ve STA komutlarının daha değişik şekillerini incelemeye başlıyoruz. Şimdi de aşağıdaki küçük programa bir göz atalım. LDA #$41 - A = 41 (onluk olarak 65) STA $0400 - $0400 = 41 ($0400 onluk olarak 1024'e eşittir. 1024 değeri ekranın başlangıç adresidir.) Yukarıdaki programda ekranın sol üst köşesine A harfi bastık. Aynı işlemi BASIC'de POKE 1024,65 ile yapabilirsiniz. Sizin de anladığınız gibi BASIC'deki POKE komutu assembler'da LDA ve STA komutuna karşılık gelir. Klavye üzerinde bulunan bütün karakterlerin, hafızada bir sayı değeri vardır. Bu sayı değerlerini kullanım kılavuzunda bulabilirsiniz. Şimdide diğer register'leri kullanarak kısa bir program yazalım:
LDX X — 00 DÖNGÜ: LDA $1000,X -> $1000'deki değeri A'ya
yükle STA $0400,X -> A'daki değeri S04004- X'e koy INX ->X' bir arttır
JMP DÖNGÜ - > (LDA $1000, X'e) DÖNGÜ'ye git.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 20
Tunç & Sinan
MAKİNE DİLİNİN PÜF NOKTALARI
Bu aydan itibaren sizlerle birlikte olup makine dilinin tüm inceliklerini tanıtmaya çalışacağız. Ancak bu tanıtım daha öncekiler gibi değil. Amacımız sadece assembler komutlarını öğretmek değil, bu dilin programlama mantığını ve basit programlar yazmanızı sağlamak. Evet hazırsanız başlıyoruz. Makine dilinde kullandığınız sayılar hexadecimal yani 16'lık sistemdeki sayılardır. Bu sayılar: 0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F şeklindedir. Örneğin $1000'i decimal (onluk) sistemde gösterelim
- 16 x 16 x 16 x 1 = 4096 - 16 x 16 x 2 = 512 - 16 x 5 = 80 - (4'ün 0, 1) x 4 = 4 * 4096 değerine eşittir.
Esasen bu çevirmeleri monitör programları kendi kendine yapabilirler. Commodore 64'ün assembler'ında 3 register mevcuttur. Register'lar bir değeri sakladığınız değişkenlerdir. Bu değişkenler A, X ve Y'dir.
Bu işlemlerden sonra size çok karmaşık gibi görünen bazı temel komutları inceleyelim. LDA VE STA KOMUTLARI: Assembler'da “LDA” komutu en çok kullanılan komutlardan biridir. Anlamı “load accumulator”dür. Bu komutla A register'ine yani accumulator'e herhangi bir değer verebilirsiniz. LDA #$50 - Bu örnekte A'ya 50 değeri verilmiştir. Örnekte “#” kullanılmasının nedeni yüklenen değerin direkt kullanılması içindir. LDA - Eğer buradaki gibi “#” kullanmazsanız makine A'ya yükleyeceği değeri $4000 adresinden alır. Yani $4000'deki değer A'ya yüklenir. Eğer $4000 adresinde #$80 varsa A değeri 80 olacaktır. Unutmadan şunu da ekleyelim; komutlarda kullanacağınız sayılar HEXADECIMAL yani 16'lık sistemdeki sayılardır. Bu sayıları kullandığınız monitör programı yardımıyla kolayca bulabilirsiniz.