Commodore sayı 6, sayfa 57

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 57

FALAN BİTİRMEZ.

Bu yazımızın konusu FLAG'ler. Ama aslında İngilizce'de yanlış olarak adlandırılmış bir şey bu FLAG denen şey. FLAG, İngilizce'de “bayrak” demek. Aslında FLAG yalnızca iki değer alabilen bir değişken ya da iki durum alabilen bir cihaz olarak düşünülebilir. Herhalde, Amerikalılar bunu bayrağın kalkık ya da inik olmasına benzetmiş olacaklar. Ama aslında işlevi de göz önünde bulundurulursa, FLAG'in, bir şeyi unutmamak üzere bir yere attığınız “ÇENTİK” olarak karşılanması, çok daha yerinde olur.

Çentiğin atılmış olma durumuna SET durumu diyoruz; bu durumda ÇENTİK '1' değerini alır. Ya da kaldırılmış olma durumuna ise CLEAR, yani “temiz”... Bu durumda ise ÇENTİK '0' değerini alır. ÇENTİK için “bir değişken” dedik ama aslında, bunu bir bellek yerleşiminden ziyade, bir elektrik AÇMA/KAPAMA düğmesine benzetmek daha doğru olur. Çenti-

Basic Bilenler İçin Makine Dili-5

Biliyorum, tam bitirdi diye seviniyordunuz ki, işte yine karşınızdayım. Ama ne yapalım? Okurların makine diline olan taleplerinin ardı arkası kesilmiyor. Buralarda da, makine dilini bilen çok da, benim gibi lisan-ı münasiple, anlaşılır bir dille anlatabilecek başka kimse yok galiba. (Aman n'olur, bunun üzerine; yazdığın hiçbir şeyi anlamıyoruz, diye mektup yazıp beni rezil etmeyin.)

Flag Nedir? Bayrak mı, Çentik mi?

ğin açık olduğu, yani etkilendiği durum 1 ile, kapalı olduğu, yani etkilenmediği durum ise SIFIR ile belirtilir. C-64'te yedi tane ÇENTİK var. Bunlardan altı tanesine makine dilinden çeşitli komutlarla biz ulaşabiliriz, yedincisi sadece, mikroişlemcinin işine yarıyor. Çentiklerin tamamı Status Register (Durum Sicili) denilen yerdedir. Dolayısıyla, Status Register okunarak hepsi birden görülebilir. Şimdi sırayla durum sicilindeki bu çentiklerin neler olduğunu ve onları nasıl etkileyebileceğimizi gözden geçirelim.

Carry (elde) Flag:

Durum sicilinin 0 no.lu bitidir. Toplama veya diğer aritmetik işlemlerden sonra elde olup olmadığını gösterir. Bu çentiği sıfırlamak için CLC (Clear Carry kelimelerinin baş harflerinden), birlemek için ise SEC (Set Carry kelimelerinin baş harflerinden) komutları kullanılır.

Zero (sıfır) Flag:

Durum sicilinin 1 no.lu bitidir. Karşılaştırma ve çıkarma işlemle sonucun sıfır olup olmadığını gösterir. Doğrudan doğruya bu çentiğin durumunu değiştirecek bir komut yoktur. Dolayısıyla bu çentiğin değeri ancak dolaylı yolla, yani örneğin sonucu sıfır olan bir çıkarma işlemi yaptırarak değiştirilebilir.

Interrupt Disable

Flag (Müdahaleleri durdurma çentiği):

Durum sicilinin iki no.lu bitidir. Bu çentiğin 1 değerini alması, mikroişlemciye programın çalışması sırasında gelebilecek herhangi bir Interrupt talebini dikkate almaması gerektiğini gösterir. Bu SEI (SET Interrupt kelimelerinin baş harfleri) komutu ile sağlanır. Çentiği yeniden temizlemek, yani programı yeniden müdahale edilebilir bir hale getirmek için ise CLI (Clear Interrupt kelimelerinin baş harfleri) kullanılır.

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