Bu sayfadaki yazılar
Sayfanın metni
Sayfa 33
Örnek: ? peek(30000)+avail(3) ? Hunk(1)-40 ? hlen(0)/Peekl(4cb00) Hunt(sayı); Araştırma sırasında bulunan 32 adresten seçilen adres. (0<sayı<32) Örnek: ? Hunt(17)*20
Şimdi de Amiga Monitör'ün komutlarına bir göz atalım. ?--Calculator; Hesap Makinesi i--info; Sistem ile ilgili bilgileri ekrana çıkarır. Bunlar Monitörün nerede başlayıp nerede bittiğini gösterir.
h veya help tuşu- komutlarla ilgili yardım ekranını açar.
o--Redirect output; çıktıyı yönlendirir. Kullanımı: o isim: Monitör çıktısını bir file veya Device'a gönderir. Örneğin çıktıyı Printer'a göndermek için 'o PRT:' yazılır. Bu komut hafızanın belli bir bölümü disassemble edilip diskette file olarak saklanmak isteniyorsa kullanılabilir, 'o' tek başına kullanılırsa, monitör çıktısı normale döner.
Örnek: o RAM:Deneme.asm , o DF0:ali.svs.
m-Dump Memory; Hafızayı Hex ve Ascii olarak ekrana yazar.
Kullanımı: m : Bir önceki adresten itibaren 20 satırı yazar.
m <adres>: Adresten itibaren 20 satır yazar.
m <baş> <son>: Baş-Son adresleri arasındaki bölgeyi yazar.
Örnek: m 30000, m10000 20000 k--Dump Ascii; Hafızayı sadece Ascii olarak ekrana yazar. Çalışması 'm' komutu gibidir.
Örnek: k fc0000, k30000 31000
:--Modify Memory; Hafızayı düzeltmeye yarar.
Kullanımı:
: <adres> <yazı,bilgi> : Adresten itibaren dataları adres içeriklerine yazar.
Örnek: :50000 'Ali',a047,'yAz' ;50000'den itibaren bu dataları yazar. Uzunluğu otomatik hesaplayıp bir sonraki adrese geçer.
f--Fill Memory; Belirtilen hafıza bölgesini, verilen bilgiyle doldurur.
Kullanımı: f <baş> <son> <yazı,bilgi> : Başla son arasındaki bölgeyi, verilen bilgiyle doldurur.
Örnek: f 30000 45000 'Yazı',10,'Doldur' t-Transfer Memory; Belirlenen hafıza bölümünü başka bir adrese kopyalar.
Kullanımı: t <baş> <son> <hedef> : Baş-son adresleri arasındaki bölgeyi, hedef adresinden itibaren kopyalar.
Örnek: t 20000 2c000 70000 h-Hunt (Find) string in memory; Belirlenen hafıza bölgesinde, verilen bir bilgiyi arar. Bilginin bulunduğu adresleri ekrana yazar. Ayrıca bulunan ilk 32 adresi, Huntlist adı verilen bir tabloya daha sonra kullanılabilecek şekilde yerleştirir.
Kullanımı: h <baş> <son> <bilgi> : Baş-son arasındaki bölgede 'bilgi'yi arar.
Örnek: h fc0000 ffffff 'Copyright' hl—list Huntlist; Arama sırasında datanın bulunduğu ilk 32 adresin listesidir. Bu adresleri direkt yazarak veya Hunt(sayı) terimiyle kullanabilirsiniz.
Örnek: m hunt(5) ;hunt5'te bulunan adresten itibaren Hex ve Ascii adres içeriklerini yazar.
c--Compare Memory; İki ayrı hafıza bölgesini karşılaştırır. Farklı dataların bulunduğu adresleri ekrana yazar.
Kullanımı: c <baş> <son> <hedef> : Baş-son arasındaki bölgesini hedef adresinden itibaren karşılaştırır.
Örnek: c 30000 40000 60000 : (30000- 40000) arasındaki bölgeyi (60000-70000) arasındaki bölgeyle karşılaştırır.
a--Assemble; Kullanımı: a : Bir önceki adresten itibaren assemble eder.
a <adres> : Adresten itibaren assemble eder.
a <adres> <makina kodu> : Makina kodu'nu adres'e assemble eder.
Örnek: a 30000 ; a40000 move.l d0,d1 vs. Assemble çağrıldığında, ekrana assemble edilecek adres çıkar. Buraya yazmak istediğiniz makina kodu emrini yazdıktan sonra 'RETURN'e basarsanız, bir sonraki adres karşınıza çıkar. Assemble modundan çıkmak için hiçbir şey yazmadan 'Return'e basmanız yeterlidir. Eğer assemble edilecek adreste o anda hangi makine kodu emri olduğunu görmek isterseniz, 'CTRL+E' tuşlarına basmanız gerekir.
A-Mon assembler'ı tüm 68000 komutlarını anlamaktadır. Bunun yanında bazı pseudo-instruction'ları da kullanabilmektedir. Örneğin: dc.b, dc.w, dc.l gibi.
d-Disassemble; İstenilen hafıza bölgesini disassemble edip, ekrana yazar. Kullanımı 'm' komutu gibidir.
Örnek: d fc00d2 (Burası ROM'da Ana makina kodunun başladığı bölgedir.); d 30000 40000 vs. r--Show, Range Register; Register'ların içeriklerini görmek veya değiştirmek için kullanılır.
Kullanımı: r : Bütün register'ları gösterir.
r <reg>=<sayı> veya r<reg> <sayı> : Sayı değerini reg register'ine koyar.
Örnek: r d0 300; r a4=40000; r PC 17c00 vs. g <adres>-Go; Adres'e dallanarak, buradaki programı işletir. Program bittikten sonra monitöre geri döner. Assembler'daki jsr <adres> komutuyla aynı işi yapar.
Örnek: g fc00d2 ;Program sayıcısı ROM'daki reset routine'ine dallanır.
j <adres>--Jump; Adres'e atlar. Assembler'daki jmp <adres> komutuyla aynı işi yapar. Örnek: j 40000 w <adres>--walk (single step trace); Adres'ten itibaren bir adım yürür.
Örnek: w 30000 : 30000'deki makina kodu işlemini yapar. Tüm register'ları ekrana yazar ve bir sonraki adres'e geçer. Bundan sonra sadece 'w' diyerek programı adım adım çalıştırabiliriz.
@--Enter command line; Bu komuttan sonra bir komut satırı girilir. @ <komut satırı> : Bazı executable file'lar hafızaya yüklenip g veya j komutlarıyla çalıştırıldığı zaman, bir komut satırı ihtiyacını duyarlar. @ komutu, girilen komut satırını hafızada özel bir bölgeye koyarak ve program çağrıldığında komut satırının adresini A0'a, uzunluğunu ise D0'a yükler. Örneğin CLI komutlarından type komutu devamında bir komut zinciri ister, (type textfile) Burada textfile bir komut zinciridir. Eğer 'type textfile' komutunu kullanmak istiyorsak, type komutunu hafızaya yüklemeli ve çalıştırmadan önce "textfile" komut zincirini @ komutu ile monitöre bildirmiş olmamız gerekir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 32
Hayır! Bu yeni çıkan bir bilgisayar monitörü değil. Bu, AMIGA'nın hafızasında yapacağınız büyülü yolculukta, size rehberlik edecek bir araştırma programı.
Amiga çok ilginç bir makinedir. Belli bir zaman sonra, bu bilgisayarda oyun oynamak sıkıcı gelmeye başlar. Bu kadar parayı bir oyun makinesine yatırmadığının bilincinde olanlar, ya grafiğe, ya müziğe ya da animasyon gibi çeşitli dallara yönelmeye başlarlar. Bazıları ise, bilgisayarda programlar nasıl çalışır?, bu programı nasıl yazmışlar? gibi sorulara cevap arar. İşte o zaman, Amiga'nın bir daha kolay kolay kurtulamayacakları sihirli dünyasına girerler. Bu seçeneği yapanlara yardımcı olacak en önemli programlar Monitor ve Assembler programlarıdır. Monitor programları genelde Disassembler, Assembler, Tracer, DiskIO, MemoryDump ve Search bölümlerinden oluşur. Size tavsiyem, bu programları kullanırken inceleyeceğiniz programın veya disketin bir kopyasını almanızdır. İlk başladığınızda, sistemi ve assembleri iyi tanımıyorsanız, bilgisayarınızın çoğu sefer Crash etmesini normal karşılamanız gerekecektir. Ama sabretmesini biliyorsanız öğrenmek, bulmaca çözmek kadar zevkli olur. Nasıl kalbin yolu mideden geçiyorsa, bilgisayarda da assembler öğrenmenin yolu, programları ve bilgisayarı incelemekten geçer. Bunu da Monitörler sayesinde yapabiliriz.
Amiga'da kullanılan monitörlerin en iyilerinden biri Amiga-Monitor V2.11'dir. Programın tümü assembler'da yazılmıştır. Bu bakımdan kısa ve hızı yüksek bir monitördür. Türkiye piyasasında bu programın çeşitli versiyonları vardır (V1.15, V2.11, V3.0). Fakat en iyisi Version 2.11'dir.
A-mon CLI veya WorkBench'den çağrılabilir. Eğer monitörü WorkBench'den çalıştırmak isterseniz, program için bir icon hazırlamanız yeterlidir. Şimdi A-Mon V2.11'i inceleyelim.
Yazılmış veya hafızaya alınmış komutları düzeltme ve kullanma: Yazdığınız bir satırı düzeltmek için sağ/sol kursor tuşlarıyla kursoru hareket ettirerek, Backspace veya DEL tuşlarıyla düzeltebilirsiniz. Monitor yazmış olduğunuz satırları otomatik olarak saklar (10 taneye kadar). Bu satırları yukarı/aşağı kursor tuşlarıyla çağırıp düzeltebilir ve 'RETURN' tuşuyla kullanabilirsiniz. Programda sadece 'RETURN' tuşuna basmak, bir önceki satırda yazmış olduğunuz komutu işleme sokar.
Çıktıyı durdurmak: Bazı durumlarda ekranda datalar devamlı olarak yukarıya kayar ve bunları incelemek zorlaşır. Bunun için 'SPACE' tuşuyla çıktıyı Pause konumuna sokup, incelemeyi yapar, tekrar 'SPACE'e basıp, Pause modundan çıkabilirsiniz. Eğer bir komutun çalışmasını kesmek isterseniz, 'CTRL+C' tuşlarını kullanabilirsiniz.
Sayıların kullanımı: Amiga Monitor, assembler düzenindeki genel sayı ifadelerini ve eklerini kullanır. Bu ifadeler bir cins standarttır. A-Mon açılışta 16'lık sayı tabanını kullanır (HexaDecimal). Bu assembler için kullanımı kolay bir düzendir. Girdiğiniz her sayı bu düzene göre yorumlanır. Örneğin: 20 sayısını girdiğinizde monitör bunu 32 olarak yorumlar. Aynı şekilde, eğer 10'luk tabanı (Decimal) kullanmak isterseniz 'AMON> ba 10' yazmanız yeterlidir (Tabiiki burda 'AMON>' monitörün bir parçasıdır ve yazılmaması gerekir). Bu 'base 10' demektir, yani onluk taban, 'ba' komutunu kullanarak istediğiniz sayı tabanına geçebilirsiniz.
Örneğin: ba 2, ikilik taban (binary); ba 8 sekizlik taban (octal) vs.
Yazılar, Alfa Nümerik bilgiler: Yazısal bilgiler; hafıza doldurma (Fill), Arama (Hunt), Hafıza Düzeltme (Modify Memory) komutlarıyla ve assembler modunda 'dc.b' operandından sonra kullanılabilir. Yazısal bilgiler byte'lardan oluşan serilerdir. Sayılar veya ASCII karakterleriyle belirtilirler. A-Mon'da bunlar tırnaklar içinde, beraber olarak ya da aralarına virgül konarak ayrılmış bir şekilde tanımlanır.
Örnek: 'Bu bir Yazısal bilgidir'; (Not: Tırnaklar tek veya çift tırnak olabilir ' = ").
12,34,56 'Beraber',0a,'Yazı',10,'ve','sayılar' "", ...." ;Bu tırnağı bir yazısal bilgi olarak belirtmek içindir.
Hesap makinesi (Calculator): '?' işaretinden sonra yazacağınız hesap işlemleri hesaplanır ve sonuç Hexadecimal, Decimal, Binary, Octal ve Ascii olarak ekrana çıkar. Hesap Makinesi ayrıca Byte (.b), Word (.w), Long (.l) gibi ifadeleri de kullanabilir.
Örneğin: 40.b, 300.w, 3c000.l gibi. Herhangi bir Register (a0, d3, PC gibi) hesap işlemlerinde kullanılmak istenirse 'r' kullanılır (arada boşluk yok!).
Örnek: 40*rd0, 57-ra2, rPC+ra0 vs. Assembler'da bulunan bazı komutlar da hesap makinesinde kullanılabilir. Bunlar; #ll/lr/al/ar/d/n'dir. Assembler'daki karşılıkları: lsl/lsr/asl/asr/rol/ror'dur.
Örnek: ? 12#lr4 ;12'yi 4 sağa kaydırır (logic olarak)
Bunun yanında hesap makinesi aşağıdaki terimleri de anlayabilmektedir.
Peek(adres), peekw(adres), peekl(adres) ;adreslerin byte, word, long içeriklerini verirler.
Alloc(mode); Mümkün olan hafıza, mode=(0=PUBLIC, 3=CHIP, 5=FAST) olabilir.
Hunk(sayı) ;Hunk adresini verir. Sayı= (kaçıncı hunk olduğu)
Hlen(sayı); Hunk uzunluğunu verir. Sayı= (kaçıncı hunk)
Not: Amiga'da File'lar parçalı olarak save edilir. Bu parçalar File'ın 'CODE', 'DATA', 'BSS' bölümleridir ve HUNK adını taşırlar.