Commodore sayı 43, sayfa 24

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 24

A 1502 BRK ile programımızı bitirebiliriz. Şimdi hafızada $1500 adresinden başlayan bu ilk programımızı çalıştırmalıyız. Bu iş için birçok monitör programında aşağıdaki satır kullanılır:

1500

Eğer Basic'ten çalıştırmak istersek SYS 5376 yazmalıyız ($1500'ün desimal karşılığı 5376'dır). Yukarıdaki yöntemlerden biriyle programı işlettiğinizde ekrana register tablosu gelecektir. Bu tabloyla daha önce monitör programını ilk kez çalıştırdığımızda karşılaşmıştık. Şimdi registerlerin aldığı değerlere bir bakalım. Akümülatörün değeri 01, program sayacının değeri 1502'dir.

Statüs registerinde ise Break Bit'i dı- şındaki tüm Bit'ler O'dır. Programımızda ufak bir değişiklik yapalım: A 1500 LDA # $00 A 1502 BRK

Programı tekrar işlettiğimizde program sayacı 1503, akümülatör 00 olacaktır. Statüs registerinde ise “Zero-Flag” yani “sıfır göstergesi” de 1 değerini alacaktır. Şimdi son olarak akümülatöre $FF değerini yükleyelim:

A 1500 LDA # $FF A 1502 BRK

Programı tekrar çalıştırdığınızda akümülatörün ve program sayacının beklenen değerleri almasına karşılık statüs registerindeki 7. Bit'in 1 değerini alacağını göreceğiz. Bu bit “Negatif Flag” diye adlandırılır ve bir işlemin sonucunun artı veya eksi olup olmadığını gösterir. Peki, akümülatörde $FF veya desimal 255 değeri varsa, neden statüs registeri akümülatörün değerini eksi olarak gösteriyor? Bu bilmecenin çözümü için daha bir süre beklememiz gerekecek. Yalnız burada hemen şunu belirtelim: Eğer bir sayının 7. Bit'i 0 değilse statüs registerindeki Negatif Flag 1 değerini alır. Bu konuya daha sonra negatif ikilik sayıları incelerken değineceğiz. Şimdi statüs registerinin Bit'lerini teker teker ele alalım: NV-BDIZC 76543210

7) N (negatif): Bir önceki işlemler negatif mi? 6) V (overflow): Bir önceki işlemin sonucu 127'den büyük mü? 5) -boş- daima 1 değerini taşır. 4) B (break): Program kesintiye uğramış mı? 3) D (decimal): İşlemci desimal işlem modunda mı? 2) I (interrupt — kesinti): Interrupt durdurulmuş mu? 1) Z (Zero): Bir önceki işlemin sonucu sıfır mı? 0) C (Carry): Bir önceki toplama, çıkarma veya kıyaslama işleminde kalan var mı?

Mutlak adresleme:

STA “Store Accumulator”, yani akümülatördeki değeri belleğe yükle anlamına gelmektedir. Bu komutu kullanarak akümülatördeki değeri ekran belleğinin ilk baytına ($0400) kaydedelim:

A 1500 LDA # $01 A 1502 STA $0400

STA komutu ile yeni bir adresleme yöntemi ile tanışıyoruz: Mutlak Adresleme. Bu adresleme yönteminin başlıca özelliği hafızada iki bayt kullanmasıdır. Yukarıdaki program hafızada şu şekilde yer alır:

1500 LDA 1501 $ 01 1502 STA 1503 $00 1504 $04

ASSEMBLER

KOMUT LDA

LDX LDY STA STX

STY RTS

Adresleme Yöntemi Kodu Etkilediği Gösterge

Dolaysız 2 Mutlak 4 Dolaysız A2 2 Mutlak AE 4 Dolaysız A0 2 Mutlak AC 4 Mutlak 8D 4 Mutlak 8E 4 Mutlak 8C 4 - 60 6

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