CPU > 命令セット > ADC

「CPU/命令セット/ADC」の編集履歴(バックアップ)一覧に戻る

CPU/命令セット/ADC - (2017/02/20 (月) 17:07:18) のソース

***ADC (Add with carry) [#m4b5c365]
[キャリー付き加算]

16 ビットアキュームレータモードの時、
キャリーは操作によって生成された時、 7 ビット目から 8 ビット目へ
適切に移動されるだろう (すなわち、$FF+4 = $0103 の $01 は
アキュームレータの上位バイトへ、$03 は下位バイトへ入る)。
なので、キャリーは下位バイトが加算された時にクリアされる必要がある。
8 ビットアキュームレータモードと同様に、手動で
15 ビット目の上にキャリーがないかチェックする必要がある。

16 ビットモードの時、下位バイトが実効アドレスに置かれる。
上位バイトは、実行アドレス + 1 に置かれる。

''フラグ変化''
 nv----zc
 
 n : 結果の最上位ビット
 v : サインドオーバーフローがあった時 1
 z : 結果が 0 の時 1
 c : オーバーフローした時 1

-注 : [[サインドオーバーフロー>CPU/命令セット/Signed Overflow]]

''コード一覧''
|アドレッシングモード|文法|オペコード|バイト数|命令サイクル|注|h
|[[Immediate>CPU/アドレッシングモード/Immediate]]|ADC #const |69|2*|2 | 1|
|[[Absolute>CPU/アドレッシングモード/Absolute]]|ADC addr |6D|3 |4 | 1|
|[[Absolute Long>CPU/アドレッシングモード/Absolute Long]]|ADC long |6F|4 |5 | 1|
|[[Direct Page>CPU/アドレッシングモード/Direct Page]]|ADC dp |65|2 |3 | 1,2|
|[[Direct Page Indirect>CPU/アドレッシングモード/Direct Page Indirect]]|ADC (dp) |72|2 |5 | 1,2|
|[[Direct Page Indirect Long>CPU/アドレッシングモード/Direct Page Indirect Long]]|ADC [dp] |67|2 |6 | 1,2|
|[[Absolute Indexed,X>CPU/アドレッシングモード/Absolute Indexed,X]]|ADC addr,X |7D|3 |4 | 1,3|
|[[Absolute Long Indexed,X>CPU/アドレッシングモード/Absolute Long Indexed,X]]|ADC long,X |7F|4 |5 | 1|
|[[Absolute Indexed,Y>CPU/アドレッシングモード/Absolute Indexed,Y]]|ADC addr,Y |79|3 |4 | 1,3|
|[[Direct Page Indexed,X>CPU/アドレッシングモード/Direct Page Indexed,X]]|ADC dp,X |75|2 |4 | 1,2|
|[[Direct Page Indexed Indirect,X>CPU/アドレッシングモード/Direct Page Indexed Indirect,X]]|ADC (dp,X) |61|2 |6 | 1,2|
|[[Direct Page Indirect Indexed,Y>CPU/アドレッシングモード/Direct Page Indirect Indexed,Y]]|ADC (dp),Y |71|2 |5 | 1,2,3|
|[[Direct Page Indirect Long Indexed,Y>CPU/アドレッシングモード/Direct Page Indirect Long Indexed,Y]]|ADC [dp],Y |77|2 |6 | 1,2|
|[[Stack Relative>CPU/アドレッシングモード/Stack Relative]]|ADC sr,S |63|2 |4 | 1|
|[[Stack Relative Indirect Indexed,Y>CPU/アドレッシングモード/Stack Relative Indirect Indexed,Y]]|ADC (sr,S),Y |73|2 |7 | 1|

''注''
* : m=0 の時 1 バイト増加 (16-bit メモリ/アキュームレータ)
1 : m=0 の時 1 サイクル増加 (16-bit メモリ/アキュームレータ)
2 : ダイレクトページレジスタの下位バイトが 0 でない場合 1 サイクル増加
3 : インデックスがページ境界をまたいだ場合 1 サイクル増加