Commodore sayı 46, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Program: Aritmetik dizinin toplamı,

T

Ne X-Reg

İs m

Carry'nin silinmesi

16-Bit-Toplama

Toplam * son eleman

Yeni

Carry'nin silinmesi

16 Bit - Toplama

Son eleman * D farkı

Yeni son Eleman

X-Register - 1

A: Programımızın akış diyagramı.

Birçoğumuz SYS komutunu oldukça sık kullanırız. Örneğin “POKE 214,Satır No.” ve “POKE 211,Sütun No.” komutlarının ardından yazacağımız “SYS 58640” ile kursorun pozisyonunu belirleyebiliriz. Aslında burada yaptığımız iş bilgisayarın belleğinde bulunan makine dili bir programı işletmekten başka bir şey değildir. Burada 58640 programın başlangıç adresidir ve SYS'yi Basic'teki GOTO komutunun bir benzeri olarak düşünebiliriz. Dolayısıyla SYS komutunu kullanarak Assembler programları çalıştırmak pek zor değildir. Esas sorun Assembler programın kullanacağı parametrelerin kullanılmasında yatmaktadır. Bu sorunun en basit ve en yavaş çözümü değerlerin Alçak ve Yüksek Baytlar şeklinde belli adreslere POKE edilmesi ve daha sonra makine dilinde yazılmış programca okunmasıdır. Şimdi örneğimizde bu yöntemi kullanacağız.

Örnek programımızda birçoğumuzun yakından tanıdığı bir aritmetik diziyi ele alacağız. Eğer “A” ilk eleman, “D” fark ve “N” ise eleman sayısını belirtirse bu tür bir dizinin toplamı şu şekilde olur:

*D)

İlk on doğal sayının toplamı yukarıdaki diziye bir örnektir:

Szl14243444546474849-410

Burada 1 ve N=10'dur. Yukarıdaki örnekte S toplamının 55 olduğunu kolaylıkla hesaplayabiliriz, fakat eleman sayısı çoğaldığında iş oldukça yorucu bir hale gelir. Her ne kadar bu işi yapabilen bir formül (Gauss Formülü) mevcut ise de biz burada herhangi bir formül kullanmayacağız. Programımız kısaca 1'den N'e kadar olan tamsayıları toplayıp sonucu bize bildirecek. Bu sonuç 16-Bit bir sayı olduğu için 32767'den büyük olamaz. Dolayısıyla N için sadece 1 ile 255 arası değerler sözkonusudur (Neden 255 olduğunu program tamamlanınca deneyerek görebilirsiniz). N sadece 1 bayta ihtiyaç duyduğu için bunu $1300'e kaydedebiliriz. A ve D'nin değerleri 1'dir, fakat bunlar da ileride programda değişiklik yapılabilmesi için 16-Bit'lik sayılar olarak hafızaya kaydedilir. “A” değişkeni alçak ve yüksek bayt şeklinde $1310/1311'de, “D” değişkeni ise aynı şekilde $1320/1321'de saklanır. Sonuç ise $1400/1401'de yer alacaktır. Makine dili programımızın ise başlangıç adresi de $1200'dür.

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