/ ASSEMBLER-8 Bu ay ilk olarak makine dilinin en çok kullanılan iki ko- mutunu ele alacağız: JMP ve JSR. Bunların Basic dilin- deki karşılıkları GÖTO ve ve GOSUB'dır ve işlevleri he- men hemen aynıdır. JMP, İngilizce ““Jump to address”” kelimelerinden tü- retilmiştir ve ““Verilen adrese atla'' anlamına gelmekte- dir. Her zaman olduğu gibi yine bir örnekle bu komu- tun kullanılışını inceleyelim: satırı $1500 adresine bir atlamayı gerçekleştirir. Bu iş- lem şu şekilde gerçekleşir: Program sayacına verilen ad- resin alçak ve yüksek baytları yüklenir. Bildiğiniz gibi program sayacındaki değer bilgisayara hangi adresteki işlemi yapması gerektiğini bildirir. Şimdi Ex-Mon'u yük- leyip aşağıdaki sa:ırlan yazalım. 1400 JMP Atlamanın gcrçek!eştığı adreste ise programı durdura- lım 1500 BRK G 1400 yazıp prgramımızı işletir işletmez ekrana reğis- terlerin durumunu gösteren satır gelir. Burada program sayacı $1501 değerine sahiptir zira en son $1500 satırını bilgisayar okumuştur. 46 ANIL GÜL Şimdi JMP komutuyla kullanılabilen yeni bir adresle- me yöntemini tanıyacağız. Bunun için öncelikle aşağıdaki satırları yazalım. 1400 LDA # $00 1402 LDX#$16 1404 STA $1300 1407 STX $1301 I40A JMP (1300) Bu programa ait başka bir satır da şu şekildedir: 1600 BRK Yine G 1400 ile programı başlattığınızda program sa- yacının 1601 değerine sahip olduğunu göreceksiniz. Yukarıdaki programda $140A adresindeki değişik ya- zım şeklini herhalde farketmişsinizdir. Yeni adresleme yöntemimiz dolaylı adresleme olarak adlandırılmaktadır. Bu yönteme dolaylı denmesinin nedeni atlanmak istenen adresin doğrudan doğruya değil de bir vektör üzerinden bilgisayara bildirilmesidir. Bir vektör birbirini takip eden ik bayt'tan oluşmaktadır ve alçak-yüksek bayt şeklinde istenen adres belirtmektedir. $1600 adresinin alçak bay- tı $00'dır ve pogramımızda bu değer ilk önce akümüla- töre yüklenir, daha sonra $1300'e yazılır. Yüksek bayt olan $16 değeri ise X-Registeri üzerinden $1301 adresine yazılır. Tüm bu işlemler sonucunda programımızın atlaması- nı istediğimiz adres $1300 ve $1301'de yer almaktadır. Artık $1300 vektörünü gösteren JMP komutu ile atlama- mız gerçekleşebilir. Bu yöntem özellikle kernal (işletim sistemi) rutinlerinde oldukça sık kullanılır. Bu arada yine oldukça önemli bir atlama komutu olan JSR'ye değinmeden geçemeyeceğiz. JSR, “Jump to Subroutine”' veya “Alt programa atla'”” anlamına gelmek- tedir. Burada aynı Basic'de olduğu gibi bir alt programa atlanmakta ve daha sonra RTS ile geri dönülmektedir (GOSUB-RETURN ilişkisi). JSR komutu bir adrese atlamadan önce geri döneceği adresi hafızada “stack*' diye adlandırılan bir bölgeye kay- detmektedir. Bu bölge $0100-$01FF adresleri arasında yer almaktadır. Bu alana değerler yukarıdan aşağıya doğru yerleştirilmektedir ve bu işlem mikro işlemci tarafından yönlendirilmektedir. Ex-mon'da 0100 Ö1FF