ドラクエ風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