AsmPro Kılavuzu

Merhaba Amiga'da assembly dilini kullanarak kod yazmak için kullanabileceğiniz pek çok assembler vardır. Bunların en tanınmış olanları Master Seka, Trash'm One, PhxAss, AsmOne ve AsmPro'dur. Bunlar dışında Aminet'te pek çok güzel derleyici bulabilirsiniz.

Bu yazımızda AsmPro ve AsmOne'yu nasıl kullanacağımızı öğreneceğiz. Bu iki program birbirinden bağımsız olsalar da özellikleri çok benzerdir.

Size tavsiyem artık Master Seka ve Trash'm One kullanmamanızdır. Çok uzun yıllardır geliştirilmiyorlar ve özellikle yeni sistemlerde problemlidirler. AsmPro'nun AsmOne'a göre en önemli avantajı ise grafik kartlı amigalarda, grafik kartının ekran modlarını kullanabilmesidir. Ancak AsmOne'ın son versiyonlarında bu özellik de eklendi.

PhxAss ise çok kaliteli ve güncel olmasına karşın bir IDE'ye sahip değildir. Elbette CED ya da GoldEd gibi bir text editörü ile kullanabilirsiniz. Ancak yine de bir debugger kullanmanız gerekir. Bu konuda da Barfly'ı tavsiye ederim.

Yazının geri kalanını AsmOne üzerinden anlatmaya devam edeceğim, çok büyük ölçüde AsmPro için de aynı olacaktır.

AsmOne bir; Editör, Assembler, Debugger ve Monitör programıdır. Yani kodlarınızı yazabilir, derleyebilir, satır satır çalıştırarak ya da breakpoint koyarak debug edebilirsiniz. Ayrıca hafızanın herhangi bir bölümünü görüntüleyebilir ve disassemble edebilirsiniz. AsmOne ile aynı anda 10 farklı kaynak dosyası üzerinde çalışabilir ve bunları bir proje olarak kaydedebilirsiniz.

AsmOnelPro Komutlar / Menüleri

AsmOne ile çalışırken kullanabileceğiniz 2 yöntem vardır. Bunlardan biri programın menülerini kullanmak diğeri ise (kendi dokümanında DLC - Direct Line Command olarak isimlendirdiği) çoğunlukla tek karakterlik komutları komut satırına yazarak kullanabilirsiniz.

Dilerseniz önce komut satırından verilen komutların genel bir listesine bakalım:

Komutların bazıları parametre almazken bazıları birden fazla parametre alır, o durumda karşınıza prompt çıkacaktır. O komutlar için parametre bölümünde “?” göreceksiniz.

AsmOne Komutları

Komut Parametre Açıklama

Çık/İlk ekrana dön

! - Hemen çık # - Hakkında penceresi z - Hafıza kullanım bilgisi zC - Program renklerini değiştir zF - Font'u değiştir zM - Projeye hafıza ekle zP - Proje bilgisi - Register bilgisi zS - Sembol listesi (label vs.) > dosya ismi Çıktıyı dosyaya yönlendir ? value Hex/Ascii/Bin çevirici I value Ondalıklı işlem adres/label Hafıza editleme (015) adres/label Hafızayı binary göster ©D adres/label Hafızayı disassemble et adres/label Hafızayı hexadecimal listele ©N adres/label Hafızayı ascii listele A - Kodu derle AC - Kodu test et AD - Derle ve debugger aç AO - Assemble ve optimize et B - Son satıra git

(Editörü açar)

CcC ? Hafızanın bir bölü- p satır sayısı Yazdır. (bulunduğu münü kopyala pozisyondan) (010) sürücü Disketin Ps ? Debug işlemi için Checksum'ını — he- parametre sapla a ? İki hafıza bölümünü CS 2 Sinüs tablosu olu- karşılaştır ştur R dosya ismi Dosya aç D - Disassembler'ı aç RB dosya ismi Binary dosya aç E dosya ismi Harici dosya yükle RE dosya ismi Proje aç EL 2 Tüm labelların başına/sonuna verilen| İRO dosya ismi Obje (exe) dosyası ifadeyi ekle aç F ? Hafızayı doldur RS sürücü, ? Disketten — sektör oku G Adrese git (Go) RT sürücü, ? Disketten track oku H adres/label Monitere geç (hexadecimal) Ss ? Hafızada bul dosya ismi Dosyayı araya sok| |T İlk satıra git (Editörü (İnsert) aç) IB 2 Hafızayı binary U Dosyayı güncelle olarak araya sok UA - Tüm dosyaları gün- ID 2 Hafızayı disas- celle sembliy ederek araya sok V klasör Klasörü listeler (Dir) IH 2 Hafızayı hex olarak W dosya ismi Dosyaya yaz araya sok WB dosya ismi Binary dosya yaz IN 2 Hafızayı ascii olarak sbk. WE dosya ismi Projeyi kaydet (Tüm açık dosyaları) 1S 2 Sinüs tablosu sok WL dosya ismi Link dosyası kaydet J adres Adrese git (Jump) WN dosya ismi Kodu ascii olarak K adım sayısı Adım adım çalıştır WO dosya ismi Obje (exe) oluştur L ifade Verilen yazıyı bul WP - Ayarları kaydet M - Monitör'e geç WS ? Sektör yaz N - Monitör'e geç (Ascli) WT ? Track yaz © Silinmiş kodu. geri X Registerları listele getir (Old)

Y komut DOS komutu çalıştır ZA - Derlemede kullanhafızayı serbest bırak ZB - Breakpoint'leri — temizle ZF Dosyayı sil (disketten) ZI - Include'ları temizle, derleme işleminde tekrar yüklenirler - Üzerinde çalışılan dosyayı sil CD klasör adı Klasör yarat

Bu listedeki pek çok komut yazılıp enter'a basıldıktan sonra parametrelerini almaktadır, bu komutların parametrelerini “?” ile gösterdim. Örneğin;

>C
> BEG> $00234500
> END> $00302500

AsmOne Menüleri

AsmOne'ın menülerinden ulaşabileceğiniz tüm komutlar aslında prompt'tan ulaştıklarınızın aynısıdır. Bu nedenle tekrar açıklamalarını yapmaya gerek görmüyorum. Tüm menü seçeneklerinin yanında o işlemi gerçekleştirmek için kullanabileceğiniz komutu görebilirsiniz. Editör ve Debugger içindeki menü seçenekleri de isimlerinden kolayca anlaşılabilecek seçeneklerdir. Editörde blok komutları, kod içinde belirli satırlara atlama; Debugger'da ise breakpoint ve watch ekleme, satır satır çalıştırma gibi özellikler vardır.

AsmOne Ayarları

AsmOne/Pro ayarları iki bölümdedir: Assembler Preferences ve Environment Preferences.

Assembler Preferences, derleme işlemi ile ilgili ayarlardır;

Rescue: Kaynak kodunuzun ZS ile silindikten sonra O (Old) komutu ile geri alınabilmesini sağlar. Level 7: AsmOne Level 7 interrupt kullanır.

NumLock

Açık olması durumunda nümerik klavyeyi yön tuşları olarak kullanabilirsiniz.

Auto Alloc

Section'lar için hafıza ayırma işlemini otomatik yapar.

Debug

Debugger'a geçmeden önce kodun otomatik derlenip derlenmeyeceğini belirler.

List File

Derleme işlemi sırasında kod listesini gösterir; satır numaraları, label'lar vb.

Paging

Listelemeyi sayfa sayfa yapar.

All Errors

Hata ile karşılaşıldığında derleme işlemi devam eder. Birçok hatayı aynı anda görmek için kullanabilirsiniz.

Progress Indicator

Derleme işleminde progress gösterir.

Progress By Line

Derlenmekte olan satırı gösterir.

DS Clear

DS ile ayrılan bloğun temizlenmesini sağlar. Normalde bu alan herhangi bir değer ile doldurulmaz. Derlenmiş programda temizlenmeyeceğini unutmayın.

Label :

Label'lar : ile bitmesi gerektiğini gösterir.

UCase - LCase

Büyük/Küçük harfin eşit kabul edilip edilmeyeceği.

; Comment Açıklama satırlarının ; ile başlayıp başlamayacağı. Processor Warn Kullandığınız komutların seçili

CPU tarafından desteklenmemesi durumunda uyarı gösterilir.

FPU Present

Sisteminizde FPU olup olmadığını seçebilirsiniz.

68020/044 Odd Data

68020 ve üstü işlemcilerde data'larınız tek adreslere denk gelebilir. 68000'de bu durumda hata oluşur. Tek adrese denk gelen data olması durumunda uyarı verilip verilmeyeceğini bu seçenek ile belirleyebilirsiniz.

68851 Present

Sisteminizde MMU olup olmadığını seçebilirsiniz.

Environment Preferences, uygulama ayarlarınızın bazılarının açıklamaları aşağıdaki gibidir:

RegTools Library

Dosya açma / kaydetme işlemleri için RegTools library kullanılır.

Save Marks Dosyanızın içine belirlediğiniz mark'lar da kaydedilir. WB to front Kodunuzu çalıştırdığınızda

Workbench öne getirilir.

Resident Registers

REGSDATA dosyası hafızada bekletilir. [R] ile tüm donanım register'larının listesini görebilirsiniz.

Safety Popup pencerelerde varsayılan seçenek olmaz. Close Workbench AsmOne açıldığında WB kapatılır. WB'den çalışan başka programlar varsa kapatılamayabilir.

Clipboard Support

Clipboard açık/kapalı.

Parameters Debug işlemi başlatılırken koda parametre verilip verilemeyeceği. PS ile verilecek parametreleri belirleyebilirsiniz. RTG Mode Grafik kartı desteği açık/kapalı.

DİKKAT! Eğer AGA ekranda çalışıyorsanız ve bu seçenek seçiliyse Debugger'a girerken hata alabilirsiniz. Grafik kartı ekranında çalışmıyorsanız seçmeyiniz.

Extended RegTools

Bul/değiştir gibi işlemler için

RegTools kullan/kullanma. Keep x Editörde — aşağı/yukarı ilerlerken imleç aynı kolon hizasında kalır.

ASCII Only Monitörde ASCII olmayan karakterler gösterilmez. Disassemble Debugger'da bir sonraki satırı gösterir.

Show Source

Debugger ekranında derlenmiş kod ya da kaynak kod gösterilmesini sağlar.

Enable/Permit

Kod önce multitasking'in kapatılıp kapatılmayacağı.

Libcalls dec

Library fonksiyonları için ofset değerleri decimal modda gösterilir.

AsmOne Direktifleri

Aşağıdaki kodlarınızın içinde kullanabileceğiniz direktifleri ve açıklamalarını bulabilirsiniz.

EXTERN

(label)

EXTERN |Harici bir dosyayı

İnumber,|<file>,<ad dress>|,length)

verilen adresten İtibaren yükle

<label> — <value> label'a atar.

<değer>

<label> *<operator>

Derleme işleminde O anki hafıza adresini gösterir.

ADDWATCH

ADDWATCH <label>

Debugger için bir izleme yeri ekler.

ALIGN

ALIGN <value1>,<value2>

Sonraki satırın denk geleceği adresi belirler. Değer2'ye bölünebilen, sonraki ilk adres bulunur ve değeri eklenir, derleme işlemine bu adresten itibaren devam edilir. Ör: ALIGN 0,4 bir sonraki 4'e bölünebilen (longword) adrese geç. Burada arada atlanan byte'lara herhangi bir değer yazılmaz.

AUTO

AUTO

Derleme sırasında diğer DLC'lerin çaland..)

ıştırılmasını sağlar, komutlar | ile ayrılır.

BASEREG

BASEREG <label>,<register>

Verilen adres reg. için bir ofset değeri atar, sonraki tüm relatif işlemlerde bu ofset değeri otomatik olarak eklenir.

BLK

(label) BLK.İBIW|LID|SI <value1>,<value2>

Sabit değerlerden oluşan bir blok tanımlar. Ör: BLK.W 100,$AA55 ;100 adet $AA55 (word)

CMEXIT

CMEXIT <value>

İç içe çağırılan makrolardan <değer>'e ulaşıldığında çıkılmasını sağlar.

CNOP

CNOP <value1>,<value2>

Bkz. ALIGN

DC.<size> <expression>[,expression...]

Sabit veri tanımlamanızı sağlar, Ör: DC.B $01,$02,'plazma',$80

DCB

<value1>,<value2>

Bkz. BLK

<value>

Relatif değerlerden oluşan bir blok tanımlamanızı sağlar. Bu değerler bulunduğu adres ile verilen değer arasındaki fark ile hesaplanır (<value>-*). Ör: DR.L myRoutine

DS.<size> <value> kullanılmak üzere <değer> kadar alan ayırır. Ör: DS.W 50 ;50 word (100 byte) alan ayır. Dikkat! Bu ayrılan alan hiçbir değer ile doldurulmaz.

İleride

ELSE

IF ile kullanılır

END

Kodun bittiği yeri gösterir, o noktadan sonrası derlenmez.

ENDB ENDB <address> Base register tanımlamasını kaldırır. ENDC ENDIF ile aynıdır. IF bloğunu bitirir. ENDM Makro bloğunu bitirir. ENDOFF OFFSET tanımlamasını kaldırır. ENDR REPT bloğunu bitirir. ENTRY Harici bir tanımlama yapar. Bkz. XDEF, EXTRN, GLOBAL. EOU <label> EOU <label>, <değer> <value> atar. EOUC <label> reg.'na <isim> <PPC register> verir. EOUD <label> EOUD <label>, <değer> <FPU value> atar. (Double, Ondalık) EOUP <label> EOUP <label>, <değer> <FPU value> atar. (Packed) EOUR <label> EOUR <label>, <register>a <isim> <register> verir. EOUS <label> EOUS <label>, <değer> <FPU value> atar. (Single, Ondalık) EOUX <label> EOUX <label>, <değer> <FPU value> atar. (Extended) EREM REM bloğunu bitirir. ETEXT TEXT bloğunu bitirir. EVEN Sonraki adresin bir çift (even) adres olmasını sağlar (CNOP 0,2). EXTRN EXTRN Harici tanımlama yapar. C'deki extern ile aynıdır.

FAİL 'Üser made FALL' rese yükler. hatası verilmesini sağlar. INCDIR INCDIR <path> İNCBİN vb. komutlar için path be- FİLESİZE FİLESİZE(<file>) Harici bir dosyanın lirtir. Ör: IİNCIDR boyutunu okur. "HDO:sourcesi/" Özellikle — derleme ;sondaki / karaktesırasında Memory rini unutmayın. Allocation için kullanışlıdır. INCİFF IFF dosya include eder GLOBAL Bkz. EXTRN INCİFEP IFF palet include IDNT IDNT <string> 222 eder IF IF(EOJNE|GTİGE|L bloğu açar INCLUDE INCLUDE <file> Verilen kaynak kod T|LE) <bool-value> dosyasını — include eder. Bu işlem sa- 1F1 Bu blok içindekiler dece ilk derlemede sadece derlemenin bir defa yapılır, böyilk aşamasında der- lece derleme işlelenir. (AsmOne/Pro minde hız sağlanır. 2 aşamalı (2 Pass) ZI ile hafızaya yükbir derleyicidir) lenmiş olan bu dosyaları temizleyip ye- Bu blok içindekiler “Yüklenmeler sadece derlemenin rini sağlayabilirsiniz. ikinci. aşamasında derlenir. INCSRC INCSRC <sourcenumber> <sourcenumber> numaralı kaynak IFB 22? kodu include edilir. IFC IFC <string1> 2 JUMPERR JUMPERR <label> kendi hata rutini- <string1>,<string2> |<string2> oldu- nize atlamanızı sağunda IF bloğu der- ğlar lenir. LOAD LOAD <address> Derleme işleminin IFD <symbol> <sembol> — tanımlı belirli. bir: adresten ise blok derlenir. itibaren yapılmasını sağlar. Bkz. ORG IFNB 292? MACRO Makro bloğu açar. IFNC IFNC <stringi> ile <symbol1>,<symbol | <string2> eşit olma-| — | MEXIT Makro tanımlamas- 2> dığında blok der- ından çıkar. Tanımlamayı bitirmek için ENDM kullanın. IFND IFND <symbol> <sembol> tanımlı değil ise blok der- ODD Sonraki adresi tek (o0dd) adres yapar. IMAGE IMAGE Bkz. INCBIN ÖFESET <file>f,<address>| ORG ORG <address> Program için bir INCBİN INCBİN Binary dosyayı hafı- mutlak. — İzaya okur. Adres başlangıç — adresi verilirse verilen ad- belirler. LOAD ile birlikte programınızın belirli bir hafıza ığını belirler: ON, adresine yerleştiril- OFF verilebilir. mesini sağlayabilir- SİNİZ. SETMMU SETMMU <option> olup olmadığını belirler: ON, PRINTT PRINTT <string> Verilen ifadeyi ek- OFF verilebilir. rana yazar. TEXT TEXT bloğu baş- PRINTV PRINTV Verilen <label> ya latır. Bkz. ETEXT <label/value>|,label/ |da <value>'ları ekvalue...) rana yazar. XDEF XDEF Diğer kodlarda kullanılmak üzere ve- REM Açıklama bloğu rilen label'ları harici açar. REM / EREM olarak tanımlar. arasında kalan yazılar derlenmez. ; ile| | XREF XREF Verilen — label'ların tek satırlık açıkla- harici tanımlar oldumalar girebilirsiniz. ğunu belirtir. Derleme işleminde aktif REPT REPT <number> REPT / ENDR aras- kaynak kodda bu ındaki blok ifadeler tanımlı ol- <number> kadar masa da derleme tekrarlanır. işlemi devam eder. RS RS.|size) <value> |Dâhili RS sayacına <value> ekler. Ör-| Hata Mesajları neklere bakınız. RSRESET RS sayacını sıfırlar. Hata Mesajı Açıklama RSSET RSSET <value> RS sayacını verilen Workspace Memory Full Proje için ayrılan hafıza bitti, değere eşitler. —M kullanın SECTİON İlabel) bir program Address Register Byte/Logic |Adres reg.'larına .B ile ulaşame |bölümü (section) mazsınız. mory)| başlatır. Tip CODE, DATA ve BSS ola- Ayrıca lojik işlem uygulabilir, hafıza için C hamaz. tehip), (fasij and Ör. OR.W A0,DO (public) kullanılabilir. Copper list, ses ve görüntü veri- Address Register Expected Adres reg. gereken yerde data lerini RAM'e veg. Kullanıldı koymak için kullanabilirsiniz. Comma Expected , İle ayrılmış argüman gerekli SET (label) SET <value> <value>'ya Data Register Expected Data reg. gereken yerde adres eşitler. ECU ve - ile reg. kullanıldı aynıdır, ancak daha sonra aynı label için Double Symbol Aynı ifade iki kez tanımlanmış farklı değer SET edilebilir. Unexpected End of File Bir ifadesi açık kalmış SETCPU SETCPU <option> |CPU tipini belirler: 000, 010, 020, 030, End of File Dosya sonuna ulaşıldı 040, 060 olabilir. (Search) SETFPU SETFPU <option> İFPU olup olmad- User made FAL komutuna rastlandı

(compile-time)

Illegal Command

Geçersiz komut

Illegal Address Size

Geçersiz adres boyutu. Ör. CLR.B A0

Illegal Operand

Geçersiz argüman

Illegal Operator

Geçersiz operatör

Illegal Operator in BSS Area

BSS içinde yalnızca DS kullanın

Illegal Order

Argüman sırası hatalı. Ör: MOVEM.L A0,D4-D0/-(A7) ;Önce data sonra adres reg. verilmelidir.

Illegal Register Size

Geçersiz reg. boyutu. Ör: MOVE.L (A0,D0.B),D1 ;index reg. .W ya da .L olabilir

Illegal Section Type

Geçersiz SECTION tipi. Geçerli tipler: code, data, bss

Illegal Size

Hatalı boyut. Ör: ADDA.B D0,A0 ;adres reg. ile .B işlem yapılamaz

Illegal MACRO Definition

Geçersiz MACRO tanımı

Immediate Operand Expected

Bazı komutlar sadece

Include Jam

Include hatası

MACRO Overflow

İç içe en fazla 25 makro tanımlanabilir

Invalid Address Mode

Geçersiz adres modu

LOAD without ORG

LOAD komutu yalnızca ORG ile kullanılabilir

Makro Tanımlama

AsmOne/Pro bir makro assembler'dır. Yani kaynak kodlarınız içinde sık kullandığınız işlemleri kolayca yapmak ve tekrar tekrar yazmamak için çeşitli makrolar tanımlayabilirsiniz. Bu bölümde nasıl makro tanımlayacağımızı göreceğiz.

Bir makro tanımı yapmak için en uygun yer kodunuzun ilk satırlarıdır. Ayrıca tüm makrolarınızı ayrı bir include dosyasına da koyabilirsiniz. Bir makro tanımlaması aşağıdaki şekilde yapılır:

MYMACRO: MACRO
ENDM

Burada MYMACRO tanımladığımız makronun ismidir. İsmin büyük harfle yazılması şart değildir ancak kod içinde makro çağırılan yerleri kolayca görmek açısından bu şekilde kullanmak iyidir. Makro ismi aynı zamanda bir label gibidir bu nedenle ayarlarınızda label sonlarında : olması gerektiğini seçtiyseniz burada da olması gerekir. Ayrıca isim ile MACRO ifadesi aynı satırda olmalıdır.

CLEAN: MACRO
moveg #0,d0
moveg #0,dl1l
moveg #0,d2
ENDM

Makrolara Argüman Verme

Tanımladığınız makrolara 10 taneye kadar argüman ekleyebilirsiniz. Bunun için V0 - V9 ifadelerini kullanabilirsiniz. Aşağıdaki örneği inceleyin:

CLEAN: MACRO
moveg #0,V1
TEST: MACRO
move.l (V1)4,
ENDM
CLEAN D3
TEST AO,AL

Ayrıca NARG isimli değişken makro içinde, makronun kaç argümanla çağırıldığını görmek ve buna göre farklı adımlar uygulamak için kullanılabilir:

CLEAN: MACRO
IF NARG - 2
elr.l WI
elr.l v2
ELSE
FAIL
ENDIİF
ENDM

Daha karmaşık bir makro örneği aşağıdadır (AsmOne 1.4 Manual'den alıntıdır):

do it: MACRO
btst
bne.b vel
move.l N2, d0
lsl.w #V3,dO0
bra.b
Vel: moveg #0,dO
ENDM
start;
do it 10,d2,3

Include dosyalarından (özellikle exec/types.i) pek çok makronun nasıl tanımlandığını görebilirsiniz.

Makrolar Hakkında Dikkat Edilmesi Gerekenler

AsmOne/Pro'da makro yazarken bazı kurallara dikkat etmemeniz durumunda bulunması çok güç hatalarla karşılaşabilirsiniz. Çünkü AsmOne, hataları makronun içinde değil makronun çağırıldığı yerde verecektir. Bu yüzden aşağıdaki konulara dikkat edin;

Açıklama (comment) satırlarını makroların dışına yazın.

2. Makro içinde | karakterini argümanlar dışında bir amaç için kullanmayın. 3. Makro tanımları içinde gereksiz hiçbir karakter kullanmayın.

Include Dosyaları ile Çalışmak

Include dosyaları C'den bildiğimiz include dosyaları ile aynı işi görürler. “.i” uzantılıdırlar ve içerikleri AsmOne ile derlenebilecek şekildedir. İçlerinde çok çeşitli tanımlar, tipler (types), yapılar (structure), makro tanımları ve sabitler (constants) vardır. Commodore firmasının yayınladığı “Includes & Autodocs” dosyalarını bulup hard diskinize ve bir diskete kopyalayabilir ve AsmOne'ın içinden yüklenerek kullanabilirsiniz. Autodoc'lar tüm kütüphanelerin tüm fonksiyonlarını açıklayan yardım dosyalarıdır.

Ayrıca bu dosyalara ek olarak kütüphane ofset değerlerini barındıran LVO (Library Offsets) dosyaları vardır. Bu dosyalar çoğunlukla include klasörünün içinde LVO isimli ayrı bir klasörde dururlar. Bu dosyaları include ettiğinizde fonksiyonlar için ofset değerlerini ezbere bilmenize gerek kalmaz. Aşağıdaki örneği inceleyin:

incdir Tinelude:"
include "exec/types.i"
include lib.i"
CALL: MACRO
İsr
ENDM
(a6)
; Open Gfx Library
;
move.l
lea
$4.w,a6
gfxname
CALL OpenLibrary
move.l d0,gfxbase
beg.s NoGİx

Burada önce gerekli dosyalar include edilmiş, fonksiyon çağırma işlemini kolaylaştırmak için bir makro tanımlanmış ve OpenLibrary fonksiyonu çağırılmıştır. exec_lib.i dosyası include edilmemiş olsaydı CALL yerine jsr -552(a6) yazmamız gerekecekti.

“types.i” dosyası ise tüm ön tanımlı ifadeleri barındırır. Herhangi başka bir dosyayı include etmeden önce bu dosyanın include edilmesi gerekir.

Ayrıca bu dosyaların içine bakarak da çok şey öğrenebilirsiniz. İçlerinde pek çok yararlı açıklama vardır.

Incdir "include:" ifadesinde tam yolu vermek yerine daha önceden yapılmış bir assign kullanılmıştır. CLI penceresinde assign komutu vererek assign'ların listesini alabilir ve yenilerini ekleyebilirsiniz. Ya da dilerseniz include dosyalarının tam yolunu yazabilirsiniz. INCDIR ifadesini kod içinde herhangi bir yerde tekrar vererek farklı klasörlerle çalışabilirsiniz.

Ayrıca belirtmekte fayda var; pek çok include dosyasının derlenebilmesi için ayarlarınızda UCase — LCase'in kaldırılması gerekir. Bazı durumlarda label'lar için : zorunluluğunu da kaldırmanız gerekebilir.

Sonsözler

AsmOne/Pro kullanımı hakkında uzunca bir yazı oldu. Son olarak şunları ekleyebiliriz; AsmOne/Pro çok kullanışlı editörler olsa da bug'ları vardır, o nedenle çalışırken kodlarınızı hard disk ya da floppy diske kaydetmenizi öneririm. Benim yaptığım gibi RAM diske kaydetmeyin, aksi halde makineniz kilitlendiğinde kodlarınızı kurtaramayabilirsiniz.

Kodlarınızı yazarken her zaman label'ları en sol sütuna, komutları ise en az 1 tab karakteri ileriye yazın. Bu sadece okunabilirlik için değil, sebebini anlamadığınız birçok hata mesajını da almanızı engelleyecektir.

Sonraki sayıya kadar hoşça kalın.