Bu sayfadaki yazılar
Sayfanın metni
Sayfa 23
.WORD : .BYTE komutu gibidir. Fakat tanımlanan değer hafızada LOW BYTE - HIGH BYTE olarak saklanır. .ASC “DİZİ” : Tırnak içinde verilen ifadenin karakterlerinin ASCII kodları hafızaya yerleştirilir. .TEXT “DİZİ”: .ASC komutu gibidir, fakat karakterlerin kodu CBM-ASCII’ye çevrilir. .SCRL “DİZİ” : .TEXT komutu gibidir, fakat karakterlerin kodu “küçük harf / büyük harf ” karakter seti kullanıldığı zamanki C64 ekran koduna çevrilir. .SCRU “DİZİ” : .SCRL komutu gibidir, fakat karakterlerin kodu “büyük harf / grafik “ karakter seti kullanıldığı zamanki C64 ekran koduna çevrilir. Birazdan açıklayacağım komutların çok işinize yarayacağından eminim. .INCLUDE asmdosyası : Daha önce yazmış olduğunuz .ASM uzantılı dosyaları bu komut ile yazmakta olduğunuz programa dahil edebilirsiniz. Fakat bir şeye dikkat edin. .INCLUDE komutuyla yüklediğiniz dosya ile yazmakta olduğunuz programda aynı isimlerin OLMAMASI gerekir. Mesela yazmakta olduğunuz programda TEMP isimli bir etiket olsun. Eğer yüklediğiniz dosyada da TEMP varsa C64ASM derleme sırasında hata verecektir. Ayrıca .INCLUDE ettiğiniz dosyaların yazmakta olduğunuz programdaki yerlerine dikkat etmeniz gerekmektedir. .INCBIN dosyaadı : Bu komut ile daha önceden derlenerek oluşturulmuş olan bir PRG, T64 veya P00 uzantılı bir dosya, program derlenirken eklenir. .END : Bu komut ise yazdığınız programın sona erdiğini C64ASM programına bildirir. Buraya kadar açıkladğım komutların haricinde yazmamış olduğum komutlar ve aritmetiksel işlemler bulunmaktadır. Eğer ingilizce biliyorsanız programı internetten indirip, klasörde bulunan c64asm.doc isimli dosyayı okuyabilirsiniz. Bu sayının program köşesindeki program C64ASM ile yazılmıştır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 22
* : (Çarpı işareti) Program Counter’in o anki değeri.Bu komutla programın başlangıç adresini tanımlarsınız. Bu komutu isterseniz birden fazla kullanabilirsiniz. Daha iyi anlaşılması için aşağıdaki örneklere bakabilirsiniz. * = $0900 ; Programın başlangıç adresi olarak $0900 adresi tanımlanmıştır. * = 49152 ; “ “ “ “ 49152 “ “ JMP * ; Bu komutla bilgisayar sonsuz döngüye girer * = $1000 ; Programın başlangıç adresi $1000 (4096) LDA TABLO ; Komut .......................... ; Komut .......................... ; Komut * = $4000 ; Tablonun başlangıç adresi $4000 (16384) TABLO .BYTE 0,1,12,33 .byte 109,22,4,59 Aşağıdaki işlemler program yazarken sık sık kullanacağınız işlemlerdir. < ; İki baytlık bir değişkenin değerinin veya bir tablonun, yazının bulunduğu adresin veya program içindeki bir yerin alçak baytı. > ; Yukarıdaki açıklamanın yüksek baytı için olan şekli.
ÖRNEK 1: ÖRNEK 2: ÖRNEK 3: sei lda #<yazı lda #<tablo lda #<irq ldy #>yazı ldx #>tablo ldx #>irq jsr $ab1e sta store sta $0314 ........................ stx store+1 stx $0315 ........................ ......................... cli ........................ jmp * rts irq inc $d019 yazı .text “c64” tablo =$3800 lda $d012 .byte 0 store .byte 0, 0 ....................... ....................... ........................
Şimdi sırayla örnekleri açıklayalım: İlk örnekte “irq” etiketiyle başlayan program bölümünün adresinin “alçak” baytı “lda #<irq” komutuyla okunuyor ve “sta $0314” komutuyla ilgili adrese yazılıyor. Aynı şekilde “irq” ‘nın yüksek baytı için ldx ve stx komutları kullanılıyor. İkinci örnekte benzer bir şekilde “c64” yazısı için yapılıyor fakat bir “jsr” komutu için kullanılıyor. Son örnek biraz farklıdır. Bu sefer “tablo” ‘nun adresi değil, tablonun değeri olarak tanımlanan bir sayı A ve X registerleri tarafından LOW-HIGH bayt şeklinde okunup (A=$00 ve X=$38’dir) “store” nin olduğu adreslere kopyalanıyor. Program yazarken bu şekildeki yazım şekillerini sık sık kullanacaksınız. + ; Toplama işlemi - ; Çıkarma işlemi * ; Çarpma işlemi / ; Bölme işlemi ÖZEL KOMUTLAR : Bu bölümde assembler komutları olmayan bazı özel komutları açıklayacağım. .BYTE : (BYTE LİSTESİ) Bu komut ile program içinde kullanacağız değişkenler için gerekli değerleri tanımlayabilirsiniz.