ASSEMBLER-4 ANIL GÜL Geçm sayıda değinmeye başladığımız 16 Bit işlemler ol- dukça başımızı ağrıtmıştı. Şimdi isterseniz biraz bu sayı karmaşasından uzaklaşalım ve basit bir Assembler prog- ramını incelemeye başlayalım. Yalnız burada yeni bir ko- mut karşımıza çıkmakta: BNE “Branch if Not Egual zero”” veya diğer bir deyişle “eğer sıfır değilse dallan'” bu komutun kısa bir açıkla- masıdır. Burada sadece statü registerindeki Z-göstergesi (Bu göstergeyi INX, DER ... komutlarını incelerken de- taylı olarak ele almıştık) **0” değerini almışsa bir dal- lanma yani istenen bir adrese sıçrama gerçekleşir. Aşağıda göreceğiniz programın akış diyagramı Resim 1'de gösterilmiştir. 1500 LDX # $FF 1502 LDY # $FF 1504 DEY 1505 BNE $1504 1507 DEX 1508 BNE $1502 1S0A BRK Programda ilk olarak X ve Y registerlerine başlangıç değerleri yüklenir. Bunu takip eden satırdaki DEY ko- mutu ise Y registerindeki başlangıç değerini bir indire- rek $FE olmasını sağlar. Daha sonra bilgisayar BNE ko- mutu ile karşılaştığı için statü refisterindeki Z gösterge- sine (Sıfır göstergesine) bakar. İlk etap sonunda doğal olarak burada sıfır değeri yer almayacağı için (Y registe- Komut — Adresleme — Byte — Kod Desimal Süre — Etkilediği NX Sihir T ee 'e R NE NY Sihir 1 68 o 500 UG NZ INC — Mutlak 9. ÇB —— 208 . vO C NZ DEX — Sifir T0 M 2 İNZ DEY — Sihir 1 / de — 9B DR U NZ DEC — Mutfak S İLüR İ Vö — G NZ SED — Sitir 1 Fa M 2 10D CLD — Sifir 1 08 216 — 2 0eD BNE — Relatif 2 DD 208 2 — ri sıfırdan farklı olduğu için değeri 1'dir) program tek- rar $1504 adresine döner. Burada Y registeri tekrar | azal- tılır ve tekrar BNE ile O değerine ulaşıp ulaşmadığı kont- rol edilir. Bu işlemler tam 255 defa tekrarlandıktan son- ra Z göstergesi O değerini alacaktır ve dolayısıyla prog- ram bir sonraki satıra atlama imkânını bulacaktır. Bir sonraki satırda ise bu sefer DEX ile X registeri | azaltı- lacak ve BNE ile sıfır değerini alıp almadığı kontrol edi- lecektir. İlk kontrolde X registeri sıfır olamayacağı için program tekrar $1502'ye dönecektir. Bu şekilde yukarı- da 255 defa yapılan azaltma işlemi tekrar yapılacak, fa- kat X registeri yine sıfır olmadığı için yukarıdaki döngü tam 255 defa tekrar tır. Sonuçta dış döngü 255 de- fa, iç döngü ise 65025 defa yapılacaktır. Yukarıda incelediğimiz programı yazarken bilgisaya- rın, BNE $1504 komutundan sonraki adres olarak $1508 yerine $1507 vermiş olması herhalde dikkatinizi çekmiş- tir. İlk bakışta BNE üç baytlık bir komut gibi gözükmek- tedir, fakat hafızada sadece iki bayt işgal etmiştir. Bu Branch komutlarının özel adresleme sisteminden kaynak- tadır. “Relatif adresleme”' olarak adlandırılan bu sistemi daha sonra diğer Branch komutları ile beraber ele Her ne kadar makine dili çok çok hızlı işlese de G 1500 ile örnek programımızı çalıştırdığımızda registerler gös- terilene dek bir miktar zaman geçecektir. Eğer daha uzun gecikmelere ihtiyaç duyulursa DEC komutu kullanılarak bir döngü daha ilave edilebilir.