レジスタ
A:計算結果などの値を格納するレジスタ。最もよく使う。
X:差分でアドレスを指定するときによく使う。
X=2の時、$1234,xは$1236を指す。
Y:Xと同じ。
アドレッシングモード
#$20 16進数での実数0x20(10進数では32)を表す。
#20 10進数での実数20を表す。
%10000 2進法での実数10000b(10進数では16)を表す。
$20 アドレス$000020を指す。ちなみにアドレス$000020はRAMアドレス$7E0020に等しい。
$1234 アドレス$011234を指す。ちなみにアドレス$011234はRAMアドレス$7E1234に等しい。$2000以降は$7E2000とは異なるので注意。
$123456 アドレス$123456を指す。
$1234,x X=1の時は、アドレス$1235の事を、X=10の時はアドレス$1244をの事を指す。
LoadとStore
LDA #$20 実数$20をレジスタAに格納する。
LDA $1234 RAMアドレス$7E1234の現在の値をレジスタAに格納する。
LDX #$20 実数$20をレジスタXに格納する。
LDY $1234 RAMアドレス$7E1234の現在の値をレジスタYに格納する。
STA $7E3456 レジスタAに格納されてる値を、RAMアドレス$7E3456に上書きする。
STX $1234 レジスタXに格納されてる値を、RAMアドレス$7E1234に上書きする。
STY $20 レジスタYに格納されてる値を、RAMアドレス$7E0020に上書きする。
PUSHとPULL
PHA ;A:10 X:20 Y:30 レジスタAの値をスタックに格納。
LDA #$30 ;A:30 X:20 Y:30 レジスタAに$30を代入。
PLA ;A:10 X:20 Y:30 レジスタAにスタックから値を引き出す。
PHX ;A:10 X:20 Y:30 レジスタXの値をスタックに格納。
PHY ;A:10 X:20 Y:30 レジスタYの値をスタックに格納。
LDX #$30 ;A:10 X:30 Y:30 レジスタXに$30を代入。
LDY #$10 ;A:10 X:30 Y:10 レジスタYに$10を代入。
PLY ;A:10 X:30 Y:30 レジスタYにスタックから値を引き出す。
PLX ;A:10 X:20 Y:30 レジスタXにスタックから値を引き出す。引き出される順番に注意してください。
PUSHしたら、同じ回数だけPULLして、スタックの中身を元の状態に戻しておかないとフリーズの元になります。
Transfer
値をコピーする。
TXA A:20 X:30 →A:30 X:30
TAY A:20 Y:30 →A:20 Y:20
TXY X:20 Y:30 →X:30 Y:30
加算減算
INC A A:10→A:11
DEC A A:10→A:0F
INC $1234 RAMアドレス$7E1234の値を1増やす。
DEC $20 RAMアドレス$7E0020の値を1減らす。
$7E1234の値を$30増やす。
LDA $1234
CLC
ADC #$30
STA $1234
$7E1234の値を$30減らす。
LDA $1234
SEC
SBC #$30
STA $1234
$7E1234-7E1235の2byte分の値を$30増やす。
LDA $1234
CLC
ADC #$30
STA $1234
LDA $1235
ADC #$00上の足し算で繰り上がりされていた場合、自動的に1足される。
STA $1235
$7E1234-7E1235の2byte分の値を$30減らす。
LDA $1234
SEC
SBC #$30
STA $1234
LDA $1235
SBC #$00上の引き算で繰り下がりされていた場合、自動的に1引かれる。
STA $1235