64'ler sayı 35, sayfa 73

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 73

LIBRARIES AND DEVİCES adlı kitapta açıklanmıştır Herneyse geçelim konumuza programımızın(PROGRAM 1) konusu 2 bitplaneli yani biri background color olan 4 renkli bir ekran açmak. Bu ekran üçyüzyirmiye ikiyüzlük bir ekran. Eğer $70000 adresine bir bitmap resim yüklerseniz, ve hafıza silme rutinini kaldırırsanız, programı çalıştırdığınızdao dört renkli resmi ekranda göreceksiniz. Sol butona basarsanız; tekrar seka assembler ekrana dönersiniz. Şimdi programın satır satır açıklamasına geçelim. basla: Bu satır programın başlangıç labelidir. Programı çalıştırmak için jpasla komutunu vermelisiniz. a0-a6/d0-d7,-(a7) Bu komut, tüm sistem registerlerinde bulunan verileri stack registerine iter. (Bu operasyonları geçen sayıda öğrenmiştik). lea $70000,a0 Bu komutla $70000 adresi a0 registeriyle edilir. Yani bu komuttan sonra a0 registerinin değer'i yada poınt ettiği şey değiştirilinceye kadar $70000'le ilgili operasyonlarda a0 registeri kullanılır. lea $78000,a1 Yine bir üstteki komut gibi bu komutta af registerine $78000 değerini pornt ettirir. hizsıl: (a0)4 Bu satırise a0 dolatısıyla $70000 adresinde bir longword kadar veri temizler. Bu komuta her gelindiğinde a0 registerinin ettiği $70000 adresi bir artar. cmpa.l a0,af Bu satır a0'da bulunan adres ile at registerinde bulunan adresi karşılaştırır Sonuçları durum kodu registerindeki il-

Eğer a0 registerinde bulunan adres eşit değilse. hfzsıl labelina git. lea oldy,a3 Eğer a0 daki adres a1 deki adrese eşitse program bu satırdan devam eder. Bu satırda oldy değişkenini a3 registerine poınt ettirir. move.| $dff080,(a3) Sistem copperını oldy değişkenine koy. Programın işi bittiğinde tekrar okunacak. lea Kendi yaptığımız copper list'i a0 registeri point etsin. move.| a0,$dff080 a0 registerinde bulunan copperlist'i install eder. solbuton:btst Mouse solbutonu'nun basılıp basılmadığını kontrol eder. solbuton Eğer basılmamışsa solbutona git. lea oldy,a3 Basılmışsa burdan devam eder. Bu satır oldy değişkeninde bulunan sistem copperinı tekrar a3 registerine koyar. move.| (a3),$dff080 a3 te bulunan sistem copperını copper processora gönder. movem.! (a7)4,a0-a6/d0-d7 a7 stack registerde bulunan sistem verilerini tekrar registerlere it. d0 d0 registerini temizle. Tüm program sonuçlarını sil. rts Derleyiciye geri dön. newy: dec.w ,$0007 ,$00e2,$0000 de.w $00e4 ,$0007 ,$00e6,$1f40 de.w $0100 ,$2200 $0180 ,$0000 ,$0182 ,$0eca ,$0184 ,$0e00 ,$0186 ,$0a00

gili bite yazdırılır $ifff ,$iffe bne.| hfzsıl Üstteki liste copperlisttir. Copperin ba- se chıple di- PROGRAM 3 rekt kontağı öne ) olduğu için cmp.b #$kod,$bfec0i bağına: öt bne.s start yazmak ge- rts reksizdir. Buradaki kod yerine şu rakamlardan birini koyabilirsiniz. oldy: del O Sol shıft : $3F Oldy değiş- Sağ Shıft : $3D keni, sistem copperını Yek işken. Sol Amıga : $33 Bü Sağ Amıga : $31 nin uzunluğu Help :$41 birdöngword Reset atmak için şunu yazmanız yeterli. yani 32 bittir. jmp ende: program bit- ti.

Programın açıklaması bu kadar | © umarım yeterli ol- | lea buffy,a3 muştur. Prog- lea addys,a6 ramla ilgili bir so- desty,a5 run olursa dergi- | moveg #1,d2 den sorabilirsi- | here:

niz. Eğer birimizden birimiz ora- (33),d0

(a6),di

Şimdide sırada bir MOVE komutu örneği var. Bu değişkeni bulunan sayıyı addys değişkeninde bulunan sayıyı toplayıp, sonucu desty değişkenine yazar. (PROGRAM 2) 0: Programın başlangıç label'ı. Program buradan başlatılır. lea buffy,a3 a3 registeri buffy değişkenini point eder. lea addys,a6 a6 registeri addys registerini point eder. lea a5 registeri ise desty değişkenini point eder. moveq #1,d2 d2 veri registerine 1 değerini koyar. here: Döngünün başlangıç label'ı. move.l (a3),d0 a3'te bulunan değişkeni d0 veri registerine atar. move.l (a6),d1 a6'da bulunan değişkeni d1 veri registerine atar. add.l d1,d0 d0 registerinde bulunan değere d1 registerinde bulunan değeri ekle. Çıkan sonucu d0 registerine yaz. move.l d0,(a5) d0'da bulunan değeri a5 registerine at. dbra d2,here d2'nin değeri kadar, here label'ına git. Bu bir döngü oluşturur. Bu sayıyı arttırıp, değişkenlerde bulunan değerleri birden fazla yaparsak, birden fazla işlem yapmamız mümkün. buffy: dc.w 20 buffy değişkeni, word uzunluğunda ve 1 adet 20 değeri bulunuyor. addys: dc.w 12 addys değişkeni, word uzunluğunda ve 1 adet 12 değeri bulunuyor. desty: dc.w 0 desty değişkeni, word uzunluğunda ve 1 adet 0 değeri bulunuyor. Bu ayda bu kadar, bir sonraki sayıda görüşmek üzere hoşça kalın.

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