Plazma sayı 5, sayfa 75

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 75

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

Klavyeyle gezinmek için ← ve → tuşları.