CROSS-32 META ASSEMBLER

Cross-32 Meta Assembler,evrensel Cross-Assemblerdan bir derece daha esnektir.

Buhaliyle kullanıcının Assembly dili programlarını pek çok mikroişlemci,mikrokontrolör ve dijital sinyal işlemcileri için çevirmesine imkan tanır. Cross-32 aşağıdaki mikroişlemci ailelerinin tamamı için tablolar,orjinal üreticilerin minemoniklerini ve örnek Assembly dili kaynak dosyalarını içerir.

18026418065C0265816
68016805680968HC11
6800080186COP400COP800
8048805180858096

Cross-32 kullanıcı el kitabı sizin kendi işlemci tablolarınızı yazmanız veya bunları düzenlemeniz için tam bir eğitim içerir.

Program çalıştırıldığı zaman,Cross-32 bir Assembly dili kaynak dosyasını ve ona karşılık gelen Assembler öğretim tablosunu okur,Assembly dili kaynak dosyasını derler,Assembly hatalarını ekran üzerinde gösterir,bir Assembly’de listelenen dosyayı etiket tablosu ve bir hexa desimal dosyası ile birlikte yazar. Bu durumda hexa desimal dosya sizin kişisel bilgisayarınızda EPROM’nuza yüklenebilir.

Assembly dili kaynak dosyası ASCII metin editörü ile yazılabilir. Assembly kaynak satırı serbest formattır, şöyle ki alanlar bir sütün 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 counter’ın şimdiki değerini gösterir.

  1. Cross-32 Assembler Komutları:

CPU: İşlemci bildirimi

DFB: Byte olarak tanımlama

DFS: Veri depolamayı tanımlama

DWM: İlk byte önce olmak kaydıyla kelime olarak tanımlama

DWL: Son byte önce olmak kaydıyla kelime olarak tanımlama

DFL: Uzun kelime olarak tanımlama

ELSE: Karşılıklı şartlı blok

ENDI : Şartlı bloğun sonu

END: Assembly’nin sonu

ENDM:Makro bloğun sonu

EQU: Etiketi sabit değere eşitleme

HEX: Hex dosyasını açık veya kapalı duruma anahtarlamak

HOF: Hexa desimal çı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: Makro bloğunu tanımlamak

ORG: Program counter orijini

PAGE: Sayfa uzunluğunu listelemek

SETL: Etiketi değişken değere kurmak

TITL: Title starting listening pages

Hexa desimal formatlar: Binary, Intel 8-16 bit ve Motorola 8-16

Binary işlemciler: Or,And,Not,Xor,Shr,Shl,Mod,Inv

2-Cross-32’yi Çalıştırmak:

Zarfın içinde gelen disket Cross-32 Meta Assembler (C32.EXE)içerir. Ayrıca bu disketin içinde yirminin üstünde mikroişlemcinin tablosu(CPU.TBL dosyası içinde) ve bunlara uygun örnek Assembly kaynak dosyaları(ECPU.ASM dosyası içinde) vardır. “Üniversal Cross Assemblers” kullanıcıya “Cross 32”disketinin tamamını yüklemesini tavsiye 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 işlem olmayacaktır. Buna rağmen herhangi bir list dosyası yaratılıp yaratılmadığına bakılmaksızın bütün hata kodları ekranda görüntülenecektir . Hex dosyaları formatı hof komutu kullanılarak oluşturulur.

3-Cross-32 Assembly Kaynak Dosyası (Source File):

Kaynak dosyası Cross-32 tarafından tamamlanmış olan ASCII Assembler kaynak kodudur. Kaynak dosyasında işlemci öğretim tablosu CPU komutu kullanılarak seçilir, Hexa desimal dosyanın formatı hof komutu kullanılarak kurulur. Aşağıdaki kısımlar assembly kaynak dosyasını oluşturan temel inşaa bloklarını tanımlar. Her bir kısım için örnekler verilmiştir. Ama bunlar listeleme dosyalarında toplanmış ve yapılmıştır ;bunda dolayı bu örneklerin ilk on altı karakterini önceden hazırlamaz.

3-1.Assembly Line Formatı

Sadece bir assembler komutu veya programı,yüz satıra izin verir. Assembly satırı özgür formatlıdır,etiketler sütun 1den başlama ihtiyacı gerektirmez,her bir satır aşağıdaki işlemlerin tamamını veya birkaçını içerebilir.

Line# label: operation operand ; Açıklama

Burada ;

LİNE# : Bir desimal ifadedir.

LABEL : ASCII karakter “A-Z” veya “- “, ”.” ,veya “?” ile başlayan ve bir kolon “:” sonlanan bir ibaredir. Label içerisindeki karakterler alfa nümerik olmalıdır (A-Z,0-9) veya bir “-“ ,”. ,?” olmalıdır.

OPERATİON: Bir Cross-32 Assembler komutudur veya işlemci assembly gösterim tablosunda gösterilen bir ifadedir. Bütün operationlar bir alfabetik karakterle başlamalıdır.

OPERANDS: -2,147,483,648 ‘den 2,147,483,647 bölgesindeki integer değerlerini veya karakter dizelerini gösteren etiketler,sabitler ve ifadelerdir. Bunlar bir assembly dili tanımlamaları 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 ; den sonra yazılan ifadeleri komut olarak algılamaz onları görmezden gelir.

3-2. Labels (Etiketler)

Bir etiket -2,147,483,648 ile 2,147,483,647 bölgesinde bir integer’i gösteren karakterlerin bir alfa nümerik serisidir Etiket alanı bir alfabetik ASCII karakter “A-Z” veya bir “-“, “?”,“.” İle başlamalıdır ve bir kolon “:” ile sonlanmalıdır. Bu durum EQU,SETL, ve MACRO Assembler komutları ile kullanıldığında bile böyledir. Etiket içerisindeki karakterler alfa nümerik olmalıdır. EQU,SETL ve MACRO komutlarının haricinde bir etiket isteğe bağlıdır ve program sayacının şimdiki değerini işaret eder . Etiketler Cross-32 başlangıç satırının 255 karakterden daha uzun olmaması dışında herhangi bir karakter uzunluğunda olabilir ve bütün karakterler anlamlıdır.

 

4- Operands:

4-1. Nümerik Değişmezler

B Binary 2’lik 0-1

O Oktal 8’lik 0-7

Q Oktal 8’lik 0-7

D Desimal 10’luk 0-9

H Hexa desimal 16’lık 0-9,A-Z

4-1. Sıralı Değişmezler

Sıralı değişmezler iki tırnak(“”)işareti arasında yazılan cümlelerden ibarettir.C32liste içerisinde bu ifadeleri onların ASCII değerlerinin hexa desimal gösterimleri ile sıralatacaktır. Bir tırnak (‘) işareti , o dizinin sonu olarak yorumlanacağı için bir karakter dizisi içinde görünemez.

Sitring dizisi ayrıca uygulanabilir bir operand olarak kullanılabilir. DFB ifadesinde,

sitring dizisinin uzunluğu 255 karakterin dışına çıkamaz. DWM,DWL,DFL,SETL ve EQU komutları içinde bir operand olarak kullanıldıkları zaman, eğer sitring dizisi assembler komutu tarafından belirtilen operand uzunluğunu aşarsa bir hata işaret edilecektir.

5-Cross-32’de Görülen Hata Mesajları:

-A- Ascıı Error :Ascıı karakter dizisinin uygun olmayan formatıdır. Tırnak işareti ile belirlenir.

-B- Bracket Error : Parantez içerisindeki ifade sağ ve solda eşit numaralı değilse bu hata oluşur.

-D- Digit Error : Bir digit’in içinde bir numara esas kaide için geçerli değilse bu hata oluşur.

-E- Expression Error :

-H- Hex Format Error : Uygun olmayan hexa desimal üretilen format Hof emrinin içinde belirtilmiş ise bu hata oluşur .

-L- Line Error : Beklenmedik karakterlerin (kaybolmuş) assembly dizisine kurulmasıdır .

-P- Phase Error : Bir etiketi birden fazla kullanmadan kaynaklanan hatadır.

-S- Syntax Error : Cross-32 emir ve talimatlarını tanıyamamaktan kaynaklanan hatadır.

-T- Too many Error : Cross-32 içindeki emir ve talimatların bir çok anlaşmazlık içermesiyle oluşan hatadır.

-U- Undefined Label . İfade içerisinde kullanılmış etiket veya minemonik tanımlanmamışsa sık

sık bu hataya sebep olur.

-V- Value Error : Cross-32 içerisinde tanımlanan emir,operand ve talimatların verilen değeri aşmasıyla oluşan bir hatadır.

-Y- Symbol Error : Eksik(kaybolmuş) veya uygun olmayan sembol(etiket) hatasıdır.

-Z- Zero Error : Bildirilen kaynak dizinin içini sıfır ile bölme hatasıdır.