Makine Dilinin Tüm Komutları
Retro bilgisayarBurada, COMMODORE 64'ün ana işlem ünitesi MOS 6510'un tüm komutlarının, alfabetik sıraya sokulmuş bir listesini bulacaksınız. Bu listeye, 'bilinmeyen komutlar' da dahil.
Bu bölüm, üç adet tablodan oluşuyor. Birinci tabloda, bilinmeyen komutların listesini; ikinci tabloda, standart komutların listesini, üçüncü tabloda ise, ilk iki tabloda kullanılan kısaltmaların açıklamaları olacak.
Birinci tablo ile bir iki açıklama yapalım:
COMMODORE 64'ün ilk çıktığı günden beri, ana işlem ünitesi MOS 6510'un birçok değişik versiyonu üretildi. Bunlar, standart komut setinde tümüyle kompatibel (uyumlu) olmalarına rağmen, bilinmeyen komutların yürütülmesi sırasında çok değişik davranabiliyorlar. Hangi bilgisayarda, hangisinin tam çalışacağı sorusu ancak deneme ve yanılma yöntemi ile bulunabilir. Birçok monitor programı ile, bu komutlar incelendiğinde, monitor programı bu komutu anlayamadığını belirtmek için yanına üç adet soru işareti (???) verir. Ocak 1987 sayısında yayınlanan, monitor programı da bu şekilde davranıyor. Fakat, yakında yayınlayacağımız SMON adlı monitor programı, bu tip komutların kullanıldığı programları da incelemenize fırsat verecek.
Gelelim tablolarımıza. Önce birinci tablo:
A11: AND register with $11
X- ve Y-register'i $11 değeri ile AND'lenir. Sonuç, işlem yapılan indeks registerlerinden değeri kullanılarak indeksli adresleme ile belleğe yazılır.
Adresleme Tipleri:
Assembler: | Kod: | Kısaltma: | Byte: AAX #OP | $8B | IM | 2 AAX OP | $87 | ZP | 2 AAX OP,Y | $97 | ZPY | 2 AAX OP | $8F | ABS | 3 AAX (ZP,X) | $83 | (ZP,X) | 2
ASR: AND with accu and shift right
Şu işlemler yürütülür: AND LSR
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: ASR OP | $6B | IM | 2
ARR: AND with accu and rotate right
Bu işlemler yürütülür: AND ROR
Adresleme Tipleri:
Assembler: | Kod: | Kısaltma: | Byte: ARR OP | $4B | IM | 2
AXS: AND accu and X-register and subtract data
Akü ile X-register'in AND'lenmesi sonucu elde edilen değerden operand'ın değeri carry'siz çıkartılır ve sonuç X-register'ine yazılır.
Adresleme Tipleri:
Assembler: | Kod: | Kısaltma: | Byte: AXS OP | $CB | IM | 2
DCP: decrement and compare wiht accu
Şu işlemler yürütülür: DEC CMP
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: DCP OP | $C7 | ZP | 2 DCP OP,X | $D7 | ZPX | 2 CCP OP | $CF | ABS | 3 DCP OP,X | $DF | ABX | 3 DCP OP,Y | $DB | ABY | 3 DCP (ZP,X) | $C3 | (ZP,X) | 2 DCP (ZP),Y | $D3 | (ZP),Y | 2
DOP: double NOP
Bu komutlar yaptıkları işlem bakımından NOP komutundan farksızdır. Fakat, iki byte sürerler. Burada ikinci byte dikkate alınmaz.
$04, $14, $34, $44, $54, $64, $74, $D4, $F4, $80 $89, $93
ISC: increment and subtract with carry
Şu işlemler yürütülür: INC SBC
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: ISC OP | $E7 | ZP | 2 ISC OP,X | $F7 | ZPX | 2 ISC OP | $EF | ABS | 3 ISC OP,X | $FF | ABX | 3 ISC OP,Y | $FB | ABY | 3 ISC (ZP,X) | $E3 | (ZP,X) | 2 ISC (ZP),Y | $F3 | (ZP),Y | 2
KIL: Killer codes
Bu komutlar sistemin 'crash' etmesine yolaçar. Böyle durumlarda, RUN/STOP-RESTORE kombinasyonu da bir işe yaramaz. Ya bilgisayarları kapatır açarsınız, ya da resetlersiniz (bir reset switch yardımıyla).
$02, $12, $22, $32, $42, $52, $62, $72, $B2, $D2, $F2
LAR: load accu, and wiht stack-register, transfer result to accu, X-register and stackregister.
Bu işlemler yürütülür: LDA AND (yığın göstergeci ile) TAX TXS
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: LAR OP,Y | $BB | ABY | 3
LAX: load to accu and X-register
Şu işlemler yürütülür: LDA TAX
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: LAX OP | $A7 | ZP | 2 LAX OP,Y | $B7 | ZPY | 2 LAX OP | $AF | ABS | 3 LAX OP,Y | $BF | ABY | 3 LAX (ZP,X) | $A3 | (ZP,X) | 2 LAX (ZP),Y | $B3 | (ZP),Y | 2
NOP: no operation
Aşağıdaki komutlar, SEA kodlu NOP komutu ile her bakımdan özdeştir.
$1A, $3A, $5A, $7A, $DA, $FA
RLA: rotate left, AND with accu and store accu.
Şu işlemler yürütülür: ROL AND STA
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: RLA OP | $27 | ZP | 2 RLA OP,X | $37 | ZPX | 2 RLA OP | $2F | ABS | 3 RLA OP,X | $3F | ABX | 3 RLA OP,Y | $3B | ABY | 3 RLA (ZP,X) | $23 | (ZP,X) | 2 RLA (ZP),Y | $33 | (ZP),Y | 2
RRA: rotate right and add with carry.
Bu işlemler yürütülür: ROR ADC
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: RRA OP | $67 | ZP | 2 RRA OP,X | $77 | ZPX | 2 RRA OP | $6F | ABS | 3 RRA OP,X | $7F | ABX | 3 RRA OP,Y | $7B | ABY | 3 RRA (ZP,X) | $63 | (ZP,X) | 2 RRA (ZP),Y | $73 | (ZP),Y | 2
SLO: shift left and OR with accu.
Şu işlemler yürütülür: ASL ORA
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: SLO OP | $07 | ZP | 2 SLO OP,X | $17 | ZPX | 2 SLO OP | $0F | ABS | 3 SLO OP,X | $1F | ABX | 3 SLO OP,Y | $1B | ABY | 3 SLO (ZP,X) | $13 | (ZP,X) | 2 SLO (ZP),Y | $03 | (ZP),Y | 2
SRE: shift right and EOR with accu.
Şu işlemler yürütülür: LSR EOR
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: SRE OP | $47 | ZP | 2 SRE OP,X | $57 | ZPX | 2 SRE OP | $4F | ABS | 3 SRE OP,X | $5F | ABX | 3 SRE OP,Y | $5B | ABY | 3 SRE (ZP,X) | $43 | (ZP,X) | 2 SRE (ZP),Y | $53 | (ZP),Y | 2
TOP: triple NOP
Aşağıdaki komutlar da NOP komutunun bir türüdür. Tek farkları üç byte sürmeleridir. İkinci ve üçüncü byte'ları önemsizdir.
$0C, $1C, $3C, $5C, $7C, $DC, $FC
Geciyoruz ikinci tabloya.
ADC: add with carry
Hafızanın içeriğini aküye, carry'yi de kullanarak topla, sonucu aküye al.
Flaglar: N Z C I D V + + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt ADC #OP | $69 | IM | 2 | 2 ADC OP | $65 | ZP | 2 | 3 ADC OP,X | $75 | ZPX | 2 | 4 ADC OP | $6D | ABS | 3 | 4 ADC OP,X | $7D | ABX | 3 | 4 ADC OP,Y | $79 | ABY | 3 | 4 ADC (ZP,X) | $61 | (ZP,X) | 2 | 6 ADC (ZP),Y | $71 | (ZP),Y | 2 | 5
AND: AND accu
Hafızanın içeriğini, aküyle AND'le, sonucu aküye al.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt AND #OP | $29 | IM | 2 | 2 AND OP | $25 | ZP | 2 | 3 AND OP,X | $35 | ZPX | 2 | 4 AND OP | $2D | ABS | 3 | 4 AND OP,X | $3D | ABX | 3 | 4 AND OP,Y | $39 | ABY | 3 | 4 AND (ZP,X) | $21 | (ZP,X) | 2 | 6 AND (ZP),Y | $31 | (ZP),Y | 2 | 5
ASL: arithmetic shift left
Hafızanın içeriğini bir bit pozisyonu sola kaydır.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt ASL | $0A | Accu | 1 | 2 ASL OP | $06 | ZP | 2 | 5 ASL OP,X | $16 | ZPX | 2 | 6 ASL OP | $0E | ABS | 3 | 6 ASL OP,X | $1E | ABX | 3 | 7
BCC: branch if carry clear
Carry biti sönükse dallan.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BBC OP | $90 | REL | 2 | 2
BCS: branch if carry set
Carry biti yanıksa dallan.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BCS OP | $B0 | REL | 2 | 2
BEQ: branch if equal (to zero)
Son yapılan işlemin sonucu sıfırsa dallan.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BEQ OP | $F0 | REL | 2 | 2
BIT: test bits
Hafıza ile aküyü AND'le, sonuca göre flag'ları oluştur.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BIT OP | $24 | ZP | 2 | 3 BIT OP | $2C | ABS | 3 | 4
BMI: branch if minus
Son yapılan işlemin sonunda yedinci bit yanıksa dallan.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BMI OP | $30 | REL | 2 | 2
BNE: branch if not equal (to zero)
Son yapılan işlemin sonucu sıfır değilse dallan.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BNE OP | $D0 | REL | 2 | 2
BRK: break
Programın durması ve break vektörü üzerinden atlama
Flaglar: N Z C I D V B +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BRK | $00 | — | 1 | 7
BVC: branch if overflow clear
Son yapılan işlemin sonunda taşma yoksa dallan.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BVC OP | $50 | REL | 2 | 2
BVS: branch if overflow set
Son yapılan işlemin sonunda taşma varsa dallan
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt BVS OP | $70 | REL | 2 | 2
CLC: clear carry
Carry bitini söndür.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CLC | $18 | — | 1 | 2
CLD: clear decimal mode
Ondalık mod bitini söndür.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CLD | $D8 | — | 1 | 2
CLI: clear interrupt disable bit
Interrupt'a izin vermeyen biti söndür.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CLI | $58 | — | 1 | 2
CLV: clear overflow flag
Taşma flag'ını söndür.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CLV | $B8 | — | 1 | 2
CMP: compare with accu
Hafızanın içeriğini, aküyle karşılaştır.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CMP #OP | $C9 | IM | 2 | 2 CMP OP | $C5 | ZP | 2 | 3 CMP OP,X | $D5 | ZPX | 2 | 4 CMP OP | $CD | ABS | 3 | 4 CMP OP,X | $DD | ABX | 3 | 4 CMP OP,Y | $D9 | ABY | 3 | 4 CMP (ZP,X) | $C1 | (ZP,X) | 2 | 6 CMP (ZP),Y | $D1 | (ZP),Y | 2 | 5
CPX: compare with X-register
Hafızanın içeriğini, X-registeriyle karşılaştır.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CPX #OP | $E0 | IM | 2 | 2 CPX OP | $E4 | ZP | 2 | 3 CPX OP | $EC | ABS | 3 | 4
CPY: compare with Y-register
Hafızanın içeriğini, Y-registeriyle karşılaştır.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt CPY #OP | $C0 | IM | 2 | 2 CPY OP | $C4 | ZP | 2 | 3 CPY OP | $CC | ABS | 3 | 4
DEC: decrement
Hafızanın içeriğini bir eksilt.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt DEC OP | $C6 | ZP | 2 | 5 DEC OP,X | $D6 | ZPX | 2 | 6 DEC OP | $CE | ABS | 3 | 6 DEC OP,X | $DE | ABX | 3 | 7
DEX: decrement X-register
X-registerinin içeriğini bir eksilt.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt DEX | $CA | — | 1 | 2
DEY: decrement Y-register
Y-registerinin içeriğini bir eksilt.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt DEY | $88 | — | 1 | 2
EOR: exclusive-or with accu
Hafızanın içeriğini, aküyle exclusive-or işlemine sok.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt EOR #OP | $49 | IM | 2 | 2 EOR OP | $45 | ZP | 2 | 3 EOR OP,X | $55 | ZPX | 2 | 4 EOR OP | $4D | ABS | 3 | 4 EOR OP,X | $5D | ABX | 3 | 4 EOR OP,Y | $59 | ABY | 3 | 4 EOR (ZP,X) | $41 | (ZP,X) | 2 | 6 EOR (ZP),Y | $51 | (ZP),Y | 2 | 5
INC: increment
Hafızanın içeriğini bir artır.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt INC OP | $E6 | ZP | 2 | 5 INC OP,X | $F6 | ZPX | 2 | 6 INC OP | $EE | ABS | 3 | 6 INC OP,X | $FE | ABX | 3 | 7
INX: increment X-register
X-registerinin içeriğini bir artır.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt INX | $E8 | — | 1 | 2
INY: increment Y-register
Y-registerinin içeriğini bir artır.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt INY | $C8 | — | 1 | 2
JUM: Jump
Adrese sıçra.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt JMP OP | $4C | ABS | 3 | 3 JMP (OP) | $6C | IND | 3 | 5
JSR: jump to subroutine
Altprogramı çağır.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt JSR OP | $20 | ABS | 3 | 6
LDA: load accu
Aküye, hafızanın içeriğini yükle.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt LDA #OP | $A9 | IM | 2 | 2 LDA OP | $A5 | ZP | 2 | 3 LDA OP,X | $B5 | ZPX | 2 | 4 LDA OP | $AD | ABS | 3 | 4 LDA OP,X | $BD | ABX | 3 | 4 LDA OP,Y | $B9 | ABY | 3 | 4 LDA (ZP,X) | $A1 | (ZP,X) | 2 | 6 LDA (ZP),Y | $B1 | (ZP),Y | 2 | 5
LDX: load X-register
X-registerine hafızanın içeriğini yükle.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt LDX #OP | $A2 | IM | 2 | 2 LDX OP | $A6 | ZP | 2 | 3 LDX OP,Y | $B6 | ZPY | 2 | 4 LDX OP | $AE | ABS | 3 | 4 LDX OP,Y | $BE | ABY | 3 | 4
LDY: load Y-register
Y-registerine, hafızanın içeriğini yükler.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt LDY #OP | $A0 | IM | 2 | 2 LDY OP | $A4 | ZP | 2 | 3 LDY OP,X | $B4 | ZPX | 2 | 4 LDY OP | $AC | ABS | 3 | 4 LDY OP,X | $BC | ABX | 3 | 4
LSR: logical shift right
Hafızanın içeriğini bir bit pozisyonu sağa kaydır. Yedinci bite '0' yüklenir.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt LSR | $4A | Accu | 1 | 2 LSR OP | $46 | ZP | 2 | 5 LSR OP,X | $56 | ZPX | 2 | 6 LSR OP | $4E | ABS | 3 | 6 LSR OP,X | $5E | ABX | 3 | 7
NOP: no operation
Hiçbir işlem yapılmaz.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt NOP | $EA | — | 1 | 2
ORA: OR with accu
Aküyle, hafızanın içeriğini OR'la, sonucu aküye yükle.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt ORA #OP | $09 | IM | 2 | 2 ORA OP | $05 | ZP | 2 | 3 ORA OP,X | $15 | ZPX | 2 | 4 ORA OP | $0D | ABS | 3 | 4 ORA OP,X | $1D | ABX | 3 | 4 ORA OP,Y | $19 | ABY | 3 | 4 ORA (ZP,X) | $01 | (ZP,X) | 2 | 6 ORA (ZP),Y | $11 | (ZP),Y | 2 | 5
PHA: push accu
Akümülatörün içeriğini yığında sakla.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt PHA | $48 | — | 1 | 3
PHP: push processor-status
Durum registerlerinin içeriğini yığında sakla.
Praglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt PHP | $08 | — | 1 | 3
PHA: pull accu
Akümülatörün içeriğini yığından al.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt PLP | $28 | — | 1 | 4
ROL: rotate left
Hafızanın içeriğini bir bit pozisyonu sola döndür.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt ROL | $2A | Accu | 1 | 2 ROL OP | $26 | ZP | 2 | 5 ROL OP,X | $36 | ZPX | 2 | 6 ROL OP | $2E | ABS | 3 | 6 ROL OP,X | $3E | ABX | 3 | 7
ROR: rotate right
Hafızanın içeriğini bir bit pozisyonu sağa döndür.
Flaglar: N Z C I D V + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt ROR | $6A | Accu | 1 | 2 ROR OP | $66 | ZP | 2 | 5 ROR OP,X | $76 | ZPX | 2 | 6 ROR OP | $6E | ABS | 3 | 6 ROR OP,X | $7E | ABX | 3 | 7
RTI: return from interrupt
Interrupt işlemi bittikten sonra, kesilen programa kaldığı yerden devam et.
Flaglar: N Z C I D V önceki gibi
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt RTI | $40 | — | 1 | 6
RTS: return from subroutine
Altprogramdan geri dön.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt RTS | $60 | — | 1 | 6
SBC: subtract with carry
Aküden, hafızanın içeriğini, carry'yi de kullanarak çıkar.
Flaglar: N Z C I D V + + + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt SBC #OP | $E9 | IM | 2 | 2 SBC OP | $E5 | ZP | 2 | 3 SBC OP,X | $F5 | ZPX | 2 | 4 SBC OP | $ED | ABS | 3 | 4 SBC OP,X | $FD | ABX | 3 | 4 SBC OP,Y | $F9 | ABY | 3 | 4 SBC (ZP,X) | $E1 | (ZP,X) | 2 | 6 SBC (ZP),Y | $F1 | (ZP),Y | 2 | 5
SEC: set carry flag
Carry bitini yak.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt SEC | $38 | — | 1 | 2
SED: set decimal mode
Desimal mode geçme flag'ını yak.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt SED | $F8 | — | 1 | 2
SEI: set interrupt disablebit
Interrupt'a izin vermeyen biti yak.
Flaglar: N Z C I D V +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt SEI | $78 | — | 1 | 2
STA: store accu
Aküyü, hafızaya sakla.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt STA OP | $85 | ZP | 2 | 3 STA OP,X | $95 | ZPX | 2 | 4 STA OP | $8D | ABS | 3 | 4 STA OP,X | $9D | ABX | 3 | 5 STA OP,Y | $99 | ABY | 3 | 5 STA (ZP,X) | $81 | (ZP,X) | 2 | 6 STA (ZP),Y | $91 | (ZP),Y | 2 | 6
STX: store X-register
X-registerini hafızaya sakla.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt STX OP | $86 | ZP | 2 | 3 STX OP,Y | $96 | ZPY | 2 | 4 STX OP | $8E | ABS | 3 | 4
STY: store Y-register
Y-registerini, hafızaya sakla.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt STY OP | $84 | ZP | 2 | 3 STY OP,X | $94 | ZPX | 2 | 4 STY OP | $8C | ABS | 3 | 4
TAX: transfer accu to X-register
Aküyü, X-registerine sakla.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt TAX | $AA | — | 1 | 2
TAY: transfer accu to Y-register
Aküyü, Y-registerine sakla
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt TAY | $A8 | — | 1 | 2
TSX: transfer stackpointer to X-register
Yığın göstergecini, X-registerine sakla.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt TSX | $BA | — | 1 | 2
TXA: transfer X-register to accu
X-registerini, aküye sakla.
Flaglar: N Z C I D V + +
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt TXA | $8A | — | 1 | 2
TXS: transfer X-register to stackpointer
X-registerini, yığın göstergecine kopyala.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt TXS | $9A | — | 1 | 2
TYA: transfer Y-register to accu
Y-registerini, aküye sakla.
Flaglar: N Z C I D V hiçbiri
Adresleme Tipleri
Assembler: | Kod: | Kısaltma: | Byte: | Takt TYA | $98 | — | 1 | 2
Ve son olarak üçüncü tablo:
ABS: absolut
Operand dört basamaklı, hekza-
desimal bir sayıdır.
Örnek:
LDA $C000
$C000 adresli hafızanın içeriği aküye yüklenir.
ABX: absolut X-indeksli Operand dört basamaklı, hekzadesimal bir sayıdır. X-registerinin içeriği, operanda toplanır ve böylece aktif adres elde edilir. İşlem, bu adresle yürütülür.
Örnek:
LDX #$10
LDA $C000,X
$C010 ($C000 + $10) adresli hafızanın içeriği aküye yüklenir.
ABY: absolut Y-indeksli Operand dört basamaklı, hekzadesimal bir sayıdır. Y-registerinin içeriği, operanda toplanır ve böylece aktif adres elde edilir. İşlem, bu adresle yürütülür.
Örnek:
LDY #$10
LDA $C000,Y
$C010 ($C000 + $10) adresli hafızanın içeriği aküye yüklenir.
Byte: İlk iki tabloda kullanılan bu kısaltmanın anlamı, tüm bir komutun, operandlarıyla beraber uzunluğudur.
Flaglar: Durum registerinin her bir biti.
N: negative flag. Son yapılan işlemde, yedinci bitin yanık olup olmadığını gösterir.
Z: zero flag. Son yapılan işlemin sonucunun sıfır olup olmadığını gösterir.
C: carry flag. Son yapılan işlemdeki carry durumunu gösterir.
I: interrupt disable flag. Bu flag yanık olduğu zaman interrupt'lar engellenir.
D: decimal mode flag. Bu flag yakıldığında, ana işlem ünitesi, kısmen desimal (ondalık) modda işlem yapar. Örneğin: bu modda $01 ile $09'u toplarsak $0A değil $10 elde ederiz. Böylece ikili-onlu ve onlu-ikili dönüşümlerinden kurtuluruz.
V: overflow flag. Son yapılan işlemde taşıma (overflow) olup olmadığını gösterir.
IM: immediate Bu adresleme tipinde, operand bir byte uzunluğundadır ve bu operand doğrudan değeri ile kullanılır.
Örnek:
LDA #$00
$00 değeri doğrudan aküye yüklenir.
OP: operand Her adresleme tipinin gerektirdiği ve komutla beraber yürüyen komutun uzantıları.
ZP: zeropage (sıfırıncı sayfa) Adres, iki yerine bir byte'la gösterilir. Diğer byte olarak $00 kullanılır. Bu yöntemle, yalnızca hafızanın ilk 256 byte'ını adresleyebiliriz. ($0000'dan $00FF'e kadar)
Örnek:
LDA $2B
$002B adresli hafızanın içeriği aküye yüklenir.
ZPX: zeropage X-indeksli Adres için belirtilen byte'a X-registeri toplanır. Sonucun sadece sekiz biti kullanılır. Yukarıdaki şekilde onaltı bite genişletilir.
Örnek:
LDX #$30
LDA $F0,X
Yüklenen adres $0120 değil, $0020'dir. Bu adreslemenin sonunda sıfırıncı sayfanın dışına çıkamayız.
(ZP,X): indersli indirekt Operand byte' ile X-registeri toplanır. Sonuçta sıfırıncı sayfada, esas istediğimiz adresi belirten göstergecin adresini elde ederiz.
Örnek:
$20 adresli hafıza $00 içersin.
$21 adresli hafıza $CD içersin.
LDX #$0E
LDA ($12,X)
$0020 ($0012 + $000E) ve $0021 hafızaları $C000 adresini gösterir. Aküye, bu adresin içeriği yüklenir.
(ZP),Y: indirekt indeksli Operand byte'ı, sıfırıncı sayfada bir göstergecin sonrası oluşturur. Bu göstergece, Y-registerinin içeriği de toplanınca esas çalışma süresi elde edilir.
Örnek:
$20 adresli hafıza $00 içersin.
$21 adresli hafıza $C0 içersin.
LDY #$10
LDA ($20),Y
$C010 ($C000 + $0010) adresli hafızanın içeriği aküye yüklenir.
Takt: Komutun harcadığı zaman COMMODORE 64, aşağı yukarı 1 MHz civarında bir frekansla çalışır. Buna göre her bir takt bir mikrosaniye (saniyenin milyonda biri) sürer. Bu hesapla herhangi bir komutun ne kadar zaman süreceğini bulabiliriz.
Örnek:
RTS işlemi 6 mikrosaniye, LDA $00 işlemi de 2mikrosaniye sürer. Yani saniyede LDA $00 benzeri işlemlerden 500000 adet yürütülebilir.