Assembler
Bilindiği gibi bilgisayarlardan en iyi verimi alabilmek için en az bir bilgisayar dilini iyi bilmek gerekiyor. En kolay öğrenilen ve yaygın kullanılan dil BASIC'tir. Fakat bu dil kolay öğrenilmesine karşın yavaş çalışmakta ve bilgisayar hafızasında çok yer kaplamaktadır. Yavaşlığı bir noktada Austro Comp., Blitz vs. gibi Compiler (derleyici) programlarla çözmek mümkündür. Zaten yazılan BASIC programı da bilgisayarın içinde makina diline çevrilerek çalışmakta ve dilin yavaşlığı da buradan gelmektedir. Yurdumuzda büyük boyutlara varan bilgisayar kullanıcıları bilgisayar ile tanıştıktan sonra, önce BASIC ile uğraşmakta ve daha sonra yeni bir dünya olan makina dilini keşfetmektedir. Fakat yurdumuzda makina dili hakkında son derece kısıtlı Türkçe yayın bulunmakta, dolayısıyla çığ gibi büyüyen meraklı bilgisayarcılara hitap etmemektedir. Eksikliğini, bu açığı kapatmak gayesiyle sizin için bu diziyi başlatmayı uygun gördük. Bu diziyi takip eden okuyucuların az, çok BASIC diline aşina olmaları gerekmektedir. Bu sayıda size yayınladığımız programı yazdıktan ve kasete-diskete kaydettikten sonra çalıştırdığınızda, bu program yardımıyla programlarınızı BASIC gibi yazabileceksiniz. Bu programda en önemli nokta RTS komutundan sonra gelen adrese X yazıp RETURN tuşuna basarak ana menüye dönmenizdir. Aslında bu program olmasaydı, makina kodunu hafızaya iki yol ile yerleştirebilirdik. Birinci yol DATA'lar yazıp bir FOR-NEXT döngüsüyle aşağıdaki gibi yapmak: 5 POKE 43, 44, 8:POKE 45, 27:POKE 46, 8 10 FOR I= 2049 TO 2075 80 NEXT 40 DATA 25,8,10,0,153,34,66,85 42 DATA 71,85,78,32,72,65,86,65 44 DATA 32, 75, 65,82,76,73,34 46 DATA 0,0,0,73 Veya ikinci bir yol, bir monitör yardımıyla direkt hafızaya makina dilini yazmak. İlerki sayımızda sizlere monitör programı ve Convertor (çevirici) programı da yayınlayarak bu alandaki eksikliklerinizi tamamlamayı amaçlıyoruz. Makina dili programlar direkt belleğe ve bilgisayarınızdan bu programları düzeltme imkanınız olmadığından, bu işlemleri yapabilmek için, daha evvel makina dili editörü yayınlamıştık. Buradaki amacımız yayınladığımız programları hatasız olarak yazmanız ve hatanın b
Dr. Ali Özçelik program tarafından kontrol edilmesi, emeğinizin boşa gitmemesidir. Bu programları yazıp kaydettikten sonra monitör yardımıyla tekrar incelendiğinde, profesyonellerin bu dildeki mantığını kavrayabilmenizdir. Eğer programı makina okuyacak olsaydı, makina dili çok kolaydı. Fakat programcılar insan olduğu için Assembler dili geliştirildi. Daha önce de belirtmiştim: Aslında bilgisayarın anladığı tek dil vardır. (Yo, “dayak” demeyin, bilgisayar uygar bir alettir, böyle şeyleri kaldırmaz.) Makina dili, pratik olarak bilgisayarı oluşturan elektronik devrelere giden hatlarda, belli bir anda gerilim bulunup bulunmadığının bir ifadesidir. Tabii bu düzeyde kalırsa, bilgisayar programlamanın imkansız olduğu hemen açığa çıkıyor. Bırakalım nerede gerilim olmasının ne yapacağını, sadece pozitif gerilimi “1”, negatif gerilimi “0” olarak alsak da fazla ileri gidemeyiz. Bu durumda, oluşan ikili sayılardan bize daha yakın bir iletişim aracı üretmemiz gerek. Bunun ilk adımını ikili sayıları onaltılı tabanda kodlanmış biçimiyle görerek atabiliriz. 10011011 gibi bir sayıyı akılda tutmaktansa 9B biçiminde bir simgeyi akılda tutmak doğal olarak daha kolaydır. Yine, yalnızca komutları değil, komutların kullandığı adresleri de aynı biçimde on altılı olarak gösterebiliriz. Pek çok programda veri olarak rastladığımız onaltılı (hexadesimal) değerler aslında makina dilinde yazılmış bir programdan başka bir şey değildir. Ama onaltılı değerlerle programlama yapmak hala zor. Onaltılı kodlara da daha anlamlı belirli simgeler verirsek, programlama artık daha kolay olacaktır. Söz gelimi 20 karşılığında JSR gibi bir simge saptayalım. Bu simge aynı zamanda komutun işlevini de bize anımsatma niteliğinde olsun. Söz gelimi örneğimizde JSR komutu, Jump to SubROutine (alt yordama atla-dallan) komutunun başlangıç harflerinden oluşuyor. Artık böylece kısaltmalar bize ne yaptığımızı da anlatacaktır. İşte simgesel dil “Assembler” komutları böylece oluşuyor. Bu komutlar çevirici yazılım aracılığıyla makina koduna dönüştürülüyor ve doğrudan makina dili komutlarının işletilmesi mümkün olmaktadır. Sözü edilen çeviri işleminde, ilgili bilinen simgelerin yerlerine onaltılı kodların konulması daha az işlem gerektiren bir süreç olduğundan daha hızlı ve daha az yer kaplar. Gelelim onaltılı sisteme: Pratik hayatta 0-9 kadar semboller kullanarak 10 ve katlarıyla matematiksel işlem yapmaktayız. Fakat makina için on altılı sistem avantajlı olduğu için onu
1 ÖPENSO,O <188>
2 PRİNT"BASSEMBLER DISASSEMBLER" BY DR.ALI FOR 64'LER"<064>
3 <068>
4 . ASSEMBLE CODE GİRİSİ" <061>
5 CODE DOKUMU" <oz0>
8 DOKUMU" <175>
7 DOKUMU" <195>
8 HAFIZA"
9 HAFIZA" <012>
10 CALISTIRILMASI" <174>
14 CEVİRİM" <049>
12 MENUYE DONUS" <189>
13 1:GETAS <193>
14 <072>
15 PRINT:0N A 17,77,104,117,129,146,147,170 <089>
16 GOTO2 <199>
17 INPUT"BASLANGIC ADRESİ <187>
18 <ozo>
19 2) <039>
20 <092>
21
22 <004>
23 FOR <145>
25 NEXT <035>
26 FOR <236>
27 1): <069>
28 NEXT <038>
29 <250>
30 VERİ" :GOTOZO <135>
31 <236>
32
33 :LÜSDEC c093>
da kullanıyoruz. Aşağıda onaltılı sistem karşılığını vermeden önce önünde $ işareti gördüğünüz bütün rakamları onaltılı olarak okumamız gerektiğini öğrenmeliyiz.
karakter Desimal karşılığı
80 o s1 1 s2 2 88 3 s4 4 88 5 86 6 s7 7 88 8 s9 g SA 10 $B n sc ı8 $D - 18 $E 14 8F 18 810 - 16
Peki Hexa ($FF)'in desimal karşılığı ne olur? Tabii 255 olur, onun için BASIC'te yazdığımız DATA'nın en yüksek değeri 255'tir. Hep makine dilinden bahsettik ama bilgisayardaki adresleri biliyor muyuz, sahi adres nedir? Bilgisayarda 60.000'in üzerinde posta kutuları olduğunu varsayalım. Bu kutuların bazılarının içi boş ve bazılarının içi dolu olsun. Dolu olanların içindeki değerler bilgisayara bazı işler yaptırmaktadır. Bunlardan bazılarını POKE komutu ile değiştirmekte ve PEEK komutu ile gözlemekteyiz. (Örnek: POKE 53281, 7 gibi) Burada 53281 no.lu posta kutusu içine değeri konuyor. Bu adres ekran zemin rengini kontrol ediyor ve 7 değeri zemini sarı yapıyor. Bilgisayarı kapatıp açtığımız zaman bu değer oradan siliniyor. Bir de bilgisayarın ana belleğinde sadece veri okunabilen bölüm vardır. Buraya ROM (Read Only Memory) denir. ROM içindeki bilgiler sadece imalat sırasında belirlenir, içindekileri değiştiremeyiz. ROM'da bulunan veriler cereyan kesilse de bozulmadan kalır. Sizlerin az çok BASIC'e aşina olduğunuzu kabul ettiğimizden daha detaylı şeyler yazmadık. Aşağıda bilgisayardaki adreslerin ne işe yaradığını veriyoruz:
Adres(Desimal) 0-1 2-1085
Adres(Hex) 0000-0001 0002-05FF
6810 kayıt Hafıza başlangıcı ayrılan boş bölge — Renkli video çıkış (VIC 11 yongasına ayrılan bölüm) — Ses ve müzik (SID ayrılan bölüm DB00-DBES — 55296-56296 Renkler için RAM 56320-57543 Giriş-çıkış kayıtları 57344-65555 8 KByte'lık KERNAL işletim sistemine ayrılmıştır.
BASIC'i bilmeyen veya az bilenler bu diziden bir şey anlamazlarsa üzülmesinler. Bu bölümü biriktirip iyi saklasınlar, ileriki yıllarda tecrübeleri artınca onlar için bu dizi vazgeçilmez bir kaynak olacak. Hepinize bol programlı ve sıhhatli günler dilerim. Dr. Ali Özçelik Bakırköy / İst.
Ne için kullanıldığı işletme sisteminde kullanılan hafıza 0400-07F7 1024-2039 hafıza 2040-2047 hafıza 2048-40959 dilinin konulduğu yer. 8 KByte'lık BASIC
40960-49151
Ekran için ayrılan Sprite oluşturma için
BASIC veya Makina dilini makina diline çeviren özel
Programın bulunduğu bölge,
CO0-CFFF 49152-552447 Prograracı için
:LÜSDEC
RESTORE
FOR TO 255
READOP © 1))-48:
NEXT
CODE" :GOTOZO
1FOP « 160ROP «4BOROP "SOOROP 11 4
OP :POKEP*1,LÜ:POKEP
1FB1#2THENPOKEP , OP :POKEP*1,LO
1FBis1THENPOKEP, ÖPT
GOTO18
<20s>
<163>
ç087>
<208>
<234>
<096>
<183>
<186>
<0a1>
<002>
<093>
<z48>
<099>
<201>
İF THEN DI>127 THENPRİNTSPCC18) DALLANMA" :GOTO16<149>
“İFAD<PTHENDİ 13 5 "KOTU DALLANMA" :GOTO18<201
Bis2:60TO46
FOR
1))-48
İF
NEXT
RETURN
44096
FOR
İF
448)
NEXT
RETURN
İNPUT"BASLANGIC ADRESİ
HEXSSLEFTS(P8, 2)
CP) :RESTORE:FOR
NEXT:
3)
1FOP 4 «1 LZ0ROP' 4 1 440RÖP 4 ZOBORÜP #ZAOTHEN100
3347),
334", XI"
(Pe 1) 2)
:GOSUB6S
1
<161>
<108>
<206>
<220>
<046>
<011>
<197>
<141>
<250>
<187>
<073>
<122>
<192>
<157>
<243>
<213>
<2s1>
<235>
<116>
<133>
<085>
<134>
<015>
<080>
<099>
<013>
<247>
<027>
<160>
<130>
<133>
<070>
<229>
<187>
<096>
<oza>
<085>
<060>
<136>
96
ÜTÜS7
99 GOTO7E
100 D
101
töz
103
104
105
106
107
108
109
110
siz
118
ila
115
116
diz
118
119
izo
izi
122
123
iza
125
126
ız?
128
120
130
131
1338
FERİ
135
136
137
138
159
140
144
143
145
146
147
148
tan
150
151
192
153
154
155
156
157
158
159
160
4361
162
163
165
166
3
GOSUB6S
HEXS
DÖKÜM BASLANGIC ADRESİ
2)
2)
PRİNTPS;” TO 19
TECK<3ZORCK)9STHENCHS3Z
NEXT
PRİNT
GETA$ :
İF
GÜTOL0S <204>
İNPUT"DATA DOKUMU BASLANGIC ADRESİ
2)
2)
TO 9
PRİNT"
NEXT
PRİNT
60T0118
İNPUT"DİSK OR TEYP
ADİ (1-6 KARAKTER)
POKESZ0, LENCAS)
PRİNT OP#;"BASLANGIC ADRESİ
2) DEC
(PS, 2) :GOSUBS8 :PÜKEZSZ, DEC:
PRİNT ADRESİ İNPUTASÖ,PS:FRİNT
2) DEC
2) :POKE1OZÜ, DEC
RESTORE : READAS : NEXT
FORRSÖTÜ26
:READA
Z-0:5YS679 RETURN
İNPUT"CODE'UN ADRESİ
2)
2) :GOSUBSÖ:PER*DEC T
SYS(P)
AR XR O YR SP" OT
(780)
781) :G0SUBES
2
186 :POKES21,
2
PRİNT"
REM
REM
REM
REM
REM
REM
TUSA 1
RETURN
REM
EFTSCAS, 1): 1
<197>
<037>
<250>
<039>
<107>
<126>
<098>
<221>
<azı>
<1B0>
<215>
<002>
<046>
<ı20>
<231>
<067>
<227>
<165>
<079>
<073>
<032>
<252>
<ize>
<080>
<173>
<126>
<163>
<017>
<175>
<17a>
<175>
<058>
<160>
<059>
<212>
<1s0>
<169>
<222>
<050>
<301>
<108>
<078>
<086>
<1365>
<z20>
<221>
<222>
<223>
<224>
<225>
<2z8)
y <225>
164 TÜSA 1 <008>
165 RETURN <223>
166 REM
167 REM <220>
168 REM <230>
170 INPUT"HEX -> DESİMAL VEYA DESİMAL *> HEX 1) <012>
171 <201>
172 <153>
173 PRİNT:PRİNT"O İLE 65535 RAKAMLARI ARASINI KULLANIN <018>
174 İNPUTWSO, — <036>
175 DECSVALCAS) : İIFDEC>65S3SORDEC<OTHENİT3 <010>
176 <202>
177 <089>
178 PRINT:PRİNT"1-4 RAKAM KULLANIN"
179 HEX$ :
180 İFLENCHEX8) <110>
181 <098>
182 Pz0: ) <o27>
183 <214>
184 <226>
200 UZM, MEN, "ZORAN, <2
36>
205 "20, "BORAN, "2", YU NEM,
210 "BORAL KU, UZM UZM, "BASLI XU, "EM, <0
25>
215
220 "BAND", "2", YU, UZM <199>
225 "2", "BAND. UZM, UZM, <198
Şi
280 UZM, "ELER", <O46>
235 "7", "SJMP", "BEOR","3LSR", "20, NEN, UZM <OB7>
240 "EM, MEM, <O06
>
245 MEM, UZM, UZRORU, MEN,
250 O", “BADC", EN,
>:
255 2", "ASEL", "SADO. YU,MEM, UZ
>
260 XI", MEN,
96>
265 DATA"?","3STY", UZ", UZ
270
03>
ADC#" <0B9>
<LA7
TM, <OBA
<0
<205>
2", UZM <0
275 XI", "EN, MEN <223>
280 DATA"İTAY","2LDAW" <1B0>
285 "3LDY", "SLDA", "2", "ZLDACI. YU <246>
290' DATA"?", <189>
295 YILDA. YU, "2", <O4L>
300 DATA"3LDX. "2", NEN, NEN, UZM
305 DATA"LINY", "2", "2", <19
2>
310 MEN, MEN, UZM, MEN <178>
315 DATA"3CMP.X" <216>
320 "PM, KOM, MEM, EM, <002>
325 "2", MEN, <22
>
3830 AZSBC. XU, EM, V <033>
335 NEN <253>
340 <0
18>
345 DATA3,169,252,32,216,255,96
350 DATA166,251,32,186,255,173,52,3,162,53,160 ,3, 32 <237>
355 DATA189,255,174,252,3,172,253,3,169,0, 32,213, 255,96 <108>
READY.
Commodore'da çıkan ve çıktığı anda listede en yüksek sıraya yerleşen bu süper karate oyunu sonunda Amiga'ya da geldi. Tabii bu versiyonu süper grafikler, süper efektlerle süslü. Aynen Commodore'da olduğu gibi oyunun bazı özellikleri tuşlarla değiştirilebiliyor. Bu tuşlar şöyle: F1: 1 PLAYER GAME F2: 2 PLAYER GAME F3: MÜZİK ON/OFF F4: EFEKTLER ON/OFF F6— F10: Hız (F6 en yüksek F10 en düşük hızdır.) *-: SES :SKOR'U AŞAĞI YUKARI HAREKET ETTİRME — * —: RIPPLE COLOR (güneş ışığı.) S: GÖLGE RENGİ (adamların yere düşen gölge rengi.) T: Pantolonlar B: DEĞİŞİK KALKAN Oyunda çok sıkışırsanız hemen pantolonları düşürün. Ama siz de hemen havaya zıplamalısınız. Yoksa sizinki de düşer. Oyun turbo hızda çok komik oluyor. Üstelik o kadar hızlı ki hangi hare-
MIG keti yaptığınızı zor anlıyorsunuz. En iyi hız NORMAL'dir. Background'a çok değişik şeyler konmuş. Pac-man, ağaçtan inen örümcek, sudan çıkan denizaltı gibi. Adamlara vurduğunuzda sesleri çıkacaktır. Bu da oyunu güzelleştiren özelliklerden biri. Ekranın üstünde üç tane dövüşçünün vuruş için aldıkları toplar gösterilmiş. Toplarını tamamlayan karateci dövüşü kazanır. Burada ikinci olsanız bile önemi yok. Önemli olan üçüncülüğe düşmemek. Oyunun Amiga versiyonunun bir özelliği de Commodore'da olmayan bir bonus ekranına sahip olması. Burada aşağı tekmelerle bombaları durdurmaya çalışıyorsunuz. Her yok ettiğiniz bomba için belli bir puan alırsınız. Diğer bonus ekranı ise Commodore'da da olan topları karşılamadır. Bu ekranda B tuşu ile kalkandaki yazıyı değiştirebilirsiniz. Oyundaki hareketler şöyle: (adamınız sağa döndüğü zamanki.) Joystick sağ üst köşe * ateş < Kafa atma Joystick sol üst köşe * ateş z iki bacağı birden açarak havada atılan tekme. Joystick sağ * ateş Sağa tekme Joystick sol * ateş < sola doğru geri takla
Joystick sol alt köşe * ateş < Bu hareketi her yaptığınızda adamınız yön değiştirerek üste doğru tekme atar. Joystick sağ alt köşe * Bu hareketi yaptığınızda adamınız dönük olduğu tarafa doğru yukarı tekme atar. Joystick yukarı * ateş < Uçarak tekme Joystick aşağı * Aşağı tekme. Eğer ateşle basmadan üst ve alt köşelere joystick'i ittirirseniz ittirdiğiniz tarafa yumruk atarsınız. Adamlara sert vurduğunuzda veya onlar size sert vurduğunda yıldız saydığınızı görebilirsiniz. Oyunun müziği dinlemeye değer. Oyunda pause ettiğinizde karşınıza antrenman yapan karatecilerin güzel bir demosu çıkar, IK+ şuan için Amiga'nın en zevkli karate oyunu olarak görünüyor bu yüzden hiç düşünmeden rahatça alabilirsiniz ŞAHİN DERYA NOT: Karate hocası çıktığında tuşuna basarsanız gömleği kareli olur.
Cinema Ware firmasının SDI'den sonra ürettiği güzel bir oyun daha yalnız bu oyunun tek ayrıcalığı konusunu hepimizin bildiği Amerikan Futbolu'ndan almış olması. “TV Sports Football” adıyla bilgisayara uyarlanan bu oyunun tek dezavantajı kurallarının tam olarak bilinmesi ve uygulanmasından gelen zorluk. Ama bu zorluğun yanısıra grafiklerdeki ve ses efektlerindeki üstün başarılar oyunun en güzel bölümlerini oluşturmuş. “TV Sports Football”'u Amerikan futbolu'nu bilenler kadar açıklama ve egzersiz yapma bölümleri tecrübe kazanmak için epeyi yardımcı oluyor. Oyun yüklendiğinde size her konuda yardımcı olabilecek bir menü çıkıyor. Bu menüde 4 seçenek göreceksiniz. Bunlar: 1- EXHIBITION 2- LEAGUE 3- PRACTICE 4- CLIPBOARD
1- Direk maça girer 2- LEAGUE: Futbol lig fikstürünün incelenmesinde ve değişiklik yapılmasında yardımcı olur. Takımların hangi rakiplerle eşleştiğini gösterir.
3- PRATICE: Pratik kazanmak için seçilen bu bölümde ise her konuda ayrı ayrı antrenman yapılabiliyor. Bu bölüm seçildiğinde karşınıza üç seçenek daha çıkacak. a- Pratice Plays b- Pratice Kicking c- Main Menü a, Pratice Plays: Bu bölümde pas araştırmaları yapılıyor ve bu paslar 4 dalda toplanıyor. —Praset: Elden ele verilen paslar. —I Formation: Oyun düzeni —Shot gun Atatar verilen paslar