1 Mart 1990 Tarihli Commodore Gazetesi Sayfa 47

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

satırını girerek stack'ın ( — yığın) o anki durumunu gö- rebilirsiniz. Bu alan makine dili programlar tarafından oldukça sık kullanılır ve değerler devamlı değişir. Ex-mon'da yer alan register göstergesinde ayrıca “Stack Pointer”' adında bir bölüm bulunur (SP ile gös- terilir). Bu gösterge stack'daki ilk boş adresi gösterir. Şimdi stack'da $01f0-$01ff bölgesinin aşağıdaki şekilde olduğunu farzedelim. :01FO 20 00 20 AA CI FA C0 46 :01F8 El 19 A7 79 A6 9C E3 Sizin bilgisayarınızda bu değerler büyük bir ihtimalle farklı olacaktır. Altı çizili olan adres stack pointer'ın gös- terdiği adrestir. Şimdi aşağıdaki programı yazıp G 1400 ile başlatalım. 1400 JSR $1500 1500 BRK Ex-mon'un register göstergesi tekrar ekrana gelince M 01F0 OlFF ile stack' bir kez daha göz atalım: :01FO 20 AA CI FA CO0 02 14 46 :01F8 El E9 E7 E7 79 E6 9C E3 Yine stack pointer'ın gösterdiği adres altı çizgili ola- rak gösterilmiştir ve ik bayt sola kaymış durumdadır. Eğik yazı]mış değerler ise $1402 adresinin alçak ve yük- sek baytlar C-64'ün stack diye adlandırılan bu bölgesinin kullanı- mı çok basit bir prensiple gerçekleşir: En son yazılan de- ğer ilk önce okunur. Değerlerin stack'a nasıl kaydedildi- ğini daha önce belirtmişti (Resim 1). Bu arada stack po- inter (SP) bize o anki stack durumu hakkında,bilgi ver- mektedir. Örneğin SP—-$F4 olsun. Bu demektir ki, $01F4-$O1FF arasındaki adresler doludur ve sadece $0100-$01F4 arası kullanılabilir. 6510 mikroişlemci stack kullanımını kolaylaştıracak 6 adet komuta sahiptir. Bunları teker teker ele almadan ön- İFF —- Byte 1 IFE — Byte 2 ıFD — IFC — V FB — / 100 Resim 1: Değerlerin Stack'a yerleşmesi ce bunların tümünün “son giren ilk çıkar'' prensibine da- yandığını belirtelim. Bu komut ile akümülatörün değeri stack'a yazı]mak— tadır (Push Accumulatör — Akümülatörü kaydet). Bu iş- lem sırasında SP bir basamak aşağıya iner ($FF'den geri sayar) ve akümülatörün değeri herhangi bir değişikliğe uğramaz. Dolayısıyla statü registerindeki bayraklarda et- kilenmez. "Pul] Accumulator”' veya “akümülatörü çek”, Burada tamamen yukarıdaki işlemin tam tersi gerçekleşir: Stack'- ın en üstündeki değer akümülatöre yazılır. Bu işlem so- nucunda stack'da bir baytlık yer açılır ve SP bir artar. Akümülatöre yüklenen değer sıfır veya negatif bir sayı olabileceği için statü registerindeki N veya Z bayrağı de- ğışıklığe uğrayabilir. Bu komut *“Push Processor status'' yani “Statü regis- terini yaz” anlamına gelmektedir. Statü registeri bu şe- kilde stack'a yazılarak o anki bayrak konumları sakla- nabilir. PHA'da olduğu gibi SP bir azalır, statü registe- ri değişmez. PLP: *“Pull Processor status” veya “statü reğisterini al”'. Bu komut yukarıdaki PHP'nin tam tersidir ve stack'ın en üst basamağındaki değeri statü registerine aktarır. Bu- rada çok dikkatli davranılmalıdır, zira yanlış bir değe- Tabil ki 9? W=Mımıummuu 47

Bu sayıdan diğer sayfalar: