Program Döküm Eki sayı 13, sayfa 5

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 5

ok işaretini koyacaksınız.

Eğer ikilik sistemin kullanılamaması sizi rahatsız ediyorsa, bunu toplama ve üs alma işlemleri ile kolayca gerçekleştirebilirsiniz. Örneğin, LDA #%00101 satır geçersizdir. Ancak bunun yerine, LDA #2↑0+2↑2 yazabilirsiniz.

Sıra geldi değişken kullanımına. Label'ların dışında, iki tür değişken kullanılabilir. Genel ve yerel değişkenler. Birazdan göreceğimiz gibi, bir tür alt-program sayabileceğimiz makro kullanımı sırasında, o makronun içinde kullanacağımız tüm değişkenler ve label'lar o makro içinde yerel (local) sayılacaklardır. Bunun en önemli sonucu, programın ana kısmında ve makroların içinde aynı isimli değişkenleri veya label'leri kullanırsanız bile, hiçbirinin birbirine karışmamasıdır. Bir değişkenin değeri bir makroda 5, bir diğerinde 2, ana programda da 8 olabilir. Eğer o değişkenin tüm program içinde geçerli bir değere sahip olmasını istiyorsanız, onu genel (global) değişken olarak tanımlamanız gerekir. Bunun nasıl yapıldığını da birazdan göreceğiz. Değişken isimlerinin istediğiniz uzunlukta olabileceğini, tüm karakterlerinin önemli olduğunu, ilk karakterlerinin bir harf olması gerektiğini, geri kalanlarının da harf veya sayı olabileceğini belirterek bu konuyu da kapatalım.

Nihayet geldik assembler komutlarına:

.BA adres

Obje kodu hafızada, bu komutun olduğu satırdan sonraki satırlar için, verilen adresten sonraya yerleştirilir. Adres, desimal veya hexadesimal olabilir. Bir programda birden fazla BA olabilir. Bu durumda, assembler kodunuzun değişik bölümleri değişik adreslerde assemble edilir. Kaset kullanıcıları için verdiğimiz programa bakın.

GL değişken=değer

Adı verilen değişken, desimal veya hexadesimal olarak belirtilen veya matematiksel terim olarak verilen değere sahip olur. Aynı zamanda, değişken genel (global) tanımlanmış olursunuz. Değerin 0-65535 ($0000-$FFFF) arasında olması gerekir.

.EQ değişken=değer

GL gibidir, ancak değişken yereldir (local).

.BY byte1, byte2, byte3......

Verilen byte değerleri hafızaya sıralı yerleştirilir. Her bir byte $00-$FF (0-255) arası değerde olmalıdır. Örneğin:

.WO adres1, adres2

Bildiğiniz veya öğreneceğiniz gibi, 6510 prozesörü bir adresi lo/hi denen formatta saklar. Diyelim ki adresiniz $7A8E. Eğer bu adres hafıza içinde arka arkaya gelen iki byte'a yerleştirilecekse, önce $8E, sonra da $7A yerleşir. Yani önce küçük byte, sonra da büyük byte. .WO komutu, arkasından gelen 0-65535 arası değerlerdeki sayıları sırasıyla bu formata göre hafızaya yerleştirir. Örneğin:

.TX "yazı"

Yazıyı oluşturan harflerin ASCII kodlarını hafızaya yerleştirir.

.OB "dosya-adı,P,W"

Eğer oluşan obje kodunun bir program halinde diskete gönderilmesini istiyorsanız, programınızın en başında bu satır bulunmalı. Kaset kullanıcıları bu komutu kullanamaz.

.EN

Eğer .OB kullanmışsanız, programın en son satırında .EN vererek dosyayı kapatmalısınız. Eğer obje kodu üretilirken bir hata olmuş ve obje kodu üretimi durmuş ve dolayısıyla da dosya açık kalmışsa, CLOSE 14 ile elden de kapatabilirsiniz.

.LI dosya-no,araç-no,ikincil-adres

Obje kodu üretilirken, bu komuttan sonra gelen tüm satırlar, verilen parametrelere göre formatlı bir şekilde gönderilir. Örneğin:

.SY dosya-no,araç-no,ikincil-adres

Obje kodu üretildikten sonra, kullanılan sembollerin alfabetik sırayla, verilen parametrelere göre basımını sağlar. Örneğin:

.ST

Assembler, obje kodu üretirken bu komutu görürse üretimi durdurur.

.DP k0,k1,k2,k3

.LI komutu sonucunda basılacak dökümün formatını ayarlar.

k0 : Assembler ve makine dili komutlarının başlayacağı kolon

k1 : Noktalı virgülün ve açıklamaların başlayacağı kolon

k2 : Kağıdın veya ekranın solunda bırakılacak boş kolon sayısı

k3 : SY komutu verilmişse, sembollerin basımının başlayacağı kolon

Genel amaçlı assembler komutları bu kadar, 10 tane daha var. Onları da birazdan göreceğiz.

Zincirleme Assemble

SUPER ASSEMBLER ile birden fazla assembler kodunu arka arkaya otomatik olarak objeye çevirebilirsiniz. Bu iş için iki assembler kodumuz var:

.AP "dosya-adı"

O anda kullanılan assembler kodunun objeye çevrilmesi bitince, verilen isimli dosya doldurulur ve onun objeye çevrilmesiyle devam edilir.

.CO değişken1,değişken2...

Listede yer alan tüm değişken ve/veya label'lar ve .CO komutundan önce gelen tüm satırlar korunur. .AP ile doldurulan program, bu satırlardan sonrasına yerleşir. Böylece programın başında tanımlayacağınız makro ve değişkenler ikinci programda da geçmiş olacaktır. Bu arada dikkat etmeniz gereken şey, .CO komutundan önceki satırlarda .BA komutu ile ana programın parçalarının olmaması gerektiğidir. En ideal durumda sadece makro tanımlamalarının olması gerekir.

Şartlı Assemble

IF..THEN..ELSE veya GOTO komutlarının benzerlerini kullanarak yazılan programlar, şartlı assemble'ye örnektirler. Bu komutlara göre, assembler kodunun bir bölümü veya bir başka bölümü objeye çevrilir. Veya belli bir bölüm birkaç kez arka arkaya objeye çevrilir. Diyelim ki bir komutun obje kodunda 50 kere arka arkaya gelmesi gerekiyor. Bunun için 50 satır yazmak yerine, bir sayaç

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