1 Mart 1987 Tarihli Commodore Gazetesi Sayfa 22

1 Mart 1987 tarihli Commodore Gazetesi Sayfa 22
Metin içeriği (otomatik olarak oluşturulmuştur)

Şimdi hafıza ve register'leri bir ek- silten komutları görelim. DEX Bu komut X-register'inin içeriğini bir eksiltir. Sonuca göre N- ve Z-flag'- ları etkilenir. Diyelim ki X-register'i- nin içeriği $00'dı ve biz eksilttik. Bu durumda $FF elde ederiz ve hiçbir şe- kilde Carry flag'ı etkilenmez. BA- SIC'te aynı işi yapan satır şöyle ola- caktır. X-X-I Tabii negatif sayı diye bir şey söz- konusu olmayacaktır. DEY Bu komut Y-register'inin içeriğini bir eksiltir. DEX komutu için söyle- nenler aynen geçerlidir. BASIC'te ay- nı işi yapan satır: YaYA Burada da $00'dan $FF'e geçeriz. DEC Bu komut belli bir adresteki hafıza biriminin içeriğini bir eksiltmeye ya- rar. Bu işlem sırasında akümülatör'- ün içeriği kesinlikle etkilenmez. INC komutu için söylenenler aynen geçer- lidir. Aşağıda komutları, adresleme tip- lerini ve komut kodlarını bulacaksı- nız. Komut Komut kodu INX $E8 INY $CA DEX $CA DEY $88 Adresleme tipi INC DEC absolut $CE absolut X-indeksli $FE $DE 0. sayfa X-indeks $F6 $D6 10. Flag'ları Değiştirme Komutları Flag'ların durumuna göre progra- mın akışını değiştiren komutlardan başka, kullanıcının flag'ları istediği bi- çimde değiştirmesini sağlayan komut- lar da mevcuttur. Daha evvel de ör- yuumu aaT neklerini gördüğümüz gibi; toplama ve çıkarma işlemlerinden önce bu tip komutları kullanıp C-flag'ının duru- mu belirlenmelidir. Bu gruptaki ko- mutlar operand'a ihtiyaç göstermez- ler ve bir Byte'a sığarlar. Carry flag'ı SEC (set carry”) komutu ile C- flag'ı yakılır. CLC (“clear carry') ko- mutu ile de C-İlag'ı söndürülür. SEC komutu her çıkartma işlemin- den önce, CLC komutu ise her topla- ma işleminden önce kullanılmalıdır, yoksa yanlış sonuçlar elde ederiz. Ta- bii birkaç byte genişliğindeki bilgileri toplayıp, çıkarıyorsak ara işlemlerde C-flag'ı ile oynamayın, çünkü C- flag'ı, byte'ların birbirine birleşmesi sırasında gerekli bilgileri içerir. Carry flag'ı yalnızca ilk toplama veya çıkar- ma işleminden önce belirlenmelidir. Decimal flag'ı Bu flag toplama ve çıkarma işlem- lerinin bildiğimiz ikili sistemde mi, yoksa ikili kodlanmış ondalık sistem- de mi (binary Coded Decimals, BCD) yapılacağını belirler. BCD modunda işlem yapabilmek için C-flag'ının ya- nık olması gerekir. Konuya yeterince hakim olmadıkça bu modu kullanma- nızı pek tavsiye etmeyiz. Daha ileride yayınlayacağımız. 'PROGRAMLA- MA TEKNİKLERİ' bölümünde, bu modun detaylarını açıklayıp örnek bir program geliştireceğiz. O zamana ka- dar sabır!.. D-flag'ını yakmak için SED ('set decimal') komutunu, bu flag'ı söndürmek için ise CLD (“clear decimal') komutunu kullanacağız. İnterrupt flag'ı Interrupt denilen olay, programın yürürken, herhangi bir (hardware) do- nanımın gönderdiği sinyal yüzünden kesilmesi, özel bir program parçasının yürütülmesi, daha sonra da kesilmiş olan programa hiçbir şey yokmuş gi- bi olduğu gibi geri dönmesidir. Aslın- da yukarıdaki uzun cümle olayın çok basit bir özetidir. Daha ileride bu ola- ya çok daha detaylı olarak eğileceğiz. İnterrupt flag'ı interrupt'a izin veri- lip verilmediğini belirler. 1-flag'ını yakmak için SEI ('set interrupt disab- le') komutunu kullanırız ve durum da interrupt'a izin verilmez. Inter- rupt'a tekrar izin vermek için |-flag'ı söndürülmelidir. Bunun için CLI (clear interrupt disable') komutu kul- lanılır. Overflow flag'ı Overflow flag'ı sadece söndürüle- biliyor (Çünkü yakmanın pek bir an- lamı yok). Bu işi yapan komut ise CLV Çclear overflow'). COMMO- DORE 64'ümüzün ana işlem ünitesi 6510'da bulunmayan, fakat 6502 ana işlem ünitesinde bulunan bir özellik- ten bahsedelim. Bu flag aynı zaman- da ana işlem ünitesinin bir bacağına uygulanan bir sinyal tarafından da ya- kılabiliyor. Yani programdan bağım- sız da etkilenebiliyor bu flag. Tekrar yakılabilmesi için söndürülmesi gerek- tiğinde CLV komutu kullanılıyor. Bil- hassa 1541 Disk-Drive'de çok kulla- nılan bu özelliğe yazımızın ilerleyen bölümleriyle değineceğiz. Aşağıdaki tabloda komutları ve ko- mut kodlarını bulacaksınız. Komut Komut kodu CLC $18 SEC $38 CLD $D8 SED $F8 CLI $58 SEl 578 GEV $BS 11. Bit Kaydırma Komutları 6510 ana işlem ünitemizin yürüt- tüğü başka bir komut grubu daha var ki, bu gruptaki komutlara karşılık ge- len BASIC komutları yok, bu grup bit kaydırma komutlarını içeriyor. Söz- konusu işlem sırasında akümülatör'- ün, ya da adreslenen hafıza biriminin bit yapısı bir bit sağa veya sola kay- dırıliyor. Şayet kaydırılan şey akümü- latör ise, akü adreslemesinden söz edi- yoruz. Bu gruptaki komutlar adresle- me tipine göre bir, iki, ya da üç Byte uzunluğunda olabiliyor. Şayet adres- leme tipi bir hafıza elemanını göste- riyorsa, aynen İNC ve DEC komut- larındaki oku-değiştir-yaz (Read- Modify-Write) işlemleriyle komut yü- rütülür. Bu işlem sırasında akümüla- tör'ün içeriği korunacaktır. ASL ASİ anlam olarak “arithmetic shift left'in baş harflerinden oluşmuş bir kı-

Bu sayıdan diğer sayfalar: