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

アセンブラ入門編】

〖基礎知識編〗

≪ステータスレジスタ

*ステイタスレジスタは、条件分岐命令の条件として保持されているもので

 頻繫に使われるので、よく理解する必要があります。特にキャリーフラグ、

 ゼロフラグは重要でこの2つが使いこなせればゲームを作る上では十分

 でしょう。

N:ネガティブフラグAの7ビット目と同じになります。負数の判定用。

V:オーバーフローフラグ演算がオーバーフローを起こした場合セットされます。

R:予約済み。常にセットされています。

B:ブレイクフラグ。BRK割り込み発生時にセットされる。割り込みが

BRKかIRQかを識別するために使用する。

D:デシマルモードフラグ(ファミコンでは未実装)B:ブレークモード。BRK発生時

セットされ、IRQ発生時はクリアされます。

 

I:インタラプトフラグ。IRQ禁止フラグ     0.許可 1.禁止

Z:ゼロフラグ。演算結果が0になった場合セットされます。ロード命令でも変化します。

C:キャリーフラグ。キャリー発生時セットされます。

トランスファー命令〗

トランスファーは、レジスタ間のコピー命令で、AレジスタとX、Yレジスタ

 間のコピー(転送)します、TXS、TSXは特殊でスタックの設定や呼び出し

 に使われる命令です。

TAX:AレジスタをXレジスタにコピー

TAY:AレジスタをYレジスタにコピー

TXA:XレジスタをAレジスタにコピー

TYA:YレジスタをAレジスタにコピー

TXS:XレジスタをSレジスタにコピー

TSX:SレジスタをXレジスタにコピー

〖比較命令〗

CMP:Aレジスタオペランドを比較する。

[対象となるオペランド]

Immediate、Zeropage、Zeropage, X、Absolute、

Absolute, X、Absolute, Y、(Indirect, X)、(Indirect), Y

CPX:Xレジスタオペランドを比較する。

[対象となるオペランド]

Immediate、Zeropage、Absolute

CPY:Yレジスタオペランド比較する。

[対象となるオペランド]

Immediate、Zeropage、Absolute

〖インクリメント・デクリメント命令〗

DEC:オペランドの値を-1する。

[対象となるオペランド]

Zeropage、Zeropage, X、Absolute、Absolute, X

DEX:Xレジスタを-1する。

[対象となるオペランド]

Implied

DEY:Yレジスタを-1する。

[対象となるオペランド]

Implied

INC:オペランドの値を+1する。

[対象となるオペランド]

Zeropage、Zeropage, X、Absolute、Absolute, X

INX:Xレジスタを+1する。

[対象となるオペランド]

Implied

INY:Yレジスタを+1する。

[対象となるオペランド]

Implied

〖条件分岐命令〗

BCC:比較演算の結果、キャリー無しの時分岐する。

BCS:比較演算の結果、キャリー有りの時分岐する。

BEQ:比較演算の結果、ゼロの時分岐する。

BNE:比較演算の結果、ゼロでない時分岐する。

BMI:比較演算の結果、マイナスの時分岐する。

BPL:比較演算の結果、プラスの時分岐する。

BVC:比較演算の結果、オーバーフロー無しの時分岐する。

BVS:比較演算の結果、オーバーフロー有りの時分岐する。

*次回は、カウンターを使ったループを作ってみます。

 

f:id:chien1956:20200215194457p:plain