Bu sayfadaki yazılar
Sayfanın metni
Sayfa 32
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.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 33
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