INC (INCrement) この命令で変更されうるフラグ:ネガティブフラグ、ゼロフラグ
INC A
アキュムレータの値を1増やします。
Aの値が$02の時、INC Aとすると、Aの値は$03になります。
Aの値が$FFの時は$00になります。
16bitモード時はAの値が$00FFの時は$0100になり、$FFFFの次が$0000になります。


INC ??
ダイレクトモードで指定されたアドレスのRAMの値を1増やします。
アドレス$7E0000の値が$FFの時、INC $00とすると$7E0000の値は$00になります。
16bitモード時では$7E0000の値が$FFで$7E0001の値が$03の時、
INC $00とすると$7E0000の値は$00に、$7E0001の値は繰り上がって$04になります。


INC ??,x
ダイレクトインデクスXモードで指定されたアドレスのRAMの値を1増やします。


INC ????
絶対アドレスモードで指定されたアドレスのRAMの値を1増やします。


INC ????,x
絶対アドレスインデクスXモードで指定されたアドレスのRAMの値を1増やします。


INX (INcrement X) この命令で変更されうるフラグ:ネガティブフラグ、ゼロフラグ
Xの値を1増やします。
Xの値が$02の時、INXとすると、Xの値は$03になります。
Xの値が$FFの時は$00になります。
インデックスレジスタ16bitモード時はXの値が$00FFの時は$0100になり、$FFFFの次が$0000になります。


INY (INcrement Y) この命令で変更されうるフラグ:ネガティブフラグ、ゼロフラグ
Yの値を1増やします。


DEC (DECrement) この命令で変更されうるフラグ:ネガティブフラグ、ゼロフラグ
DEC A
アキュムレータの値を1減らします。
Aの値が$02の時、DEC Aとすると、Aの値は$01になります。
Aの値が$00の時は$FFになります。
16bitモード時はAの値が$0100の時は$00FFになり、$0000の次が$FFFFになります。


DEC ??
ダイレクトモードで指定されたアドレスのRAMの値を1減らします。
アドレス$7E0000の値が$00の時、DEC $00とすると$7E0000の値は$FFになります。
16bitモード時では$7E0000の値が$00で$7E0001の値が$03の時、
INC $00とすると$7E0000の値は$FFに、$7E0001の値は繰り下がって$02になります。


DEC ??,x
ダイレクトインデクスXモードで指定されたアドレスのRAMの値を1減らします。


DEC ????
絶対アドレスモードで指定されたアドレスのRAMの値を1減らします。


DEC ????,x
絶対アドレスインデクスXモードで指定されたアドレスのRAMの値を1減らします。


DEX (DEcrement X) この命令で変更されうるフラグ:ネガティブフラグゼロフラグ
Xの値を1減らします。


DEY (DEcrement Y) この命令で変更されうるフラグ:ネガティブフラグ、ゼロフラグ
Yの値を1減らします。


ADC (ADd with Carry) この命令で変更されうるフラグ:ネガティブフラグ、オーバーフローフラグ、ゼロフラグ、キャリーフラグ
ADC #??
アキュムレータの値を指定された数値分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。
キャリーフラグがクリアされていて(0の時)、Aの値が$20の時、
ADC #$50とすると、Aの値が$70になります。
キャリーフラグがクリアされていて(0の時)、Aの値が$E0の時、
ADC #$50とすると、Aの値が$30になります。
さらにこの時は桁あふれ(繰り上がり)が起きるので、
キャリーフラグがセットされます。
逆に桁あふれが起きなかったときは、キャリーフラグがクリアされます。
具体的には、キャリーフラグがセットされており、Aの値が$20の時に
ADC #$30とすると、Aの値が$51になります。(キャリーフラグがセットされていたので31増える)
そして同時にキャリーフラグがクリアされます。
16bitモード時で、Aが$00E0で、ADC.W #$0050とすると、Aの値は$0130になりますが、
この時は桁あふれではありませんのでキャリーフラグはクリアされます。
Aが$00E0の時にADC.W #$FF50とすると、Aの値が$0030となって、キャリーフラグがセットされます。


ADC ??
アキュムレータの値をダイレクトモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ????
アキュムレータの値を絶対アドレスモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ??????
アキュムレータの値を絶対ロングアドレスモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ??,x
アキュムレータの値をダイレクトインデクスXモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ????,x
アキュムレータの値を絶対アドレスインデクスXモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ????,y
アキュムレータの値を絶対アドレスインデクスYモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ??????,x
アキュムレータの値を絶対ロングアドレスインデクスXモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC (??)
アキュムレータの値をダイレクトインダイレクトモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC (??),y
アキュムレータの値をダイレクトインダイレクトインデクスYモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC (??,x)
アキュムレータの値をダイレクトインデクスXインダイレクトモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC [??]
アキュムレータの値をダイレクトインダイレクトロングモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC [??],y
アキュムレータの値をダイレクトインダイレクトロングインデクスYモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC ??,s
アキュムレータの値をスタックリラティブモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


ADC (??,s),y
アキュムレータの値をスタックリラティブインダイレクトインデックスYモードで指定されたアドレスのRAMの値の分増やします。
キャリーフラグがセットされてる時(1の時)は、更に1増やします。


SBC (SuBtract with Carry) この命令で変更されうるフラグ:ネガティブフラグ、オーバーフローフラグ、ゼロフラグ、キャリーフラグ
SBC #??
アキュムレータの値を指定された数値分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。
キャリーフラグがセットされていて(1の時)、Aの値が$70の時、
SBC #$50とすると、Aの値が$20になります。
キャリーフラグがセットされていて(1の時)、Aの値が$20の時、
SBC #$50とすると、Aの値が$D0になります。
さらにこの時は繰り下がりが起きるので、キャリーフラグがクリアされます。
逆に繰り下がりが起きなかったときは、キャリーフラグがセットされます。
ADC命令とは逆なので注意してください。
具体的には、キャリーフラグがクリアされており、Aの値が$70の時に
SBC #$30とすると、Aの値が$3Fになります。(キャリーフラグがクリアされていたので31減る)
そして同時にキャリーフラグがセットされます。
16bitモード時で、Aが$0120で、SBC.W #$0050とすると、Aの値は$00D0になりますが、
この時は繰り下がりではありませんのでキャリーフラグはセットされます。
Aが$0020の時にSBC.W #$0050とすると、Aの値が$FFD0となって、キャリーフラグがクリアされます。


SBC ??
アキュムレータの値をダイレクトモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ????
アキュムレータの値を絶対アドレスモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ??????
アキュムレータの値を絶対ロングアドレスモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ??,x
アキュムレータの値をダイレクトインデクスXモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ????,x
アキュムレータの値を絶対アドレスインデクスXモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ????,y
アキュムレータの値を絶対アドレスインデクスYモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ??????,x
アキュムレータの値を絶対ロングアドレスインデクスXモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC (??)
アキュムレータの値をダイレクトインダイレクトモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC (??),y
アキュムレータの値をダイレクトインダイレクトインデクスYモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC (??,x)
アキュムレータの値をダイレクトインデクスXインダイレクトモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC [??]
アキュムレータの値をダイレクトインダイレクトロングモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC [??],y
アキュムレータの値をダイレクトインダイレクトロングインデクスYモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC ??,s
アキュムレータの値をスタックリラティブモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


SBC (??,s),y
アキュムレータの値をスタックリラティブインダイレクトインデックスYモードで指定されたアドレスのRAMの値の分減らします。
キャリーフラグがクリアされてる時(0の時)は、更に1減らします。


ADC、SBCを使う時の注意
ADC命令で指定した分だけキッチリ増やしたいときは、キャリーフラグをちゃんとクリアしておく必要があります。
LDA #$30
CLC ;キャリーフラグをクリア
ADC #$30

同様にSBC命令で指定した分だけキッチリ減らしたいときは、キャリーフラグをちゃんとセットしておく必要があります。
LDA #$60
SEC ;キャリーフラグをセット
SBC #$30

なぜキャリーフラグで増えたり減ったりする量が変わるかというと、複数バイトの加算減算における繰り上がり繰り下がり処理に利用するためです。
E4,xはスプライトのx座標の下位バイトで、14E0,xは上位バイトです。
この座標を30増やしたいときは、以下のようにします。
LDA $E4,x
CLC
ADC #$30
STA $E4,x
LDA $14E0,x
ADC #$00
STA $14E0,x

2行目でキャリーフラグがクリアされてるので、$E4,xの値はキッチリ30増えます。
この時繰り上がりが起こらなければ、$14E0,xの値はそのままで、
繰り上がりが起きたときは$14E0,xの値が1増えることになります。
例えば$E4,xの値が30、$14E0,xの値が01の時、この処理の後は$E4,xの値が60、$14E0,xの値が01になります。
$E4,xの値がE0、$14E0,xの値が01の時、この処理の後は$E4,xの値が10、$14E0,xの値が02になります。
同様に30減らしたいときは、以下のようにします。
LDA $E4,x
SEC
SBC #$30
STA $E4,x
LDA $14E0,x
SBC #$00
STA $14E0,x

何故繰り下がりでキャリーフラグが0になるのか?
キャリーフラグとは、桁が溢れたときに1になるフラグです。
ですから、足し算の時は、繰り上がりが起こるとキャリーフラグが1に、
繰り上がりが起こらないとキャリーフラグは0になります。
では、何故引き算の時は繰り下がりの時にキャリーフラグは0に、
繰り下がりが起こらないときにキャリーフラグが1になるのでしょうか?
一見逆であるべき様に思えます。

その理由は、そもそもCPUというものは足し算しかできないからです。
どんなCPUでも、引き算・かけ算・割り算などは足し算を利用して処理してます。
例えば$10を引くときは、内部処理では$F0を足しているのです。
$30 - $10は、内部では $30 + $F0
$30 - $50は、内部では $30 + $B0なわけです。
繰り下がりが起こらない引き算は、内部では繰り上がりの起こる足し算に、
繰り下がりが起こる引き算は、内部では繰り上がりの起こらない足し算になっているわけです。
ですから、引き算時は繰り下がりが起きないときのみキャリーフラグが1になるのです。