Commodore sayı 46, sayfa 47

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 47

ve teybi bir kayıt cihazı olarak kabul etmezler. Bu gibi durumlarda kaset kullanıcıları için başka bir monitör programını denemekten başka çare kalmamaktadır. Makine dili programı kaydettikten sonra tekrar yüklerken monitör programına ihtiyacımız olmayacak. Sadece LOAD””,8,1 (veya kaset için ,1,1) yazdıktan sonra Basic başlangıcını normale döndürmek için NEW yazıp RETURN'e basmalısınız. Böylelikle biraz önce yazdığımız Basic programı da yükleyebiliriz. Assembler programını oluştururken A ve D'yi değişken olarak tutmuştuk. Bu nedenle isterseniz Basic programın satırındaki alçak ve yüksek baytları değiştirerek farklı diziler elde edebilirsiniz (1+2+3+4+5+6... gibi). Burada dikkat etmeniz gereken tek unsur ise S toplamının 32767'nin üstünde olmamasıdır. Yalnız hemen şunu belirtelim: Şu ana kadar makine dilinin gerekli temel özelliklerini öğrendik. Bu bilgiler doğrultusunda toplamın 32767'den daha büyük değerler almasını sağlayabilirsiniz. İşte size bir ipucu: Neden yukarıda iki bayt halinde yazdığımız sayılar üç veya daha fazla bayt ile gösterilmesin? Veya yukarıda belirttiğimiz maksimum sınır değeri aşılırsa makine dilinin hangi özelliği ortaya çıkar? (Statü registerinin V-Bayrağı ile ilgili bölüme bir göz atmanızı tavsiye ederiz.)

Branch komutları:

6510 mikroişlemcisi 8 farklı dallanma komutuna sahiptir. Biz bunlardan sadece BNE'yi tanıyoruz. Bu Branch (Branch — dallanma) komutlarının tümü statü registerinin bayraklarını kontrol etmektedir. BNE ve BEQ komutları Z-Bayrağına bakmaktadırlar. Eğer Z-Bayrağında sıfır değeri varsa BNE istenen adrese dallanmaktadır. BEQ (Branch if equal Zero — eğer sıfıra eşitse dallan) ise aynı işi Z-Bayrağı sıfıra eşit ise yapmaktadır. BCC ve BCS ise statü registerindeki C-Bayrağı yani Carry Bit'i ile ilgilenmektedirler. BCC'nin karşılığı “Branch if Carry Clear”, yani “eğer Carry boş ise dallan”dır. Carry Bit'inin “1” değerini aldığı durumlarda ise BCS (Branch if Carry set) komutu devreye girmektedir ve dallanmayı sağlamaktadır. Yukarıda sıraladıklarımız makine dilindeki en anlamlı ve en çok kullanılan dallanma komutlarıdır. Şunu rahatlıkla söyleyebiliriz ki, programcılar tarafından kullanılan dallanmaların %90'ı bu şekilde sağlanmaktadır. R.Mansfield Amerika'da oldukça satılan “Machine Language for Beginners” adlı kitabında okuyucuları programlarında BPL ve BMI komutlarını kesinlikle kullanmamalarını öğütlüyordu.

Aslında bu komutları kullanmamak için bir sebep yoktur. Birçok sorun BPL, BMI, BVS ve BVC ile kolaylıkla çözümlenmektedirler. Sayıların bilgisayar tarafından nasıl yorumlandığını bildikten ve bu dallanma komutlarının fonksiyonlarını kavradıktan sonra bunları rahatlıkla kullanabiliriz. BMI ve BPL (“Branch on Minus” — “Eğer negatif ise dallan” ve “Branch on Plus” — “Eğer pozitif ise dallan”) statü registerindeki N-Bayrağına göre hareket etmektedirler. Bu bayrak hakkında daha önce bazı bilgiler vermiştik. Şimdi kısaca tekrar ele alalım isterseniz. Eğer bir operasyonda 7. Bit'i 1 olan bir sayı ortaya çıkarsa bu bayrak da değerini almaktadır. Dolayısıyla bu Bit 8-Bit'lik bir sayının işaretidir. Eğer bu Bit “1” değerini alırsa BMI, aksi takdirde BPL ile bir dallanma gerçekleşir. BVS ve BVC komutları da statü registerindeki V-Bayrağı ile ilgilenmektedirler. Eğer bu bayrak “1” değerini alırsa BVS (Branch on Overflow Set) komutu kullanıldığında bir dallanma gerçekleşecektir. BVC ile ise V-Bayrağının 0 olduğu durumlarda dallanma sağlanır. Bu şekilde istersek hesap işlemlerinde kullanılan sayıların 16, 24 veya 32 Bit'lik olmaları sağlanabilir ve böylelikle her seferinde ortaya çıkabilecek en büyük ve en küçük değerleri bulmak için uğraşmayız. Yukarıda tanıdığımız tüm Branch komutları aynı BNE gibi 2 baytlık komutlardır ve özel bir adresleme yöntemi kullanmaktadırlar: Relatif Adresleme. Resim 2'de son öğrendiğimiz 11 komut hakkında bazı yararlı bilgiler yer almaktadır.

Tabii ki 9?

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