Cross 32 Meta Assembler, Evrensel Cross-Assembler’dan bir derece daha esnektir. Bu haliyle kullanıcının assembly dili programlarını pek çok mikroişlemci, mikrocontroller ve dijital sinyal işlemci aileleri için çevirmesine imkan tanır. Cross 32 aşağıdaki mikroişlemci ailelerinin tamamı için tablolar, orjinal üreticilerin mnemoniklerini ve örnek assembly dili kaynak dosyalarını içerir.
| 1802 | 64180 | 65C02 | 65816 |
| 6801 | 6805 | 6809 | 68 HC11 |
| 68000 | 80186 | C0P400 | C0P800 |
| 8048 | 8051 | 8085 | 8096 |
| TMS 320 | TMS 370 | SUPER8 | Z8/Z80 |
Program çalıştırıldığı zaman, Cross 32 bir assembly dili kaynak dosyasını ve ona karşılık gelen assembler tanımlama tablosunu okur. Assembly dili kaynak dosyasını derler. Assembly hatalarını ekran üstünde gösterir. Assembly’ de listelenen dosyayı etiket tablosu ve bir hekzadesimal (program) dosyası ile birlikte yazar. Bu durumda Hekzadesimal dosya sizin kişisel bilgisayarınızdan EPROM’unuza yüklenebilir.
Assemly dili kaynak dosyası ASCII metin editörü ile yazılabilir. Assembly kaynak satırı serbest formattır. Öyle ki alanlar bir sütun içerisine yerleştirilebilir. Bütün etiket değerleri bir alfabetik harf (A-Z), “-“, “.” veya “?” karakteri ile başlamalıdır ve “: ” ile bitmelidir. Bütün dahili etiket karakterleri; alfa nümerik (A-Z, 0-9), “-“, “.”, ve “?” olabilir. Etiket uzunluğu sadece maksimum satır uzunluğu olan 255 karakterle sınırlıdır. Büyük ve küçük harfler eşit olarak işlem görür. Cümle ifadeleri iki tırnak (“) işareti arasında ayrıca tanımlanabilir. A$ ifadesi program sayacının şimdiki değerini gösterir.
|
CPU |
İşlemci bildirimi (Processor Declaration) |
|
DFB |
Byte olarak tanımlama (Define Byte) |
|
DFS |
Veri depolamayı tanımlama (Define Data Storage) |
|
DWM |
Kelime olarak tanımlama (Define Wo rd) (first byte first) |
|
DWL |
Kelime olarak tanımlama (Define Word) (last byte first) |
|
DFL |
Uzun kelime tanımlama (Define Long Word) |
|
ELSE |
Karşılıklı şartlı blok |
|
END |
Assembly’nin sonu |
|
ENDI |
Şartlı bloğun sonu |
|
ENDM |
Makro bloğun sonu |
|
EQU |
Etiketi sabit değere eşitlemek |
|
HEX |
Hex dosyasını açık veya kapalı duruma anahtarlamak |
|
HOF |
Hekzadesimal çıkış formatı |
|
IF |
Şartlı bloğun başlaması |
|
INCL |
Dosyayı kaynak kodu içerisine sokmak |
|
LIST |
List dosyasını açık veya kapalı duruma anahtarlamak |
|
MACRO |
Macro bloğunu tanım lamak |
|
ORG |
Program sayacı orjini |
|
PAGE |
Sayfa uzunluğunu listelemek |
|
SETL |
Etiketi değişken değere kur |
|
TITL |
Title starting listining pages |
|
; |
Açıklama |
C32 sourcefile [
-L Listfile]
[
-H hexfile]
Burada kare köşe ayraçları [
]
isteğe bağlı olan seçenekleri ifade eder.
“L” Cross 32’ye hemen aşağıdaki dosya ismini kullanan bir assembly dosya listesi oluşturmasını söyler. “ - H” hemen aşağıdaki dosya ismini kullanan bir makine kod çıkış dosyasını oluşturmasını Cross 32’ye söyler. Eğer bunlar uygun dosyalara uygulanmazsa oluşturulamayacaklardır. Bir liste dosyası yaratılıp yaratılmadığına bakılmaksızın bütün hata kodları ekranda görüntülenecektir. Hex dosyaların formatı HOF komutu kullanılarak oluşturulur. Bunun nasıl yapıldığı bu rehberde daha sonra açıklanacaktır. Cross 32 tarafından kullanılan işlemci tanımlama tablosu CPU komutunu kullanan kaynak dosyası içinde özellikle belirtilir. Disk ve directory isimleri dosya isimlerini içerebilir.
E8048.asm
Source : E8048.ASM
listining : NONE
hex : NONE
C32 E8048.ASM -L B : E8048.LST
source : E8048.ASM
listining : B : E8048.LST
hex : NONE
C32 C: E8048.ASM -H\HEX\E8048.HEX
source : E8048.ASM
listining : E8048.PRN
hex : E8048.HEX
Cross 32 ekranda aşağıdaki gibi oluşturulur:
Cross 32 Meta-Assembler PC/MS DOS versiyon 1.10
Copyright © 1988 Universal Cross-Assemblers
Starting Pass Number : 1
Starting Pass Number : 2
END of Assembly ..... No errors
C>
Burada C> işletim sistemi promptudur. Cross 32 bir iki geçişli meta-assembler olduğundan dolayı kaynak dosyası genellikle iki kez okunur. İşlemci tanımlama tablosu sadece bir kez okunur ve ikinci geçiş için RAM’ de tutulur. Herhangi bir assembly hatası ekranda ikinci geçiş esnasında görüntülenecektir. Listeleme ve makine kodu dosyaları sadece ikinci geçiş esnasında yazılır.
Kaynak dosyası Cross 32 tarafından toplanmış olan ASCII assembler kaynak kodudur. Kaynak dosyasından işlemci tanımlama tablosu CPU komutu kullanılarak seçilir. Hexadesimal dosyanın formatı HOF komutu kullanılarak seçilir. Aşağıdaki alt kısımlar assembly kaynak dosyasını oluşturan temel inşa bloklarını tanımlar. Her bir kısım için örnekler verilmiştir. Ama bunlar listeleme dosyalarından toplanmış ve yapılmıştır. Bundan dolayı kullanıcı bu örneklerin ilk 16 karakterini önceden hazırlamaz.
Bir assembler komutu veya programı sadece yüz satıra izin verir. Assembly satırı özgür formatlıdır. Etiketler sütun 1’den başlama ihtiyacı gerektirmez. Her bir satır aşağıdaki işlemlerin tamamını veya birkaçını içerebilir.
Line # label operation operand (s) ; Açıklama
Burada;
Line # bir desimal ifadedir.
Label: Bir ASCII karakter “A-Z” veya bir “-“, “.” veya “?” ile başlayan ve bir kolon “:” ile sonlanan bir ibaredir. Label içerisindeki karakterler alfa nümerik olmalıdır (“A-Z”, “0-9”) veya bir “-“, “.” veya “?” işareti olmalıdır.
Operation: Bir Cross 32 assembler komutudur veya işlemci assebly gösterim tablosunda gösterilen bir ifadedir. Bütün operation’lar bir alfabetik karakter ile başlamalıdır.
Operands: -2, 147, 483, 648 den 2, 147, 483, 647 bölgesi arasındaki tamsayı değerlerini ve/veya karakter dizilerini gösteren etiketler, sabitler, ifadelerdir. Bunlar bir assebly dili tanımları içinde şekillendirilebilir.
Comment: Genellikle assembly dili programlarını tanımlamak için kullanılan “;” işaretinden sonra yazılan açıklamalardır. “;” işareti Assembly satırında herhangi bir yere konulabilir ve Cross 32 “; “ işaretinden sonra yazılan ifadeleri komut olarak algılamaz. Onları görmezden gelir.