64'ler sayı 30, sayfa 31

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 31

DC.L ;(L-Longword) 4 byte uzunluğunda değişkenler. Örnek : Sayac: dc.b 0 ;sayac adında 1 byte uzunluğunda değişken tanımlar. Ad: dc.b — '6âler dergisi'; ad adında 1 byte uzunlukta değişken. Örnekten de anladığınız gibi değişkenin sonuna (:) işareti koymanız gereklidir. Değişken tanımlarını programın en altına yerleştirmeniz assemble işlemini hızlandırır. Ana döngüyü ise programın başına koymaya çalışın. Byte,Word ve Longword ifadeleriyle nız bir değişkeni kullanırken bu ifadeleri de uyumlu yapmaya dikkat edin.

Örnek: Doğru Yanlış Sayaç: dc.b 0 Sayaç: dc.b 0 Move.b #1, Sayaç Move.w #1, sayaç İkinci örnekte sayaç değişkenini byte olarak tanımlayıp word olarak işlem yapmamız hataya yol açar. DİKKAT! Bu hata assemble işlemi sırasında belirtilmez. Gördüğünüz gibi Move komutu Move.b, Move.w, Move.l olarak kullanılabilir. ADD VE SUB KOMUTLARI Add ve Sub komutları özet olarak toplama ve çıkarma işlemleri yapmaya yarar. Bu komutlar da byte, word ve longword olarak kullanılır.

Add.b #1,d0 ; değeri 1 arttırır. Add.b $ff,d0 ; d0'daki değeri $ff adresindeki değer kadar arttırır. Sub.b #i,di değeri 1 azaltır. Sub.b $fe,di ; d1'deki değeri $fe adresindeki

değer kadar azaltır. Bu komutlar tıpkı Move komutuna benziyor,öyle değil mi ? Bu arada şu do, d1 gibi şeylerin ne olduğunu açıklayalım. Seka'da bilgi depolayabileceğiniz 3 yer mevcuttur : 1- Bilgisayarın hafızası 2 - Değişkenler 3 - Registerler Registerler 17 tanedir ve üçe ayrılırlar : 1 - Address registers ( Adres registerleri) 2 - Data registers ( Data registerleri ) 3 - System registerleri Adres registerleri a0, a1, a2, a3, a4, a5, a6, a7'den oluşurlar. A7 registerinin bir başka adı da Stack Pointer (Yığın göstergeci)dir. Bu registeri ileriki bölümlerimizde daha detaylı olarak anlatacağız. JMP komutu: ( Jurmp - atla ) Bu komut BASIC'deki GO TO komutuyla eşdeğerdir.Makine dilinde satır numarası kullanılmadığı için JMP label şeklinde kullanılır. Örnek : imp geridön geridön: rts Program geridön label'ından devam edecektir.

Label tanımlarken tıpkı değişken tanımlarken olduğu gibi iki nokta kullanmanız zorunludur. JSR komutu: (Jump to Sub-Routine - alt rutine atla) JSR komutu BASIC'deki GO SUB komutuyla aynı işi yapar. RTS emrine rastladığında JSR'den bir sonraki komuta geçilerek program sürdürülür. RTS komutu: (Return to Sub-Routine - geri dön) Yukarıda anlatıldığı gibi BASIC'deki RETURN komutuyla aynı işi yapar. Örnek: jsr subi subi: rts CMP komutu: (Compare - karşılaştır) Sık kullanılan komutlardan birisidir. IF-THEN komutunun görevini yapar. Örnek: label: Add.b #1, d0 Cmp.b #20, d0 bne.l label Eğer d0 20 değerini almamışsa Compare biti 1 değerini alır. 20 ise 0 değerini programcıkta d0 registeri bir arttırılır. Compare ile 20 olup olmadığı kontrol edilir. Eğer 20 değilse label'e atlanır. BRANCH KOMUTLARI Branch (dallanma) komutları 16 tanedir. Ancak bunlardan sadece ikisi şimdilik işimize yarayacaktır. BEQ (branch if equal zero - eşitse dallan) BNE (branch if not equal zero - sıfıra eşit değilse dallan) Yukarıdaki örneğimizde 20 kadar artmasını istemiştik. THEN komutunun yerine geçen ve şimdi öğrendiğimiz iki komutla bu işi gerçekleştirebiliriz. arttır: add.b #1, d0 cmp.b #20, d0 bne arttır ; d0 20 değil ise arttır'a git. devam:

arttır: add.b cmp.b #20,dü beg arttırma ; 20 olmuşsa arttırma'ya git jmp arttır arttırma: programın devamı Bu aynı programın iki türlü yazılmış şeklidir. Bunu BASIC olarak yazsaydık : arttır: IF a<20 then goto arttır Şeklinde bir program elde ederdik. Bu sayıda öğrendiğimiz komutları toparlarsak, 1- Seka editör komutları 2 - Move komutu, değişken ve label tanimlama, Add ve Sub komutları, Cmp komutu ve iki

; olmamışsa devam

Klavyeyle gezinmek için ← ve → tuşları.