Commodore sayı 12, sayfa 48

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 48

Adresleme tipi LDA LDX LDY direkt $A9 $A2 $A0 absolut $AD $AE $AC sıfırıncı sayfa $A5 $A6 X-indeksli $B5 — $BC Y-indeksli $B9 $BE — 0'cı sayfa X-indeks — — $B4 0'cı sayfa Y-indeks — — — — indirekt indeksli sı — — indeksli indirekt

2. Saklama Komutları

Saklama komutları, yükleme komutlarının tam tersi işlemi yaparlar. Bu komutlar yardımıyla bir register'in içeriğini hafızanın belli bir adresine yazabiliriz. Bu işi yapan komutlar şunlardır:

STA STX STY larınız değişmez. Saklama komutundan önce ne ise, aynı şeklini korur. Aşağıdaki listede bütün komut kodlarını ve geçerli adresleme tiplerini bulacaksınız.

Adresleme tipi STA STX STY absolut $8D $8E $8C sıfırıncı sayfa — $86 X-indeksli $9D $9E $9C Y-indeksli $99 — — 0. sayfa X-indeksli — — — $94 0. sayfa Y-indeksli — — — — indirekt indeksli sı — indeksli indirekt sı —

Yapılan işlemleri BASIC'te, POKE komutunu kullanarak yapacağız. Bu komut hafızadaki herhangi bir elemana ulaşıp onun içeriğini değiştirmemizi sağlar. Adresleme tipleri elemanın adresini elde ederken uygulanan farklı yöntemleri gösterir. Birkaç örnek verelim:

Bu komutlar görüldüğü gibi akümülatör'ün (aynı şekilde X-register'inin, ya da Y-register'inin) içeriğini hafızanın belli bir adresindeki elemanda saklamamıza yarar. Kullanabileceğimiz adresleme tipleri, tek eksik dışında, yükleme komutları ile aynıdır. Bu eksik adresleme tipi tabii ki direkt adreslemedir. Çünkü bu adresleme tipinde belli bir adres belirtilmemektedir. Saklama sırasında saklanan register'in içeriği değişmediği için (ya da ana işlem ünitesinin içinde hiçbir değişiklik olmadığı için) hiçbir flag etkilenmez. Bilhassa ilk makine dili programları yazarken çok düşülen bu hataya karşı uyaralım dedik: DİKKAT! Sakladığınız değere göre flag-

STA $8000 POKE $8000 STA $C020,Y POKE YA $C020 STY $FI - $OOF1

diğini bir kere daha hatırlatalım. Özetlersek ilk iki bölümde ana işlem ünitesinin en önemli iki komut grubunu gördük. Bu komutlar ana işlem ünitesinin, bilgisayarın hafıza birimleri ile bilgi alış verişini sağlarlar. Bütün programlarda en yoğun kullanılan komut grupları bunlardır.

3. Ana İşlem Ünitesinin İçinde Bilgi Transferi

Şimdiye kadar, ana işlem ünitesinin registerlerinden hafızaya; hafızadan ana işlem ünitesinin registerlerine bilgi transferinin nasıl yapılacağını gördük. Peki ana işlem ünitesinin bir registerinden bir diğerine bilgiyi nasıl göndereceğiz? Bunun için; herhalde, önce hafızaya yazıp sonra hafızadan okumaktan daha kolay bir yöntem olmalı. Evet var, bunlar bir iki basit ve özel komuttan oluşan bir grup. Bu komutlarla, mesela akümülatör'ün içeriğini X-register'ine kopyalayabilirsiniz veya tam tersi... Burada görüldüğü gibi iki registerin belirlenmesi gerekir. Bunlardan birincisi kaynak register'i (bilgi bu register'den çıkacak), diğeri de hedef register'i (bilgi bu register'e ulaşacak) olacaktır. Yapılan işlem ise kaynak register'inin, içeriği bozulmadan, hedef register'inde bir kopyasının oluşturulmasıdır. Bütün transfer komutları bir byte uzunluktadır ve hiçbir operand'a ihtiyaç göstermezler. Yapılacak işlem oldukça açık ve basittir. Bundan başka bu komutlarla yapılan bilgi transferi diğer komutlara göre çok daha hızlı yürür. Şimdi bu komutları tek tek görelim. Tabii bu arada daha anlaşılır olması açısından, aynı işi yapan BASIC'te yazılmış satırlarımızı unutmadık.

TAX

A

Akümülatör'ün içeriği X-register'ine kopya edilir. Z- ve N-flag'ları etkilenir. Akümülatör'ün içeriği değişmez.

Saklama komutları da yükleme komutları gibi adresleme tiplerine göre 2 veya 3 Byte uzunluğunda olabilirler. Yükleme komutları için belirttiğimiz tüm kurallar aynen geçerlidir. Tabii flag'ların yapılan işlemden etkilenme-

TXA

TAX Bu komut yukarıdakinin tam tersi işlemi yapar. Bilgi akışının yönü değişir. X-register'inin içeriği akümülatör'e kopya edilir. Bu işlem sırasında Z- ve N-flag'ları etkilenir. Burada X-register'inin içeriği etkilenmez.

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