Commodore sayı 44, sayfa 21

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 21

Makine dili kursumuzun geçen ayki bölümünde INX ve DEX komutlarını kullanarak bir döngünün nasıl yapıldığını, bu ay ise 8 ve 16 Bit hesap işlemlerini daha detaylı olarak ele alacağız. Bu işlemler oldukça farklı bir mantığa dayandığı için ilk başta öğrenilmesi zor ve sıkıcı gelebilir. Yalnız şunu unutmayın ki, bu tür işlemler Assembler'da program yazarken çok sık kullanılır. Bir müddet sonra bunların görüldüğü kadar karışık olmadığını anlayacaksınız. Şimdi kaldığımız yerden dediğimiz gibi X ve Y registerleri 0 ile 255 arası değerler alabilmekteydi, zira en büyük 8 Bit sayı 255'tir. $FF (desimal 255) (1) 0000 0000 (desimal 256)

Bu işlemde de görüldüğü gibi 255'ten sonra kullanılan bayt sıfır değerini alır, çünkü 9. Bit devreye girmiştir. Bilgisayarın bu durumda ne yaptığını görmek için aşağıdaki işlemleri

1500 LDA & Ol 1502 BRK

satırını girdiğimizde tüm registerlerin o anki durumu ekrana gelir. AC XR YR N V — BD 01 00 00 0 1 1 0

01 değeri yer almaktadır. Şimdi X = $FF (- 255) değerini verelim. Bunun için programda ufak bir değişiklik yapmamız gerekmektedir.

1500 LDA # $01 1502 LOX # $FF 1504 BRK

ANIL GÜL

Tekrar G1500 yazdığımızda ekranda şu satırlar gözükür:

AC XR YR N V — 01 FF 00 1 0 1 100090 X-Registerinde beklenildiği gibi $FF değeri bulunmaktadır, fakat nedense statü registerindeki N-göstergesi (negatif sayıları gösteren gösterge) de 1 değerini almıştır. Şimdi yine ufak bir değişiklikle X-Registerindeki 255 değerini arttıralım. 1504 INX 1505 BRK

G1500 ile programı çalıştırdığımızda aşağıdaki register gösterimi ile karşılaşırız:

AC XR YR N V — 01 00 0 001 10010 Tahmin ettiğiniz gibi X-Registeri tamamen dolduktan sonra tekrar “0” değerini almıştır. N-göstergesi eski değeri olan sıfırı alırken diğer taraftan Z-göstergesi “1” olmuştur. Eğer bir önceki işlemin sonucu sıfır ise bu gösterge her seferinde “1” değerini alır.

1505 INX 1506 BRK

Yukarıdaki değişikliği yapıp G1500 ile programı çalıştırdığımızda registerler şu şekle girecektir: AC XR YR N V — BD I Z C 01 01 00 0 0 1 10000

Yukarıdaki işlemleri Y-Registeri içinde yaparsak yine aynı sonucu alırız. Yalnız bu registeri kullanırken bazı komutları uygun şekilde değiştirmeliyiz:

21

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