AMIGA ASSEMBLER

ASSEMBLER

Selam!!! Geçen ay söz verdiğim gibi bu ay tüm iki köşelik sayfalarımı Amiga ve Assembler yazısına ayırıyorum. Çok uzun bir süredir yapmak istediğim, fakat yer darlığından hep bir sonraki aya ertelemek zorunda kaldığım bir konuya bu ay değineceğim. Bu ay vereceğim komutlar, Amiga'nın tüm Amiga komutlarıdır. Bu yüzden bu dokümanın zaman içerisinde size bir hayli yardımcı olacağını zannediyorum. Eğer yer kalırsa da tabii ki kaldığımız yerden devam ederek library fonksiyonlarını anlatmaya devam edeceğiz. Komut anlatımlarında bazı kısaltmalar kullanacağım. O yüzden de bunlara hemen kısaca değinmek istiyorum:

x : Source registeri — y : Destination registeri tiğinde daha hızlı arayıp bulmanızı sağlar. Adresleme şekline göre harcanan süre kısmında her adresleme tipine üç değer verilmiştir. Bu değerler adreslemenin yapıldığı bit genişliğine göredir. Sırayla bu değerler byte, word ve longword modunda alanı içerisinde kalan bir adres için belirtilmiştir. Eğer bir adresleme şeklinde belli bir SR (Status Register) değişikliğine izin verilmemişse harcanan süre kısmında burada belirtilmiştir. CCR : Şartlanma registeri (flagları) SSP : Supervisor stack göstergeci (Add Binary Coded Decimal) USP : User stack göstergeci imal sisteme göre binary olarak kodlanmış bir sayıyı aynı şekilde kodlanmış başka bir sayıya etkiler. Mantıksal EXOR işlemi nen flaglar : ABCD Dx,Dy U*U* içersinde yer alan ifadenin sonucu D0'a göre harcadığı süre adresleme komut : ABCD (Add Binary Coded Decimal)

D : Gerçek adresle PC adresi arasındaki fark Açıklama : Bir adres registerinin gösterdiği adresteki decimal X : Extend flag'ı sisteme göre binary olarak kodlanmış bir sayıyı diğer bir adres N : Negative flag'ı registerinin içeriğinin gösterdiği adresteki aynı şekilde kodlanmış Z : Zero flag'ı başka bir sayıya ekler. Overflow flag'ı Etkilenen flaglar : *U*U* C: Carry biti re harcadığı Süre: MSB : En yüksek değerlikli bit (duruma göre 31, 15 ya da 7) LSB : En alçak değerlikli bit (0. bit) şekilleri mathematical ADD) alçak değerli ADD Dx,Dy / ADD Ax,Dy / ADD (Ax),Dy / ADD CLCK : İşlemin aldığı CPU süreci Flag komut işlendikten sonra durum: ADD $xx.W,Dy / ADD $xxxx.L,Dy / ADD d(PC),Dy U : Flag'ın konumu belli olmaz 0 : Flag 0 değerini; b esir #xxxx,Dy destination : Source adresinin içeriğini destination register içeriğine sonuç destination registerine yazılır.

Status registerinin açılımı da şu şekilde: Supervisor kısmı: Bit 15-T re harcadığı süre : 4 CLCK, 4 CLCK, 6 CLCK

Bit 13-8 ——-—, 4CLCK, 8 CLCK it ADD (Ax),Dy 8CLCK, 8 CLCK, 8 CLCK Bigi ADD 8 CLCK, 8 CLCK, 14 CLCK Bit 8 - İnterrnpi maskesi (0. bil) ADD -(Ax),Dy 0 CLCK, 10 CLCK, 16 CLCK User : ADD d(Ax).Dy 2.CLCK. 12 CLCK, 18 CLCK ADD d(Ax,Dx),Dy 4 CLCK, 14 CLCK, 20 CLCK Bit 3.N ADD $xx.W,Dy 2 CLCK, 12 CLCK, 18 CLCK ADD $xxxx.L,Dy 6 CLCK, 16 CLCK, 22 CLCK Bit 1-V ADD d(PC),Dy 2. CLCK, 12 CLCK, 18 CLCK Bit 0-C ADD d(PC.Dx).Dy 4 CLCK, 14 CLCK, 20 CLCK

ADD #xxxx,Dy 8 CLCK, 8 CLCK, 14 CLCK Burada geri açıklamaya gerek kalmadığını görmüyorum. Belirtilen bitler 68020 ve daha gelişmiş CPU'larda bir anlam taşımakta; fakat bu da konumuz değil. Artık komutlara — ADD / ADD Da (Ay) / ADD Da / ADD geçebiliriz. Komutları alfabetik sırayla açıklamaya çalıştım. Bu,

ADD Dx,d(Ay) / ADD Dx,d(Ay,Dy) / ADD Dx,$yy.W

ADD Dx,$yyyy.L Açıklama : Bir source registerinin içeriğini bir adres içeriğine ekler, Etkilenen flaglar ; ***** Adresleme şekillerine göre harcadığı süre : ADD Dx,Dy — 4 CLCK, 4 CLCK, 6 CLCK ADD 12 CLCK, 12 CLCK, 20 CLCK ADD 12 CLCK, 12 CLCK, 20 CLCK ADD Dx,-(Ay) 14 CLCK, 14 CLCK, 22 CLCK ADD Dx,d(Ay) ADD Dx,d(Ay,Dy) ADD Dx,$yy.W ADD Dx,$yyyy.L Komut : ADDA (ADD Address-register) Kullanım şekilleri : ADDA Dx,Ay / ADDA Ax,Ay / ADDA (Ax),Ay ADDA (Ax)+,Ay / ADDA -(Ax),Ay / ADDA d(Ax),Ay / ADDA $xx.W,Ay ADDA $xxxx.L,Ay / ADDA d(PC),Ay ADDA d(PC,Dx),Ay / ADDA #xxxx,Ay Açıklama : Bir adres register içeriğini başka bir adres register içeriğiyle toplayarak bunu destination adres registerine yazar. Etkilenen flaglar Adresleme şekillerine göre harcadığı süre : ADDA Dx,Ay 8 CLCK, 6 CLCK ADDA Ax,Ay 8 CLCK, 8 CLCK ADDA (Ax),Ay 12 CLCK, 14 CLCK ADDA (Ax)+,Ay 12 CLCK, 14 CLCK ADDA -(Ax),Ay 14 CLCK, 16 CLCK ADDA d(Ax),Ay 16 CLCK, 18 CLCK ADDA d(Ax,Dx),Ay 18 CLCK, 20 CLCK ADDA 16 CLCK, 18 CLCK ADDA 20 CLCK, 22 CLCK ADDA d(PC),Ay 16 CLCK, 20 CLCK ADDA d(PC,Dx),Ay 18 CLCK, 20 CLCK ADDA #xxxx,Ay 12 CLCK, 14 CLCK Komut : ADDI (Add Immediate) Kullanım şekilleri : ADDI #xxxx,Dy / ADDI #xxxx,(Ay) / ADDI #xxxx,(Ay)+ ADDI #xxxx,-(Ay) / ADDI #xxxx,d(Ay) ADDI #xxxx,d(Ay,Dy) / ADDI #xxxx,$yy.W / ADDI #xxxx,$yyyy.L Açıklama : Bir değeri bir adres/register içeriğine eklemek için kullanılır. Etkilenen flaglar Adresleme şekillerine göre harcadığı ADDI #xxxx,Dy ADDI #xxxx,(Ay) ADDI ADDI #xxxx,-(Ay) ADDI #xxxx,d(Ay) ADDI #xxxx,d(Ay,Dy) ADDI #xxxx,$yy.W ADDI #xxxx,$yyyy.L Komut : ADDQ (ADD Quick) Kullanım şekilleri : ADDQ #x,Dy / ADDQ #x,Ay / ADDQ #x,(Ay) ADDQ #x,(Ay)+ / ADDQ #x,-(Ay) / ADDQ #x,d(Ay) ADDQ #x,d(Ay,Dy) / ADDQ #x,$yy.W / ADDQ #x,$yyyy.L Açıklama : 0 ile 8 arasında kalan bir değeri bir adrese/registere çok hızlı olarak yazmak için kullanılır. Etkilenen flaglar : ***** Adresleme şekillerine göre harcadığı süre : ADDQ #x,Dy — 4 CLCK, 4 CLCK, 8 CLCK ADDQ #x,Ay ———-, 8 CLCK, 8 CLCK ADDQ 12 CLCK, 12 CLCK, 20 CLCK ADDQ 12 CLCK, 12 CLCK, 20 CLCK ADDQ #x,-(Ay) 14 CLCK, 14 CLCK, 22 CLCK ADDQ #x,d(Ay) 16 CLCK, 16 CLCK, 24 CLCK ADDQ #x,d(Ay,Dy) 18 CLCK, 18 CLCK, 26 CLCK ADDQ 16 CLCK, 16 CLCK, 24 CLCK

CLCK

ADDQ #x,$yyyy.L — 20 CLCK, 20 CLCK, 28 CLCK Komut : ADDX (ADDition, set/reset X bit) Kullanım şekilleri : ADDX Dx,Dy Açıklama : İki data registeri arasında toplama yapıldıktan sonra, duruma göre X bitinin konumu değiştirilir. Sonuç değeri longword sınırını aşarsa bir bitle X biti bir olur, aksi halde 0 kalır.

göre harcadığı süre : 4 CLCK, 4 CLCK, 8 CLCK Komut: ADDX (ADD set/reset X bit) Kullanım şekilleri : A

Açıklama : Source

Adresleme şekillerine göre harcadığı süre : ADDX — 18 CLCK, 18 CLCK, 30 CLCK Komut : AND (do logical AND) Kullanım şekilleri : AND Dx,Dy / AND (Ax),Dy / AND (Ax)+,Dy AND -(Ax),Dy / AND d(Ax),Dy AND d(Ax,Dx),Dy / AND $xx.W,Dy AND $xxxx.L,Dy / AND d(PC),Dy AND d(PC,Dx),Dy / AND #xxxx,Dy Açıklama : İki register içeriğini mantıksal AND işlemine tâbi tutar ve sonucu destination data register'ine yazar, Etkilenen flaglar : -**00 Adresleme şekillerine göre harcadığı süre : AND Dx,Dy 4 CLCK, 6 CLCK AND (Ax),Dy 8 CLCK, 8 CLCK, 14 CLCK AND (Ax)+,Dy 8 CLCK, 8 CLCK, 14 CLCK AND 10 CLCK, 16 CLCK d(Ax),Dy 12 CLCK, 12 CLCK, 18 CLCK d(Ax,Dx),Dy 14 CLCK, 14 CLCK, 20 CLCK $xx.W,Dy 12 CLCK, 12 CLCK, 18 CLCK $xxxx.L,Dy 16 CLCK, 16 CLCK, 22 CLCK 12 CLCK, 12 CLCK, 18 CLCK 14 CLCK, 14 CLCK, 20 CLCK 8 CLCK, 14 CLCK

AND, OR, EOR, STO, DIL-CAM register'ı içeriğini başka bir register'la işleme sokar ve sonucu destination'a yazar. 1-00 yerine göre harcadığı süre: 4 CLCK, 4 CLCK, 6 CLCK, 2 CLCK, 12 CLCK, 20 CLCK, 2 CLCK, 12 CLCK, 20 CLCK, 14 CLCK, 14 CLCK, 22 CLCK, 16 CLCK, 16 CLCK, 24 CLCK, 18 CLCK, 18 CLCK, 26 CLCK, 16 CLCK, 16 CLCK

ANDI #xxxx,Dy / ANDI #xxxx,(Ay) ANDI / ANDI #xxxx,-(Ay) ANDI #xxxx,d(Ay) / ANDI #xxxx,d(Ay,Dy) ANDI #xxxx,$yy.W / ANDI #xxxx,$yyyy.L ANDI #xxxx,CCR / ANDI #xxxx,SR bir sabit değeri bir register içeriği/adresin içeriği ile mantıksal AND işlemine tâbi tutar. Etkilenen -**00 me şekillerine göre harcadığı süre : Etkilenen flaglar : ***** Dy — 8 CLCK, 8 CLCK, 16 CLCK Adresleme şekillerine göre harcadığı süre : ANDI #xxxx,(Ay) 16 CLCK, 16 CLCK, 28 CLCK Label'in o anki adresten uzaklığı 16 bit sınırını geçmiyorsa 10 ANDI #xxxx,(Ay)+ 16 CLCK, 16 CLCK, 28 CLCK CLCK, geçtiği durumlarda da 12 CLCK, ANDI #xxxx,-(Ay) 18 CLCK, 18 CLCK, 30 CLCK Komut : ANDI #xxxx,d(Ay) 20 CLCK, 20 CLCK, 32 CLCK BCHG (Bit status CHanGe) ANDI #xxxx,d(Ay,Dy) — 22 CLCK, 22 CLCK, 34 CLCK Kullanım şekilleri ANDI W — 20 CLCK, 20 CLCK, 32 CLCK BCHG Dx,Dy / BCHG Dx,(Ay) ANDI #xxxx,$yyyy.L CLCK, 24 CLCK, 36 CLCK BCHG Dx,(Ay)+ / BCHG Dx,-(Ay) ANDI #xxxx,CCR 20 CLCK, BCHG Dx,d(Ay) / BCHG ANDI #xxxx,SR — 20 CLCK, BCHG Dx,$yy.W / BCHG Dx; Komut : ASL (Arithmetic Shift Left) Destination register'ın göster- Kullanım şekilleri : diği adresteki Source data re, i ASL Dx,Dy / ASL #xxxx,Dy iği konumu değiştirilir. Açıklama : Destination register'ı içeriğini verilen sabit değer/data içeriği kadar sola kaydırır. Soldan çıkan bit (en yüksek değerlikli) flaglarına kopyalanır. Boşalan en alt bit yerine de 0 yazılır. HG Dx,(Ay) Etkilenen flaglar : BCHG Dx,(Ay)+ Adresleme şekilleri ğı süre : BCHG Dx,-(Ay) 2 BCHG Dx,d(Ay) ASL 2. BCHG Dx,d(Ay,Dy) Komut : ASL (Arithmetic Shift Left) BCHG Dx,$yy.W | Kullanım şekilleri : BCHG Dx,$yyyy.L ASL (Ay) / ASL (Ay)+ / ASL -(Ay) / A Komut : BCHG (Bit status CHanGe) ASL d(Ay,Dy) / ASL $yy.W / ASL Açıklama : Verilen destination gösterdi- BCHG #x,Dy / BCHG #x,(Ay) ği adresin içeriğini 1 bit sola kaydırır. BCHG #x,(Ay)+ / BCHG Etkilenen flaglar : BCHG #x,d(Ay) / BCHG #x,d(Ay,Dy) Adresleme şekillerine göre harcadığı süre â z ASL(Ay) 12 CLCK, Açıklama : Destination'da belirtilen numaralı bitin konumu de- ASL 2 ir ASL -(Ay) ğiştirilir. Etkilenen :

ASL d(Ay) Adresleme şekillerine harcadığı süre : ASL d(Ay,Dy) BCHG #x,Dy 12 CLCK ASL $yy.W BCHG #x,(Ay) ASL $yyyy.L BCHG #x,(Ay)+ : ASR (Arithmetical Shift Right) BCHG Kullanım şekilleri : BCHG #x,d(Ay) ASR Dx,Dy / ASR #xxxx,Dy BCHG #x,d(Ay,Dy) Açıklama : Destination register'ının içeriğini register'ının içeriği kadar sağa kaydırır. En düşük değer X ve C flaglarına kopyalanır. Boşalan en yüksek değerlikli bit yerine de işlem öncesindeki en yüksek değerlikli bit kopyalanır. Etkilenen flaglar : ***** R Dx,(Ay) / BCLR Dx,(Ay)+ Adresleme şekillerine göre harcadığı süre : CLR / BCLR Dx,d(Ay,Dy) ASR Dy,Dyz6-4-2(Dx) CLCK, 6-4-2(Dx) CLCK, 6-4-2(Dx) Cİ L ASR #xxxx,Dy — 6-4-2x 6-4-2x CLCK, 6-4-2x C| ion adres indeki değerde, source Komut : ASR (Arithmetical Shift Right) Kullanım şekilleri : ASR (Ay) / ASR (Ay)+ / ASR -(Ay) / ASR d(Ay) ASR d(Ay,Dy) / ASR $yy.W / ASR $yyyy.L BCLR Dx,Dy Açıklama : Tanımlanan adres/adres register'ı içeriğini, BELR sağa kaydırır. BCLR Dx BCLR Dx,-(Ay) Etkilenen flaglar : ***** BCLR Dx,d(Ay) ASR (Ay) - 2 CLCK Dy) ASR BCLR Dx,$ ASR -(Ay) BCLR Dx $yyyy.L ASR d(Ay) Komut : BCLR (Bit CLeaR) ASR d(Ay,Dy) Kullanım şekilleri : ASR BCLR #x,Dy / BCLR yyyL - — BCLR #x,(Ay)+ / BCLR #x,-(Ay) : BHI, BLS, BCC, BCS, BNE, BEQ, BVC, BVS, BVS BCLR #x,d(Ay) / BCLR #x,d(Ay,Dy) BPL, BMI, BGE, BLT, BGT, BLE BCLR #x,$yy.W / BCLR #x,$yyyy.L Kullanım şekilleri : Açıklama : Destination adres içeriğindeki belirtilen numa- Bcc <Label> ralı bit silinir. Açıklama : Bu komutlar, 68000'in şartlı dallanma komutları- Etkilenen flaglar : —*— dır. Gerekli şart yerine geldiğinde istenilen label'a (ya da adrese) Adresleme şekillerine göre harcadığı süre : dallanmamızı sağlarlar. Bu şartları komut listesinin en sonunda BCLR #x,Dy CLCK daha detaylı olarak inceleyeceğiz. BCLR #x,(Ay)

BCLR #x,(Ay) BTST Dx,d(Ay) BCLR #x,-(Ay) BTST Dx,d(Ay,Dy) BCLR #x,d(Ay) BTST Dx,d(Ay) BCLR #x,d(Ay,Dy) BTST Dx,d(Ay,Dy) BCLR #x,$yy.W BCLR Komut : BRA (BRAnch) Komut : Kullanım şekilleri : Kullanım şekilleri : BRA <Label> BSET #x,Dy / BTST #x,(Ay) / BTST #x,(Ay) Açıklama : Belirtilen adrese direkt olarak dallanır. Dönüşü BTST #x,d(Ay) BTST ion'un gösterdiği Nü- BRA <label> CLC ara ve içeriğini Z flag'ına kopyalar, Komut : it i dece en alt değerlikli 8 Kullanım şekilleri : BSET Dx,Dy / lerine göre süre : 10 CLCK

BSET Dx,(Ay) BSET Dx,-(Ay) BTST #x,d(PC,Dy) BSET Dx,d(Ay) 16 CLCK, Komut : CHK (CHeck) BSET Dx,Dy 18 CLCK, Kullanım şekilleri

16 CLCK, 18

12-12 CLCK, getirir, -14 CLCK, Etkilenen flaglar Adresleme şekillerine göre süre : BTST #x,d(Ay,Dy) - CLCK, BSET Dx,Dy BTST #x, - 16 CLOCK, BSET

CHK Dx,Dy / CHK (Ax),Dy / CHK (Ax)+,Dy / CHK -(Ax),Dy CHK d(Ax),Dy / CHK d(Ax,Dx),Dy / CHK $xx.W,Dy : BSET (Bit SET) CHK $xxxx.L,Dy / CHK d(PC),Dy / CHK d(PC,Dx),Dy

Kullanım şekilleri CHK #xxxx,Dy BSET #x,Dy / BSET #x,(Ay) / BSET #x (Ay)t Açıklama ; Source register'ının/adresinin içeriği Ü ile destina- BSET #x.-(Ay) ya BSET #x.d(Ay,D: il arasında mı, kontrol edilir Ye değilse Trap getirir. Etkilenen Adresleme şekillerine göre © nda işin. i ağrıldı- #x,Dy | İZ tes #xLÂY) - 16 CLCK, BSET Bİ BSET #x-(Ay) HA BSET #x,d(Ay) BSET #x. ŞA Dy)

b 20 CLCK, BSET #x,$yyyy.L - 24 CLCK. Komut : BSR (Branch SubRoutine) Kullanım şekilleri : BSR <Label> Açıklama : O anki adres (PC) stack'e atılır ve dallanılır. CHK d(PC,Dx),Dy 20 CLCK Etkilenen flaglar : - CHK #xxxx,Dy CLCK, 14 CLCK Adresleme şekillerine göre harcadığı süre : BSR <Label> - 14 CLCK, 14 Komut : BTST (Bit TesT) CLR Dy / CLR (Ay) / CLR (Ay)+ / CLR CLR / CLR $yy.W / CLR Açıklama : Verilen destination içeriğini BTST Dx, BTST Dx,d(Ay) BTST Dx,$yyyy.L / BTST Dx,d(PC) Etkilenen flaglar : -0100

Açıklama : destination adresinin gister” içeriğinden 7 a - 12 CLCK, 12.CLCK, kopyalanır. CLR (Ay)t Etkilenen flaglar : —*— CLR -(Ay) A Adresleme şekillerine göre CLR d(Ay) BTST Dx,Dy CLR d(Ay,Dy) BTST Dx, (Ay) CLR öy. BTST Dx, CLR

BTST Komut (CoMPare)

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.