10.11.2014 Views

Amiga Dunyasi - Sayi 02 (Temmuz 1990).pdf - Retro Dergi

Amiga Dunyasi - Sayi 02 (Temmuz 1990).pdf - Retro Dergi

Amiga Dunyasi - Sayi 02 (Temmuz 1990).pdf - Retro Dergi

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

DERLEYİCİLER<br />

Örneğimizi MOVE.L # S1<strong>02</strong>004F0,<br />

S50000 olarak değiştirdiğimizde ise, adresleme<br />

şöyle olur: $10 sayısı $50000'e,<br />

$20 sayısı $50001 'e $04 sayısı $500<strong>02</strong> ve<br />

$F0 ise $50003'e gider. Böylece 32 bit<br />

uzunluğundaki veriyi (1 LONGWORD<br />

= BYTE = 32 BİT) tek defada bir hafıza<br />

adresine göndermiş oluruz. Görüldüğu<br />

gibi AMIGA Makina Dilinde milyarlar<br />

ile ifade edilen sayıları depolamak<br />

veya başka bir yere göndermek son derece<br />

kolay.<br />

Makina dili programımızda kullanmadığımız,<br />

fakat daha sonra kullanacağımız<br />

bir sayıyı MOVE komutu ile hafızada<br />

kendimiz için müsait gördüğümüz herhangi<br />

bir hafıza bölgesine saklayabiliriz.<br />

Yukarıda son kullandığımız örnekte olduğu<br />

gibi. Tabii bu komutun icrasından<br />

sonra, dört byte'dan oluşan veri<br />

S50000 , den $50003'e kadar olan bölgede<br />

kendi halinde durur ve bilgisayar için<br />

hiçbir anlam ifade etmez. Ta ki biz onu<br />

oradan alıp yeniden kullanıncaya kadar.<br />

MOVE komutu ile bir hafıza adresindeki<br />

sayıyı, başka bir hafıza bölgesine<br />

göndermek için komutun parametreleri<br />

şöyle olması gerekir: (MOVE.L $50000,<br />

S60000). Burada bilgisayara $50000'deki<br />

dört byte'ı alıp, $60000'den itibaren dört<br />

byte'a kopyala komutunu veriyoruz. Aynı<br />

şekilde LONGWORD olarak kullandığımız<br />

bu modu BYTE veya WORD<br />

I olarak da tek veya çift byte içinde uygulayabiliriz.<br />

Mod BYTE olduğu zaman<br />

(MOVE.B $50000, $60000)'de sadece<br />

S50000'deki sayıyı al ve $60000'e yerleştir<br />

demek oluyor. WORD'da ise $50000<br />

ve $50001 'deki iki sayıyı al ve $60000 ve<br />

S60001'e yerleştir.<br />

MOVE komutu hafıza adresindeki sayıyı<br />

bir data veya adres registerine göndermek<br />

için de kullanabiliriz. Örneğin;<br />

MOVE.B $5000, DO komutu ile, $50000'-<br />

deki bir byte'ı DO data registerine atamış<br />

oluruz. MOVE.B $50000, AO ile $50000'-<br />

deki bir byte'ı bu sefer bir adres registerine<br />

göndermiş oluruz. Aynı şekilde<br />

D0'den D7'ye kadar olan bütün data registerlerini<br />

ve A0'dan A6'ya kadar olan<br />

bütün adres registerlerini MOVE komutu<br />

ile kullanabiliriz.<br />

MOVE komutunun bir başka kullanım<br />

modu ise, bir sayıyı bir adres veya<br />

data registerine göndermektir. MOVE.L<br />

# $070000, D0 ile $070000 sayısını D0<br />

data registerine ve MOVE.L # $070000,<br />

A0 ile aynı sayıyı A0 adres registerine<br />

göndeririz.<br />

Programımız içinde belli bir döngüde<br />

veya bir rutinde çok kullanılan bir adresi,<br />

adres registeri üzerinden kullanmak<br />

hız ve anlaşırlık bakımından çok büyük<br />

kolaylıklar sağlayacaktır. Şimdi bunu ayrıntılı<br />

bir örnek ile daha iyi açıklayalım.<br />

050000 : 207C 00070000 : MOVE.L# $0000,A0<br />

050006 :203C 00000032 : MOVE.L# $32,D0<br />

05000C : 2080 : MOVE.L D0, (A0)<br />

05000E : 2210 : MOVE.L (A0),D1<br />

050010 : 23C100060000 : MOVE.L Dİ ,$60000<br />

işte bu beş satırlık makina dili programında<br />

hemen hemen bütün MOVE parametrelerini<br />

kullandık.<br />

Birinci satırdaki komutta $70000 sayısını<br />

A0 adres registerine atadık.<br />

İkinci komutta $32 sayısını D0 data registerine<br />

atadık.<br />

Üçüncü komutta ise D0'daki sayıyı<br />

(kullanıma dikkat) A0 adres registerinin<br />

gösterdiği hafıza adresine gönderdik<br />

($70000). Burada parantez içindeki adres<br />

registeri, sayının gidecek olan hafıza<br />

bölgesini temsil ediyor. Daha açıklayıcı<br />

olarak özetlersek: adres registerlerini kullanırken<br />

parantez içinde yazarsak, işlem<br />

adres registerinde bulunan adres rakamı<br />

ifadesine değil, adres registerinde bulunan<br />

adresin gösterdiği hafıza adresine yapılır.<br />

Dördüncü komut da bu sefer AO'm<br />

($70000) gösterdiği hafıza adresindeki sayıyı<br />

D1'e atıyoruz. Nihayet beşinci komutta<br />

ise Dl'deki sayıyı $60000'e gönderiyoruz.<br />

Komutların başlarındaki sayıların ilk<br />

kolonda bulunanları bu beş satırlık makina<br />

dili programın yerleştiği hafıza adreslerini,<br />

ikinci kolondaki sayılar ise aynı<br />

kolondaki makina dili komutunun sayı<br />

olarak karşılığı ve ondan sonra gelen<br />

kolonlardaki sayılar ise aynı komutların<br />

parametrelerinin datalarını içeriyor.<br />

Görüldüğü gibi sayıları ve adresleri,<br />

MOVE komutundan kullanırken adres<br />

ve data registerlerinden kullanmak çok<br />

daha az yer kaplıyor (3. ve 4. satırdaki<br />

gibi). Tabii bir o kadar da program hızlanmış<br />

oluyor.<br />

Move komutunun yukarıdaki kullanımlarından<br />

başka birkaç kullanım modu<br />

daha var. Bunları da sırası geldikçe<br />

bol bol örneklerle açıklayacağız. Başlangıç<br />

olarak bunları bilmeniz yeterli.<br />

Bu arada bundan sonra vereceğimiz<br />

örnekleri <strong>Amiga</strong>'da hızı ve kolaylığı bakımından<br />

iki monitör ve Assembler derleyicisinde<br />

uygulayacağız.<br />

1. C-MONITOR : <strong>Amiga</strong>'nın ilk monitör<br />

programlarından biridir ve CLI<br />

üzerinden çalıştığı için kullanımı son derece<br />

rahattır. Basit tek harfli komutlar<br />

yardımı ile AMIGA'nm hafıza adreslerine<br />

ve sistem rutinlerine en süratli şekilde<br />

ulaşıp, istediğimiz makina dili programını<br />

rahatlıkla kurcalayabiliriz (DE-<br />

BUG).<br />

2. SEKA ASSEMBLER : <strong>Amiga</strong>'da<br />

Assembler program yazımı için yine en<br />

uygun ve hızlı program olarak Seka Assembler<br />

gösterilmektedir. Özellikle yeni<br />

başlayanlar için kullanımı çok rahat olan<br />

bu derleyiciyi, verdiğimiz bütün örnekleri<br />

girip, ardından sonucunu görmek<br />

için kullanacağız.<br />

Şimdi yazımızın bundan sonraki kısmına,<br />

bu iki program ile beraber devam<br />

etmemiz gerekeceğinden en kısa zamanda<br />

eşden dostdan bunları edinmeye bakın.<br />

Gelecek sayıda görüşmek üzere, başarılar.<br />

AMIGA DÜNYASI 27

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!