çirmede $40 adresini kullanalım. Mesela, beş sani- yelik bir gecikme isteyen bir program: 2000 LDA # $5 ;5 saniye bekle 2002 STA $40 ;parametreyi yerleştir : 2004 JSR $5000 ;$5000 adresindeki alt programa git Ğ © 5000 DEC 540 ;540 adresini bir azalt 5002 BES S$500C ;Eğer $40 adresinin değeri sıfıra ulaşırsa ana programa geri dön SO0A LDY4 $0 5006 DEY ;Y yazmakcını bir azalt 5007 BNE $5006 ;Eğer değer sıfıra eşit değilse $5006'ya git —. 5009 JMP 55000 ;$5000 adresine git S00C RTS ;Ana programa dön Eğer programın başka bir yerinde on saniyelik bir beklemeye ihfiyaç duysaydık bütün yapmamız gere- ken LDA # SOA komutunu vermek olurdu. Bu programı BASIC ile yazsaydık: 2000 A — 5 2010 POKE 40, A 2020 GOÖOSUB 5000 Ö o ö SÜO00 POKE 40, PEEK(40)-4 5010 1F PEEK(40) —0 THEN 5060 5020 Y—255 SÜ30 YY SO040 İF Y<>0 THEN 5030 SOS5S0 GOTO 5000 5060 RETURN GOÖTO Makine dilinde GOTO komutunun karşılığı JMP ko- muftudur. Kontrol bu komuttan sonra verdiğiniz adre- se geçer, Bu komut JSR komutuna benzer, ama prog- ram akışı RTS İle, eski yerine dönemez. Program akışını değiştirmek için genel olarak iki yol vardır. İlk yola şartlı dallanma adını verebiliriz. Bu yol için örnek olarak CMP #0 BES 5000 örnek verebiliriz. BEO : Branch if E9ual (eğer eşitse dal- lan) anlamına gelir. Eşitlik veya eşitsizlik bir evvelki CMP (CoMPare, karşılaştır) komutu ile araştırılır. BNE : Branch if Not Egual (eğer eşit değilse dallan) anla- mına gelir. BCC : Braneh if Carry is Clear (eğer carry (elde var) bifi sönükse dallan) anlamına gelir. Bu ko- mufların hepsi bir şart sağlanırsa dallanma yapar. Bir şarta bağlı olmadan dallanma, program akışını de- ğiştirmenin ikinci yoludur. GOTO veya JMP komutları hiç bir şarta bağlı olma- dan program akışını değiştirirler, JMP veya GOTO ko- mufunu kullanırken dikkatli olmanızı öneririm. Çünkü çok fazla GÖTONMMP komutunu kullanmak, programı anlaşılmaz hale getirecektir. Buna karşın, çoğu za- man programdaki bir sorunu çözmenin en iyi yolu bu komutu kullanmak olacaktır. JMP komutu pragramınızı taşınamaz hale getirir. Programın taşınması ne demek diyebilirsiniz. Mesela ufak bir program yazdınız ve bununla başka prog- ramları inceliyorsunuz. Ancak inceleyeceğiniz prog- ramlcaırdan birisi sizin programınızın bulunduğu adres- lerde yer alıyor. Bu durumda yapmanız gereken tek şey programınızı hafızanın başka bir yerine kaydırmak olacaktır. Ancak programınızda JMP komutları varsa, program yeni yerine taşındıktan sonra da JMP komut- ları eski adresleri taşımaya devam edeceklerdir. Mesela; 2000 JMP $2005 2003 LDY # $3 2005 LDA # $5 Eğer bu programı SÜ00 adresine taşırsanız her şey doğru çalışacak, fakat JMP komutu hölü aynı yere akışı yönlendirecektir. Sizin JMP komutunu JMP $5005 şeklinde değiştirmeniz gerekir. Bunun gibi, programı- nızdaki tüm JMP adreslerini tekrar hesaplayıp değiş- tirmek gerekir. Programı taşımak için monitörünüze şu komutu ver- meniz yeterli olur: T 2000 2006 5000 Tden sonraki ilk rakam taşınacak adresin başlan- gıcını, İkincisi bitimini, Üçüncüsü de yeni yerin adresi- ni belirtir. Eğer programınızı ilerde başka bir yere taşımanız gerekirse, yapacağınız en iyi şey LABEL (etiket) kullan- moamnıza İzİn verecek bir assembler ile çalışmak ola- caktır. Böyle bir assembler ile çalışırken kontrolün ge- çeceği adresleri bilmek zorunda değilsiniz. Adres ye- rine label kullanırsınız. Assembler, sizin yerinize gerekli hesaplamaları yapar. Programın yerini değiştirmek is- tediğinizde bütün yapmanız gereken * — İle başlan- gıç adresini değiştirmek olur. Buna bir örnek verelim: JMP ikinci bölüm LDYH#3 ikinci bölüm LDA 5 AMIGA Genellikle AMIGABASIC ile ödü * 200'den büyük pencere açamazsınız. Bu durumda ekranın alt kısmın- da 5ö piksellik boş yer kalır. Başka bir deyişle ekranın sadece 76 78'ini kullanabilirsiniz. Eğer ekranın tama- mını kullanarak 640 * 256'lık bir çözünürlük elde et- mek İsterseniz aşağıdaki ufak programı deneyin: SCREEN 1,640, 256,2,2