[アキュームレータとメモリ比較]
アキュームレータとメモリを比較し、 その結果に応じてステータスレジスタの内容を変更する。 アキュームレータとメモリの内容は変更されない。 比較には減算が利用される (アキュームレータ - メモリの値)。
16 ビットアキュームレータモードの時 (m=0)、 16 ビット幅でデータを扱う。 下位バイトは実効アドレスに、上位バイトは実効アドレス + 1 に入れる。
フラグ変化
n-----zc n : 結果の最上位ビットの値 z : 結果が 0 の時セット c : ボロー (桁下がり) が必要無い時セット (アキュームレータ >= メモリ) ボローが必要な時はセットしない (アキュームレータ < メモリ)
コード一覧
アドレッシングモード | 文法 | オペコード | バイト数 | 命令サイクル | 注 |
Immediate | CMP #const | C9 | 2* | 2 | 1 |
Absolute | CMP addr | CD | 3 | 4 | 1 |
Absolute Long | CMP long | CF | 4 | 5 | 1 |
Direct Page | CMP dp | C5 | 2 | 3 | 1,2 |
Direct Page Indirect | CMP (dp) | D2 | 2 | 5 | 1,2 |
Direct Page Indirect Long | CMP [dp] | C7 | 2 | 6 | 1,2 |
Absolute Indexed,X | CMP addr,X | DD | 3 | 4 | 1,3 |
Absolute Long Indexed,X | CMP long,X | DF | 2 | 7 | 1 |
Absolute Indexed,Y | CMP addr,Y | D9 | 3 | 4 | 1,3 |
Direct Page Indexed,X | CMP dp,X | D5 | 2 | 4 | 1,2 |
Direct Page Indexed Indirect,X | CMP (dp,X) | C1 | 2 | 6 | 1,2 |
Direct Page Indirect Indexed,Y | CMP (dp),Y | D1 | 2 | 5 | 1,2,3 |
Direct Page Indirect Long Indexed,Y | CMP [dp],Y | D7 | 2 | 6 | 1,2 |
Stack Relative | CMP sr,S | C3 | 2 | 4 | 1 |
Stack Relative Indirect Indexed,Y | CMP (sr,S),Y | D3 | 2 | 7 | 1 |
* : m=0 (16-bit メモリ/アキュームレータ) の時 1 バイト増加 1 : m=0 (16-bit メモリ/アキュームレータ) の時 1 サイクル増加 2 : ダイレクトページレジスタの下位バイトが 0 でない場合 1 サイクル増加 3 : インデックスがページ境界をまたいだ場合 1 サイクル増加