ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第21回
アセンブラ入門編】
『算術演算命令』
*6502に、加算、減算命令は1つずつありますが、
キャリーフラグ付き加算命令なので注意が必要です、

加算(ADC):Aレジスタオペランドを加算し、キャリーフラグを加算します。
(例) Aレジスタに100をロード、 Aレジスタに100を加算します、
その時加算の前に、キャリーフラグを、リセットします。
lda #100
clc     ;キャリーフラグを,リセット
adc #100
減算(SBC):Aレジスタからオペランドを減算し、更にボローを減算します。
(例) Aレジスタに100をロード、Aレジスタから50を加算します、
その時減算の前に、キャリーフラグを、セットします。
lda #100
sec     ;キャリーフラグを,セット
sbc #50
『論理演算命令』

AND:  論理積

*BIT どうし比較し双方が1のときセット

  Aレジスタ       #%00010001

  対象オペランド      #%00000001

       結果                        #%00000001

OR:   論理和

*BIT どうし比較しどちらか片方が1のときセット

  Aレジスタ       #%00010001

  対象オペランド      #%00010000

       結果                        #%00010001


XOR:  排他的論理和

*BIT どうし比較し同じでないときセット

  Aレジスタ       #%01000001

  対象オペランド      #%01001000

       結果                        #%00001001

『比較命令』
CMP:Aレジスタオペランドを比較し結果をフラグに保持する。
CPX:Xレジスタオペランドを比較し結果をフラグに保持する。
CPY:Yレジスタオペランドを比較し結果をフラグに保持する。

(対象となるフラグ)
ゼロの時 Z=1:マイナスの時 N=1:桁上がりの時 C=1