Amiga Dünyası sayı 25, sayfa 31

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 31

Kullanım şekilleri : CMP Dy,Dy / CMP Ax,Dy / CMP (Ax),Dy / CMP d(Ax),Dy / CMP d(Ax,Dx),Dy CMP $xx.W,Dy / CMP d(PC),Dy / CMP d(PC,Dx),Dy CMP #xxxx,Dy Açıklama : Destination data register'ının içeriği source adresin/adres register'ının gösterdiği adresin içeriğinden çıkartılır ve sonuca göre flagların konumları değişir. Çıkartma işleminin sonucu kaydedilmez; CMP işleminden sonra hem source, hem de destination'da bulunan değerler değişmez. Etkilenen flaglar : -**** Adresleme şekillerine göre harcadığı süre : 4 CLCK, CMP (Ax),Dy CMP (Ax)+,Dy CMP -(Ax),Dy CMP d(Ax),Dy CMP d(Ax,Dx),Dy CMP $xx.W,Dy CMP $xxxx.L,Dy CMP d(PC),Dy CMP d(PC,Dx),Dy CMP #xxxx,Dy Komut : CMPA (CoMPare Address) Kullanım şekilleri : CMPA Dx,Ay / CMPA Ax,Ay / CMPA (Ax)+,Ay CMPA -(Ax),Ay / CMPA d(Ax),Ay / CMPA d(Ax,Dx),Ay CMPA $xx.W,Ay / CMPA $xxxx.L,Ay / CMPA d(PC),Ay CMPA d(PC,Dx),Ay / CMPA #xxxx,Ay Açıklama : Aynı CMP gibi hayali çıkarma işlemi yaparak flagları değiştirir. Tek fark destination'un data register'ı değil de, adres register'ı olmasıdır. Etkilenen flaglar : -**** Adresleme şekillerine göre harcadığı süre : CMPA Dx,Dy - 6 CLCK, 6 CLCK CMPA Ax,Dy 6 CLCK, 6 CLCK CMPA (Ax),Dy 10 CLCK, 14 CLCK CMPA (Ax)+,Dy 10 CLCK, 14 CLCK CMPA -(Ax),Dy 12 CLCK, 16 CLCK CMPA d(Ax),Dy 14 CLCK, 18 CLCK CMPA d(Ax,Dx),Dy 16 20 CLCK CMPA $xx.W,Dy 14 CLCK, 18 CLCK CMPA $xxxx.L,Dy 18 CLCK, 22 CLCK CMPA d(PC),Dy 14 CLCK, 18 CLCK CMPA d(PC,Dx),Dy 16 CLCK, 20 CLCK CMPA #xxxx,Dy - 8 CLCK, 18 CLCK Komut : CMPI (CoMPare Immediatly) Kullanım şekilleri : CMPI #xxxx,Dy / CMPI #xxxx,(Ay) / CMPI #xxxx,(Ay)+ CMPI #xxxx,-(Ay) / CMPI #xxxx,d(Ay) CMPI #xxxx,d(Ay,Dy) / CMPI #xxxx,$yyyy.L Açıklama : Aynı CMP gibi çalışır. Etkilenen flaglar : -**** Adresleme şekillerine göre harcadığı süre : CMPI #xxxx,Dy - 8 CLCK, 18 CLCK, CMPI #xxxx,(Ay) 12 CLCK, 20 CLCK, CMPI #xxxx,(Ay)+ 12 CLCK, 20 CLCK, CMPI #xxxx,-(Ay) 14 CLCK, 22 CLCK, CMPI #xxxx,d(Ay) 16 CLCK, 24 CLCK, CMPI #xxxx,d(Ay,Dy) 20 CLCK, 28 CLCK Komut : CMPM (CoMPare Memory)

,20 CLCK, 22 CLCK, 24 CLCK, 8 CLCK, 18 CLCK,

Kullanım şekilleri : CMPM (Ax)+,(Ay)+ Açıklama : CMP gibi source ve destination'un içeriklerini birbiriyle karşılaştırır ve sonuca göre flagları etkiler. CMPM'de sadece iki adres register'ının gösterdikleri adreslerdeki değerler kontrol edilebilir. İki farklı hafıza bölgesinde bulunan ve ardarda gelen data dizilerini karşılaştırmak için kullanılır. Etkilenen flaglar : -**** Adresleme şekillerine göre harcadığı süre : CMPM - 12 CLCK, 12 CLCK, 20 CLCK Komut : DBHI, DBLS, DBCC, DBCS, DBNE, DBEQ, DBVC, DBVS, DBPL, DBMI, DBGE, DBLT, DBGT, DBLE Kullanım şekilleri : DBcc <Label> Açıklama : Bu komut Bcc koşullu dallanma komutlarının tam tersi işlem yapar. Eğer koşul gerçekleşmişse, programa bir sonraki satırdan devam eder. Koşul gerçekleşmemişse de verilen <label>'a dallanır. Etkilenen flaglar : - Adresleme şekillerine göre harcadığı süre : Dallanma uzaklığı 16 bit ile adreslenebiliyorsa 10, 32 bit ile adreslenebiliyorsa 12 CLCK Komut : DIVS (do mathematical DIVision, Signed) Kullanım şekilleri : DIVS Dx,Dy / DIVS (Ax),Dy / DIVS (Ax)+,Dy DIVS -(Ax),Dy / DIVS d(Ax),Dy / DIVS d(Ax,Dx),Dy DIVS $xx.W,Dy / DIVS $xxxx.L,Dy / DIVS d(PC),Dy DIVS d(PC,Dx),Dy / DIVS #xxxx,Dy Açıklama : 32 bitlik bir değerin 16 bitlik bir değere bölünmesidir. Source bölen, destination ise bölünen değerleri içerir. İşlem sonucunda sonuç destination data register'ının alt değerlikli 16 bitinde (bit 0-15) kayıtlıdır. Artan ise aynı data register'ının üst değerlikli 16 bitinde (bit 16-31) bulunabilir. Etkilenen flaglar : -***0 Adresleme şekillerine göre harcadığı süre : DIVS Dx,Dy - 120 CLCK, DIVS (Ax),Dy 124 CLCK, DIVS (Ax)+,Dy 124 CLCK, DIVS -(Ax),Dy 126 CLCK, DIVS d(Ax),Dy 128 CLCK

DIVS #xxxx,Dy 112 CLCK Komut : DIVU (do mathematical DIVision, Unsigned) Kullanım şekilleri : DIVU Dx,Dy / DIVU (Ax),Dy / DIVU (Ax)+,Dy DIVU -(Ax),Dy / DIVU d(Ax),Dy / DIVU d(Ax,Dx),Dy DIVU $xx.W,Dy / DIVU $xxxx.L,Dy / DIVU d(PC),Dy DIVU d(PC,Dx),Dy / DIVU #xxxx,Dy Açıklama : Aynı DIVS gibi çalışır; sadece negatif flag'ı işlem sırasında dikkate alınmaz. Bu komutla negatif bir değer ile pozitif bir değer arasında bölme yapabilirsiniz. Etkilenen flaglar : -***0 Adresleme şekillerine göre harcadığı süre : DIVU Dx,Dy 40 CLCK, DIVU (Ax),Dy 44 CLCK, DIVU (Ax)+,Dy 44 CLCK, DIVU -(Ax),Dy 46 CLCK, DIVU d(Ax),Dy 48 CLCK, DIVU d(Ax,Dx),Dy 52 CLCK, DIVU $xx.W,Dy 48 CLCK, DIVU $xxxx.L,Dy 52 CLCK, DIVU d(PC),Dy 48 CLCK, DIVU d(PC,Dx),Dy 52 CLCK, DIVU #xxxx,Dy 38 CLCK

CLCK, <-----

Ne yazık ki Assembler komutları umduğundan fazla yer kaplıyor. Bu yüzden library açıklamalarımı ve Gelişmiş Assembler yazımızı 1-2 ay daha geciktirmek zorundayım. Bu yüzden hepinizden özür dilerim. Gelecek ay yine tüm Assembler sayfalarını komutlara ayırmayı düşünüyorum. Bir ay sonra görüşmek üzere hoşçakalın.

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