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
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