AMIGA ASSEMBLER

AMIGA ASSEMBLER

Selam! Bu ay yine size yine komutlarla baş başa bırakacağım. Artık ne yazık ki komutlar bitmeden diğer konulara dönemeyeceğiz. Bu ay herhalde en büyük kısmını atlatacağız. Kalan kısmı da gelecek aya bırakıyorum. Şimdilik hoşça kalın ... Komut: EOR (do logical ExOR) Kullanım şekilleri: EOR Dx,Dy / EOR Dx,(Ay) EOR Dx,(Ay)+ / EOR Dx,-(Ay) / EOR Dx,d(Ay) EOR Dx,d(Ay,Dy) / EOR Dx,$yy.W / EOR Dx,$yyyy.L Açıklama : Source data register'ındaki sayıyı destination'ın içeriği ile Exor'layarak sonucu destination'a yazar. Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : EOR Dx,Dy = 4 CLCK, 4 CLCK, 8 CLCK EOR Dx,(Ay) = 12 CLCK, 12 CLCK, 20 CLCK EOR Dx,(Ay)+ = 12 CLCK, 12 CLCK, 20 CLCK EOR Dx,-(Ay) = 14 CLCK, 14 CLCK, 22 CLCK EOR Dx,d(Ay) = 16 CLCK, 16 CLCK, 24 CLCK EOR Dx,d(Ay,Dy) = 18 CLCK, 18 CLCK, 26 CLCK EOR Dx,$yy.W = 16 CLCK, 16 CLCK, 24 CLCK EOR Dx,$yyyy.L = 20 CLCK, 20 CLCK, 28 CLCK Komut: EORI (ExOR Immadiatly) Kullanım şekilleri: EORI #xxxx,Dy / EORI #xxxx,(Ay) EORI #xxxx,(Ay)+ / EORI #xxxx,-(Ay) / EORI #xxxx,d(Ay) EORI #xxxx,d(Ay,Dy) / EORI #xxxx,$yy.W EORI #xxxx,$yyyy.L/ EORI #xxxx,CCR / EORI #xxxx,SR Açıklama : Verilen sabit değeri destination'ın içeriği ile Exor'layarak destination'a yazar. Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre :

EORI #xxxx,Dy = 8 CLCK, 8 CLCK, 16 CLCK EORI #xxxx,(Ay) = 16 CLCK, 16 CLCK, 28 CLCK EORI #xxxx,(Ay)+ = 16 CLCK, 16 CLCK, 28 CLCK EORI #xxxx,-(Ay) = 18 CLCK, 18 CLCK, 30 CLCK EORI #xxxx,d(Ay) = 20 CLCK, 20 CLCK, 32 CLCK EORI #xxxx,d(Ay,Dy) = 22 CLCK, 22 CLCK, 34 CLCK EORI #xxxx,$yy.W = 20 CLCK, 20 CLCK, 32 CLCK EORI #xxxx,$yyyy.L = 24 CLCK, 24 CLCK, 36 CLCK EORI #xxxx,CCR = 20 CLCK, 20 CLCK,------- EORI #xxxx,SR = 20 CLCK, 20 CLCK,------- Komut: EXG (EXchange data) Kullanım şekilleri: EXG Dx,Dy Açıklama: İki data register'ının içeriğini birbirleriyle değiştirir. Etkilenen flaglar :----- Adresleme şekillerine göre harcadığı süre : EXG Dx,Dy =........., ------ , 6 CLCK Komut: EXG (EXchange data) Kullanım şekilleri: EXG Ax,Ay Açıklama : İki adres register'ının içeriklerini değiştirir. Etkilenen flaglar :----- Adresleme şekillerine göre harcadığı süre : EXGAx,Dy = ------,......... , 6 CLCK Komut: EXG (EXchange data) Kullanım şekilleri: EXG Ax,Dy Açıklama : Adres register'ıyla data register'ının içeriklerini değiştirir.

Etkilenen flaglar :----- Adresleme şekillerine göre harcadığı süre : EXGAx,Dy = ------ , ------ , 6 CLCK

Komut: EXT (EXTended data) Kullanım şekilleri: EXT Dy Açıklama : Data register'ının içeriğindeki 7./15. biti geri kalan 16./24. bite (8./16. bitten itibaren) kopyalar. Eğer data register'ının içeriği byte ise 7. bit, word ise 15. bit kopyalanan bit olur. Bu şekilde byte bir değerini word, word bir değerini de longword yapabilirsiniz.

Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : EXT Dy = ---, 4 CLCK, 4 CLCK Komut: İLLEGAL Kullanım şekilleri: İLLEGAL Açıklama : 4 numaralı trap vektörünü çalıştırır. Bu şekilde programınızın bir yerinden hata verdirerek çıkış sağlayabilir ve register'ların da içeriklerini de görebilirsiniz. Fakat açılan ekranlar, ayrılan hafızalar açık kalacaklarından bunları elle kapamak (j<EndLabel>) gerekmektedir.

Etkilenen flaglar :....... Adresleme şekillerine göre harcadığı süre : İLLEGAL = ------ , ——,-------- Komut: JMP (JuMP) Kullanım şekilleri: JMP -(Ay) / JMP d(Ay) / JMP d(Ay,Dy) JMP $yy.W / JMP $yyyy.L / JMP d(PC) / JMP d(PC,Dy) Açıklama : Hafızada direkt olarak bir adrese geri dönüşsüz dallanma yapılır. Dallanılan rutinde RTS komutu ile karşılaşıldığında da program bitirilir.

Etkilenen flaglar : ---- Adresleme şekillerine göre harcadığı süre : Bu komutta .b,.w ya da .l takıları kullanılmaz. JMP-(Ay) =16 CLCK JMPd(Ay) =18 CLCK JMPd(Ay,Dy) =22 CLCK JMP $yy.W =18 CLCK JMP $yyyy.L = 20 CLCK JMPd(PC) =18 CLCK JMPd(PC,Dy) =22 CLCK Komut: LEA (Load Effective Address) Kullanım şekilleri: LEA (Ax),Ay / LEA d(Ax),Ay LEA d(Ax,Dx),Ay / LEA $xx.W,Ay / LEA $xxxx.L,Ay LEA d(PC),Ay / LEA d(PC,Dy),Ay Açıklama : Verilen adres ya da adres register içeriğindeki adresi destination adresine yazar. LEA <Label>,Ay aynı zamanda MOVE.L #<Label>,Ay işlevi daha az CLCK ile yapar. Destination register'ı olarak sadece adres register'ları kullanılabilir. Bu komut sadece 32 bit (longword) üzerinden çalışır.

Etkilenen flaglar : ---- Adresleme şekillerine göre harcadığı süre : LEA (Ax),Ay = 4 CLCK LEA d(Ax),Ay = 8 CLCK LEA d(Ax,Dx),Ay = 12 CLCK LEA $xx.W,Ay = 8 CLCK LEA $xxxx.L,Ay = 12 CLCK LEA d(PC),Ay = 8 CLCK LEA d(PC,Dy),Ay = 12 CLCK Komut: LINK Kullanım şekilleri: LINK Ay,#$xxxx Açıklama : Yeni bir stack bölgesi yaratmayı sağlar. Ay'nin içeriği stack pointer'ına yazılır ve stack adresi 4 byte geri alınarak bulunan adres Ay register'ına yazılır. En son işlem olarak da #$xxxx ile belirtilen adres, stack bölgesinin yeni bitiş adresi olarak gösterilir. Komut işlendikten sonra Ay'de eski stack'in adresi bulunur.

Etkilenen flaglar : ---- Komut: LSL (Logical Shift Left) Kullanım şekilleri: LSL Dx,Dy / LSL #xx,Dy Açıklama : Destination'ın içeriğini source değeri kadar bit sola kaydırır. Soldan taşan bitler C ve X flaglarına kopyalanır. Boş kalan bit yerlerine de 0 yazılır. Sola kaydırma sayesinde destination'ın içeriği 2^n ile çarpılmış olur. Bu yüzden 2^n rakamlarından biriyle çarpma yapacağınız zaman vakitten tasarruf etmek için bit kaydırma da yapabilirsiniz.

Etkilenen flaglar : ***0* Adresleme şekillerine göre harcadığı süre : LSL Dx,Dy=6+2(Dx) CLCK, 6+2(Dx) CLCK, 8+2(Dx) CLCK LSL#x,Dy = 6+2x CLCK, 6+2x CLCK, 6+2x CLCK Komut: LSL (Logical Shift Left) Kullanım şekilleri: LSL (Ay) / LSL (Ay)+ / LSL -(Ay) LSL d(Ay) / LSL d(Ay,Dy) / LSL #yy.W / LSL #yyyy.L Açıklama : Destination'ın içeriğini bir bit sola kaydırır. Etkilenen flaglar : ***0* Adresleme şekillerine göre harcadığı süre : Bu komut sadece word bazında çalışır. LSL (Ay) = 12 CLCK LSL (Ay)+ = 12 CLCK LSL -(Ay) = 14 CLCK LSL d(Ay) = 16 CLCK LSL d(Ay,Dy) = 18 CLCK LSL #yy.W = 16 CLCK LSL #yyyy.L = 20 CLCK Komut: LSR (Logical Shift Right) Kullanım şekilleri: LSR Dx,Dy / LSR #xx,Dy / Açıklama : Destination'ın içeriğini source değeri kadar bit sağa kaydırır. Sağdan taşan bitler C ve X flaglarına kopyalanır. Boş kalan bit yerlerine de 0 yazılır. Sağa kaydırma sayesinde destination'ın içeriği 2^n'e bölünmüş olur. Bu yüzden bir sayıyı 2^n rakamlarından birine böleceğiniz zaman vakitten tasarruf etmek için bit kaydırma da yapabilirsiniz. Fakat bu yöntemde bölümden artan sayıyı elde edemezsiniz.

Etkilenen flaglar : ***0* Adresleme şekillerine göre harcadığı süre : LSR Dx,Dy=6+2(Dx) CLCK, 6+2(Dx) CLCK, 8+2(Dx) CLCK LSR #x,Dy = 6+2x CLCK, 6+2x CLCK, 6+2x CLCK Komut: LSR (Logical Shift Right) Kullanım şekilleri: LSR (Ay) / LSR (Ay)+ / LSR -(Ay) LSR d(Ay) / LSR d(Ay,Dy) / LSR #yy.W / LSR #yyyy.L Açıklama : Destination'ın içeriğini bir bit sağa kaydırır. Etkilenen flaglar : ***0* Adresleme şekillerine göre harcadığı süre : Bu komut sadece word bazında çalışır. LSR (Ay) = 12 CLCK LSR (Ay)+ = 12 CLCK LSR -(Ay) = 14 CLCK LSR d(Ay) = 16 CLCK LSR d(Ay,Dy) = 18 CLCK LSR #yy.W = 16 CLCK LSR #yyyy.L = 20 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,Dy / MOVE Ax,Dy MOVE (Ax),Dy / MOVE (Ax)+,Dy / MOVE -(Ax),Dy MOVE d(Ax),Dy / MOVE d(Ax,Dx),Dy / MOVE $xx.W,Dy MOVE $xxxx.L,Dy / MOVE d(PC),Dy / MOVE d(PC,Dx),Dy MOVE #xxxx,Dy Açıklama : Amiga'nın Assembler'ında en çok kullanılan komutlardan biri de MOVE komutudur. Bu komut, source'taki bilgiyi destination'a (burada data register'ı) yazmayı sağlar. Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : MOVE Dx,Dy = 4 CLCK, 4 CLCK, 4 CLCK

MOVE Ax,Dy = ------ , 4 CLCK, 4 CLCK MOVE (Ax),Dy = 8 CLCK, 8 CLCK, 12 CLCK MOVE (Ax)+,Dy = 8 CLCK, 8 CLCK, 12 CLCK MOVE -(Ax),Dy = 10 CLCK, 10 CLCK, 14 CLCK MOVE d(Ax),Dy = 12 CLCK, 12 CLCK, 14 CLCK MOVE d(Ax,Dx),Dy = 14 CLCK, 14 CLCK, 18 CLCK MOVE $xx.W,Dy = 12 CLCK, 12 CLCK, 16 CLCK MOVE $xxxx.L,Dy = 16 CLCK, 16 CLCK, 20 CLCK MOVE d(PC),Dy = 12 CLCK, 12 CLCK, 16 CLCK MOVE d(PC,Dx),Dy = 14 CLCK, 14 CLCK, 18 CLCK MOVE #xxxx,Dy = 8 CLCK, 8 CLCK, 12 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,(Ay) / MOVE Ax,(Ay) MOVE (Ax),(Ay) / MOVE (Ax)+,(Ay) / MOVE -(Ax),(Ay) MOVE d(Ax),(Ay) / MOVE d(Ax,Dx),(Ay) MOVE $xx.W,(Ay) MOVE $xxxx.L,(Ay) / MOVE d(PC),(Ay) MOVE d(PC,Dx),(Ay) / MOVE #xxxx,(Ay) Açıklama : Source'taki datayı destination adres register'ının içeriğinin gösterdiği adrese yazar,

Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : MOVE Dx,(Ay) = 8 CLCK, 8 CLCK, 12 CLCK MOVE Ax,(Ay) = ------ , 8 CLCK, 12 CLCK MOVE (Ax),(Ay) = 12 CLCK, 12 CLCK, 20 CLCK MOVE (Ax)+,(Ay) = 12 CLCK, 12 CLCK, 20 CLCK MOVE -(Ax),(Ay) = 14 CLCK, 14 CLCK, 22 CLCK MOVE d(Ax),(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE d(Ax,Dx),(Ay) = 18 CLCK, 18 CLCK, 26 CLCK MOVE $xx.W,(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE $xxxx.L,(Ay) = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(PC),(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE d(PC,Dx),(Ay) = 18 CLCK, 18 CLCK, 26 CLCK MOVE #xxxx,(Ay) = 12 CLCK, 12 CLCK, 20 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,(Ay)+ / MOVE Ax,(Ay)+ MOVE (Ax),(Ay)+ / MOVE (Ax)+,(Ay)+ MOVE -(Ax),(Ay)+ / MOVE d(Ax),(Ay)+ MOVE d(Ax,Dx),(Ay)+ / MOVE $xx.W,(Ay)+ MOVE $xxxx.L,(Ay)+ / MOVE d(PC),(Ay)+ MOVE d(PC,Dx),(Ay)+ / MOVE #xxxx,(Ay)+ Açıklama : Source'taki datayı destination adres register'ının içeriğinin gösterdiği adrese yazar ve destination adres register'ını kullanılan bit genişliğine göre 1, 2 ya da 4 artırır. Bu şekilde adres register'ı, komut işlendikten sonra bir sonraki byte/ word/ longword'u gösterecektir. Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : MOVE Dx,(Ay)+ = 8 CLCK, 8 CLCK, 12 CLCK MOVE Ax,(Ay)+ = ------ , 8 CLCK, 12 CLCK MOVE (Ax),(Ay)+ = 12 CLCK, 12 CLCK, 20 CLCK MOVE (Ax)+,(Ay)+ = 12 CLCK, 12 CLCK, 20 CLCK MOVE -(Ax),(Ay)+ = 14 CLCK, 14 CLCK, 22 CLCK MOVE d(Ax),(Ay)+ = 16 CLCK, 16 CLCK, 24 CLCK MOVE d(Ax,Dx),(Ay)+ = 18 CLCK, 18 CLCK, 26 CLCK MOVE $xx.W,(Ay)+ = 16 CLCK, 16 CLCK, 24 CLCK MOVE $xxxx.L,(Ay)+ = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(PC),(Ay)+ = 16 CLCK, 16 CLCK, 24 CLCK MOVE d(PC,Dx),(Ay)+ = 18 CLCK, 18 CLCK, 26 CLCK MOVE #xxxx,(Ay)+ = 12 CLCK, 12 CLCK, 20 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,-(Ay) /MOVE Ax,-(Ay) MOVE (Ax),-(Ay) / MOVE (Ax)+,-(Ay) / MOVE -(Ax),-(Ay) MOVE d(Ax),-(Ay) / MOVE d(Ax,Dx),-(Ay) MOVE $xx.W,-(Ay) / MOVE $xxxx.L,-(Ay) MOVE d(PC),-(Ay) / MOVE d(PC,Dx),-(Ay) MOVE #xxxx,-(Ay) Açıklama : Source'un içeriğini destination adres register'ının gösterdiği adrese yazar ve destination adres register'ını, kullanılan bit genişliğine göre 1, 2 ya da 4 byte azaltır. Bu sayede, komut işlendikten sonra adres register'ı işlenen adresten 1/2/4 byte öncesini gösterecektir.

Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : MOVE Dx,-(Ay) = 8 CLCK, 8 CLCK, 14 CLCK MOVE Ax,-(Ay) =-------, 8 CLCK, 14 CLCK MOVE (Ax),-(Ay) = 12 CLCK, 12 CLCK, 20 CLCK MOVE (Ax)+,-(Ay) = 12 CLCK, 12 CLCK, 20 CLCK MOVE -(Ax),-(Ay) = 14 CLCK, 14 CLCK, 22 CLCK MOVE d(Ax),-(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE d(Ax,Dx),-(Ay) = 18 CLCK, 18 CLCK, 26 CLCK MOVE $xx.W,-(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE $xxxx.L,-(Ay) = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(PC),-(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE d(PC,Dx),-(Ay) = 18 CLCK, 18 CLCK, 26 CLCK MOVE #xxxx,-(Ay) = 12 CLCK, 12 CLCK, 20 CLCK Komut: MOVE (MOVE data)

Kullanım şekilleri: MOVE Dx,d(Ay) / MOVE Ax,d(Ay) MOVE (Ax),d(Ay) / MOVE (Ax)+,d(Ay) / MOVE -(Ax),d(Ay) MOVE d(Ax),d(Ay) / MOVE d(Ax,Dx),d(Ay) MOVE $xx.W,d(Ay) / MOVE $xxxx.L,d(Ay) MOVE d(PC),d(Ay) / MOVE d(PC,Dx),d(Ay) / MOVE #xxxx,d(Ay) Açıklama : Destination adres register'ı içeriğine d değerini ekler ve source içeriğini bulduğu bu adrese yazar. Destination adres register'ının içeriği, toplamadan sonra değişmemiş olacaktır; toplama sadece fiziksel adresin tespit edilmesini sağlar.

Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : MOVE Dx,d(Ay) = 12 CLCK, 12 CLCK, 16 CLCK MOVE Ax,d(Ay) = , 12 CLCK, 16 CLCK MOVE (Ax),d(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE (Ax)+,d(Ay) = 16 CLCK, 16 CLCK, 24 CLCK MOVE -(Ax),d(Ay) = 18 CLCK, 18 CLCK, 26 CLCK MOVE d(Ax),d(Ay) = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(Ax,Dx),d(Ay) = 22 CLCK, 22 CLCK, 30 CLCK MOVE $xx.W,d(Ay) = 20 CLCK, 20 CLCK, 28 CLCK MOVE $xxxx.L,d(Ay) = 24 CLCK, 24 CLCK, 32 CLCK MOVE d(PC),d(Ay) = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(PC,Dx),d(Ay) = 22 CLCK, 22 CLCK, 30 CLCK MOVE #xxxx,d(Ay) = 16 CLCK, 16 CLCK, 24 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,d(Ay,Dy) MOVE Ax,d(Ay,Dy) / MOVE (Ax),d(Ay,Dy) MOVE (Ax)+,d(Ay,Dy) / MOVE -(Ax),d(Ay,Dy) MOVE d(Ax),d(Ay,Dy) / MOVE d(Ax,Dx),d(Ay,Dy) MOVE $xx.W,d(Ay,Dy) / MOVE $xxxx.L,d(Ay,Dy) MOVE d(PC),d(Ay,Dy) / MOVE d(PC,Dx),d(Ay,Dy) MOVE #xxxx,d(Ay,Dy) Açıklama : Destination adres register'ı içeriğine destination data register'ı içeriğini ve d değerini ekler ve bulduğu adrese source'un içeriğini yazar. Bu arada destination register'larının içerikleri değişmeyecektir. Yapılan toplama sadece destination adresini bulmayı sağlar. Bu tür adresleme şekline indeksli/offsetli adresleme denir. Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre :

MOVE Dx,d(Ay,Dy) = 14 CLCK, 14 CLCK, 18 CLCK MOVE Ax,d(Ay,Dy) = ------ , 14 CLCK, 18 CLCK MOVE (Ax),d(Ay,Dy) = 18 CLCK, 18 CLCK, 26 CLCK MOVE (Ax)+,d(Ay,Dy) = 18 CLCK, 18 CLCK, 26 CLCK MOVE -(Ax),d(Ay,Dy) = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(Ax),d(Ay,Dy) = 22 CLCK, 22 CLCK, 30 CLCK MOVE d(Ax,Dx),d(Ay,Dy) = 24 CLCK, 24 CLCK, 32 CLCK MOVE $xx.W,d(Ay,Dy) = 22 CLCK, 22 CLCK, 30 CLCK MOVE $xxxx.L,d(Ay,Dy) = 26 CLCK, 26 CLCK, 34 CLCK MOVE d(PC),d(Ay,Dy) = 22 CLCK, 22 CLCK, 30 CLCK MOVE d(PC,Dx),d(Ay,Dy) = 24 CLCK, 24 CLCK, 32 CLCK MOVE #xxxx,d(Ay,Dy) = 18 CLCK, 18 CLCK, 26 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,$yy.W / MOVE Ax,$yy.W MOVE (Ax),$yy.W / MOVE (Ax)+,$yy.W MOVE -(Ax),$yy.W / MOVE d(Ax),$yy.W

DERLEYİCİLER

MOVE d(Ax,Dx),$yy.W / MOVE $xx.W,$yy.W MOVE $xxxx.L,$yy.W / MOVE d(PC),$yy.W MOVE d(PC,Dx),$yy.W / MOVE #xxxx,$yy.W Açıklama: Source'un içeriğini destination adresine yazar. Destination adresi word sınırını geçmemelidir ($0000-$ffff).

Etkilenen flaglar: -**00 . Adresleme şekillerine göre harcadığı süre: MOVE Dx,$yy.W = 12 CLCK, 12 CLCK, 16 CLCK MOVE Ax,$yy.W = ------ , 12 CLCK, 16 CLCK MOVE (Ax),$yy.W = 16 CLCK, 16 CLCK, 24 CLCK MOVE (Ax)+,$yy.W = 16 CLCK, 16 CLCK, 24 CLCK MOVE -(Ax),$yy.W = 18 CLCK, 18 CLCK, 26 CLCK MOVE d(Ax),$yy.W = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(Ax,Dx),$yy.W = 22 CLCK, 22 CLCK, 30 CLCK MOVE $xx.W,$yy.W = 20 CLCK, 20 CLCK, 28 CLCK MOVE $xxxx.L,$yy.W = 24 CLCK, 24 CLCK, 32 CLCK MOVE d(PC),$yy.W = 20 CLCK, 20 CLCK, 28 CLCK MOVE d(PC,Dx),$yy.W = 22 CLCK, 22 CLCK, 30 CLCK MOVE #xxxx,$yy.W = 16 CLCK, 16 CLCK, 24 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,$yyyy.L / MOVE Ax,$yyyy.L MOVE (Ax),$yyyy.L / MOVE (Ax)+,$yyyy.L MOVE -(Ax),$yyyy.L / MOVE d(Ax),$yyyy.L MOVE d(Ax,Dx),$yyyy.L / MOVE $xx.W,$yyyy.L MOVE $xxxx.L,$yyyy.L / MOVE d(PC),$yyyy.L MOVE d(PC,Dx),$yyyy.L / MOVE #xxxx,$yyyy.L Açıklama: Source içeriğini destination adresine yazar. Burada destination adresi longword genişliğinde olabilir ($00000000- $ffffffff).

Etkilenen flaglar: -**00 Adresleme şekillerine göre harcadığı süre: MOVE Dx,$yyyy.L = 16 CLCK, 16 CLCK, 20 CLCK MOVE Ax,$yyyy.L = -------, 16 CLCK, 20 CLCK MOVE (Ax),$yyyy.L = 20 CLCK, 20 CLCK, 28 CLCK MOVE (Ax)+,$yyyy.L = 20 CLCK, 20 CLCK, 28 CLCK MOVE -(Ax),$yyyy.L = 22 CLCK, 22 CLCK, 30 CLCK

MOVE d(Ax),$yyyy.L = 24 CLCK, 24 CLCK, 32 CLCK MOVE d(Ax,Dx),$yyyy.L = 26 CLCK, 26 CLCK, 34 CLCK MOVE $xx.W,$yyyy.L = 24 CLCK, 24 CLCK, 32 CLCK MOVE $xxxx.L,$yyyy.L = 28 CLCK, 28 CLCK, 36 CLCK MOVE d(PC),$yyyy.L = 24 CLCK, 24 CLCK, 32 CLCK MOVE d(PC,Dx),$yyyy.L = 26 CLCK, 26 CLCK, 34 CLCK MOVE #xxxx,$yyyy.L = 20 CLCK, 20 CLCK, 28 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,CCR / MOVE (Ax),CCR MOVE (Ax)+,CCR / MOVE -(Ax),CCR / MOVE d(Ax),CCR MOVE d(Ax,Dx),CCR / MOVE $xx.W,CCR MOVE $xxxx.L,CCR / MOVE d(PC),CCR MOVE d(PC,Dx),CCR / MOVE #xxxx,CCR Açıklama: Source içeriğini statü register'ına yazar. Statü register'ı çeşitli flag'ların olduğu register'dır.

Etkilenen flaglar: ***** Adresleme şekillerine göre harcadığı süre: Bu komut sadece word genişliğinde çalışabilir, zira statü register'ı 1 word genişliğindedir.

MOVE Dx,CCR = 12 CLCK MOVE (Ax),CCR = 16 CLCK MOVE (Ax)+,CCR = 16 CLCK MOVE -(Ax),CCR = 18 CLCK MOVE d(Ax),CCR = 20 CLCK MOVE d(Ax,Dx),CCR = 22 CLCK MOVE $xx.W,CCR = 20 CLCK MOVE $xxxx.L,CCR = 24 CLCK MOVE d(PC),CCR = 20 CLCK MOVE d(PC,Dx),CCR = 22 CLCK MOVE #xxxx,CCR = 16 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Dx,SR / MOVE (Ax),SR MOVE (Ax)+,SR / MOVE -(Ax),SR / MOVE d(Ax),SR MOVE d(Ax,Dx),SR / MOVE $xx.W,SR / MOVE $xxxx.L,SR MOVE d(PC),SR / MOVE d(PC,Dx),SR / MOVE #xxxx,SR Açıklama: Source içeriğini statü register'ına yazar. Statü register'ı çeşitli flag'lerin olduğu register'dır. CCR'den farkı, bu komutun sadece Supervisor modunda kullanılması gerektiğidir. Komutu Supervisor moduna girmeden kullanırsanız, bilgisayar crash eder.

Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : Bu komut sadece word genişliğinde çalışabilir, zira statü register'ı 1 word genişliğindedir.

MOVE Dx,SR = 12 CLCK MOVE (Ax),SR = 16 CLCK MOVE (Ax)+,SR = 16 CLCK MOVE -(Ax),SR = 18 CLCK MOVE d(Ax),SR = 20 CLCK MOVE d(Ax,Dx),SR = 22 CLCK MOVE $xx.W,SR = 20 CLCK MOVE $xxxx.L,SR = 24 CLCK MOVE d(PC),SR = 20 CLCK MOVE d(PC,Dx),SR = 22 CLCK MOVE #xxxx,SR = 16 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE SR,Dy / MOVE SR,(Ay) MOVE SR,(Ay)+ / MOVE SR,-(Ay) / MOVE SR,d(Ay) MOVE SR,d(Ay,Dy) / MOVE SR,$yy.W / MOVE SR,$yyyy.L Açıklama : Statü register'ının içeriğini destination'a yazar. Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : Bu komut sadece word genişliğinde çalışır. MOVE SR,Dy = 6 CLCK MOVE SR,(Ay) = 12 CLCK MOVE SR,(Ay)+ = 12 CLCK MOVE SR,-(Ay) = 14 CLCK MOVE SR,d(Ay) = 16 CLCK MOVE SR,d(Ay,Dy) = 18 CLCK MOVE SR,$yy.W = 16 CLCK MOVE SR,$yyyy.L = 20 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE USP,Ay Açıklama : User stack pointer'ın adresini destination adres register'ına yazar.

Etkilenen flaglar : ---- Adresleme şekillerine göre harcadığı süre : MOVE USP,Ay = 4 CLCK Komut: MOVE (MOVE data) Kullanım şekilleri: MOVE Ax,USP Açıklama : Source adres register'ı içeriğini user stack pointer'a yazar.

Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : MOVE Ax,USP = 4 CLCK Komut: MOVEA (MOVE data to Address register) Kullanım şekilleri: MOVEA Dx,Ay / MOVEA Ax,Ay MOVEA (Ax),Ay / MOVEA (Ax)+,Ay MOVEA -(Ax),Ay / MOVEA d(Ax),Ay MOVEA d(Ax,Dx),Ay / MOVEA $xx.W,Ay MOVEA $xxxx.L,Ay / MOVEA d(PC),Ay MOVEA d(PC,Dx),Ay / MOVEA #xxxx,Ay Açıklama : Source içeriğini verilen adres register'ına kopyalar. Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : Destination, adres register'ı olduğundan bu komut byte genişliğinde çalışamaz. Komut süreçleri word ve longword genişliklerine göre verilmiştir.

MOVEA Dx,Ay = 4 CLCK, 4 CLCK MOVEA Ax,Ay = 4 CLCK, 4 CLCK MOVEA (Ax),Ay = 8 CLCK, 12 CLCK MOVEA (Ax)+,Ay = 8 CLCK, 12 CLCK MOVEA -(Ax),Ay = 10 CLCK, 14 CLCK MOVEA d(Ax),Ay = 12 CLCK, 16 CLCK MOVEA d(Ax,Dx),Ay = 14 CLCK, 18 CLCK MOVEA $xx.W,Ay = 12 CLCK, 16 CLCK MOVEA $xxxx.L,Ay = 16 CLCK, 20 CLCK

MOVEA d(PC),Ay = 12 CLCK, 16 CLCK MOVEA d(PC,Dx),Ay = 14 CLCK, 18 CLCK MOVEA #xxxx,Ay = 8 CLCK, 12 CLCK Komut: MOVEM (Move Multiple registers) Kullanım şekilleri: MOVEM (Ax),RL / MOVEM (Ax)+,RL MOVEM d(Ax),RL / MOVEM d(Ax,Dx),RL MOVEM $xx.W,RL / MOVEM $xxxx.L,RL MOVEM d(PC),RL / MOVEM d(PC,Dx),RL Açıklama : Source içeriğini destination register'larına yazar. Eğer artırmalı adresleme ((Ax)+) kullanılmışsa, verilen bir adresten sonra gelen değerleri sırayla verilmiş olan register'lara yazar. Register listesi (RL) üç şekilde girilebilir:

1. Her register teker teker yazılır ve aralarına birer / işareti konulur. (MOVEM (A7)+,d0/d1/d2/d3/d4/d5/d6/d7)

2. Atlama olmadan kullanılan register dizisi varsa bunların başlangıç ve bitiş register'ları aralarına - işareti konularak yazılır. (MOVEM (A7)+,d0-d7 gibi)

3. Her iki yöntemin kombinasyonu şeklinde. (MOVEM (A7)+,d0-d7/a0-a6 gibi)

Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : Bu komut byte genişliğinde çalışamaz. Byte genişlik kullanılmak istenirse bile, word genişliği seçilmelidir. Bu yüzden aşağıdaki süreçler word ve longword genişlikleri içindir. MOVEM (Ax),RL = 12 CLCK, 12 CLCK MOVEM (Ax)+,RL = 12 CLCK, 12 CLCK MOVEM d(Ax),RL = 16 CLCK, 16 CLCK MOVEM d(Ax,Dx),RL = 18 CLCK, 18 CLCK MOVEM $xx.W,RL = 16 CLCK, 16 CLCK MOVEM $xxxx.L,RL = 20 CLCK, 20 CLCK MOVEM d(PC),RL = 16 CLCK, 16 CLCK MOVEM d(PC,Dx),RL = 18 CLCK, 18 CLCK Komut: MOVEM (MOVE Multiple registers) Kullanım şekilleri: MOVEM RL,(Ay) / MOVEM RL,-(Ay) MOVEM RL,d(Ay) / MOVEM RL,d(Ay,Dy) MOVEM RL,$yy.W / MOVEM RL,$yyyy.L Açıklama : Register listesinde yer alan register içeriklerini destination'a yazar. Diğer MOVEM komutundaki kurallar bu komut için de geçerlidir.

Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : Bu komut da sadece word ve longword genişliklerinde çalışır. Bu yüzden süreçler word ve longword modları içindir. MOVEM RL,(Ay) = 8 CLCK, 8 CLCK MOVEM RL,-(Ay) = 8 CLCK, 8 CLCK MOVEM RL,d(Ay) = 12 CLCK, 12 CLCK MOVEM RL,d(Ay,Dy) = 14 CLCK, 14 CLCK MOVEM RL,$yy.W = 12 CLCK, 12 CLCK MOVEM RL,$yyyy.L = 16 CLCK, 16 CLCK Komut: MOVEP (MOVE data to Peripheral chips) Kullanım şekilleri: MOVEP Dx,d(Ay) Açıklama : Amiga'nın yardımcı ciplerinin hafıza bölgelerine bilgi yazmayı sağlar. Destination adres register'ına çip bölgesinin başlangıç adresi yazılmalıdır. Bu cipler ilk önce yüksek değerlikli byte'ı istediklerinden MOVE işlemi bu sırayla yapılır. Copper ve blitter ciplerini direkt erişimde bu komut kullanılmalıdır.

Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : MOVEP komutu sadece word ve longword genişliklerinde çalışır. MOVEP Dx,d(Ay) = 16 CLCK, 24 CLCK Komut: MOVEP (MOVE data from Peripheral chips) Kullanım şekilleri: MOVEP d(Ax),Dy Açıklama : Yardımcı ciplerden bilgiyi data register'ına yazmayı sağlar.

Etkilenen flaglar : ----- Adresleme şekillerine göre harcadığı süre : MOVEP d(Ax),Dy = 16 CLCK, 24 CLCK

Komut: MOVEQ (MOVE data Quick) Kullanım şekilleri: MOVEQ #x,Dy Açıklama: İlk üç bit kapsayan sayı değerlerinin (0...7, -1...-7) hızlı bir şekilde data register'ına yazılmasını sağlar. Aynı şekilde negatif (-1 (=$ffffffff), -2 (=fffffffe), ...) değerleri de bu komutla kullanabilirsiniz.

Etkilenen flaglar: -**00 Adresleme şekillerine göre harcadığı süre: Bu komutla sadece -7...7 arasındaki değerleri yazabilirsiniz. Bu yüzden tek bir süreç mevcuttur.

MOVEQ #x,Dy = 4 CLCK Komut: MULS (do mathematical Multiplication, Signed) Kullanım şekilleri: MULS Dx,Dy / MULS (Ax),Dy MULS (Ax)+,Dy / MULS -(Ax),Dy MULS d(Ax),Dy / MULS d(Ax,Dx),Dy MULS $xx.W,Dy / MULS $xxxx.L,Dy MULS d(PC),Dy / MULS d(PC,Dx),Dy MULS #xxxx,Dy Açıklama: Source içeriğini destination data register'ıyla çarparak sonucu destination data register'ına yazar. Çarpım sırasında negatif değerler dikkate alınır.

Etkilenen flaglar: -**00 Adresleme şekillerine göre harcadığı süre: Çarpım işlemi sadece word genişliğinde yapılabilir. MULS Dx,Dy = 70 CLCK MULS (Ax),Dy = 74 CLCK MULS (Ax)+,Dy = 74 CLCK MULS -(Ax),Dy = 76 CLCK MULS d(Ax),Dy = 78 CLCK MULS d(Ax,Dx),Dy = 80 CLCK MULS $xx.W,Dy = 78 CLCK MULS $xxxx.L,Dy = 82 CLCK MULS d(PC),Dy = 78 CLCK MULS d(PC,Dx),Dy = 80 CLCK MULS #xxxx,Dy = 74 CLCK

Komut: MULU (do mathematical MULtiplication, Unsigned) Kullanım şekilleri: MULU Dx,Dy / MULU (Ax),Dy MULU (Ax)+,Dy / MULU -(Ax),Dy / MULU d(Ax),Dy MULU d(Ax,Dx),Dy / MULU $xx.W,Dy / MULU $xxxx.L,Dy MULU d(PC),Dy / MULU d(PC,Dx),Dy / MULU #xxxx,Dy Açıklama: Çarpım işlemi, çarpım sırasında negatif sayılar da pozitif sayı kabul edilerek yapılır.

Etkilenen flaglar: -**00 Adresleme şekillerine göre harcadığı süre: Çarpım işlemi sadece word genişliğinde yapılabilir. MULU Dx,Dy = 70 CLCK MULU (Ax),Dy = 74 CLCK MULU (Ax)+,Dy = 74 CLCK MULU -(Ax),Dy = 76 CLCK MULU d(Ax),Dy = 78 CLCK MULU d(Ax,Dx),Dy = 80 CLCK MULU $xx.W,Dy = 78 CLCK MULU $xxxx.L,Dy = 82 CLCK MULU d(PC),Dy = 78 CLCK MULU d(PC,Dx),Dy = 80 CLCK MULU #xxxx,Dy = 74 CLCK Komut: NBCD (Negate Binary Coded Decimal) Kullanım şekilleri: NBCD Dy / NBCD (Ay) / NBCD (Ay)+ NBCD -(Ay) / NBCD d(Ay) / NBCD d(Ay,Dy) / NBCD $yy.W NBCD $yyyy.L Açıklama: Destination'daki Decimal sayı sistemine göre kodlanmış binary sayıyı 0'dan çıkarır. Sonuç destination'a yazılır.

Etkilenen flaglar: *U*U* Adresleme şekillerine göre harcadığı süre: Bu komutla sadece byte genişliğinde işlemler yapılabilir. NBCD Dy = 6 CLCK NBCD (Ay) = 12 CLCK NBCD (Ay)+ = 12 CLCK NBCD -(Ay) = 14 CLCK NBCD d(Ay) = 16 CLCK NBCD d(Ay,Dy) = 18 CLCK

NBCD $yy.W = 16 CLCK NBCD $yyyy.L = 20 CLCK