コンディションコードレジスタ
コンディションコードレジスタ
ステータスレジスタの下半分(ユーザバイト)はコンディションコードレジス タ(CCR)になっている.
- 5つのフラグ
 - X エクステンド (Extend)
 - N ネガティブ (Negative)
 - Z ゼロ (Zeron)
 - V オーバーフロー (Overflow)
 - C キャリー (Carry)
 
順に X,N,Z,V,C という名前がつけれられてい る. それぞれエクステンド,ネガティブ,ゼロ,オーバーフロー,キャリーの意味 である.
CCRの使用目的の第1は,条件判定/条件ジャンプ である. これを行う命令は,Bcc, DBcc などである. (実際にはccのところにNE,LTなどの判定条件がかかれる)
CCRのもう1つの重要な用途は,多倍長演算や多倍長シフトのときの桁上げである. 68000では,桁上げにはXビットを用いる.
Nフラグ
-  データを「2の補数である」とみなして,演算結果が負のとき,N=1,
さもなければN=0
つまり,(最上位ビット=1)のときN=1,さもなければN=0
 
Zフラグ
- 演算結果が0(ゼロ)のとき,Z=1.さもなければZ=0
 
Vフラグ
-  オーバーフローとは:
データを「2の補数である」とみなして, 符合ビットが「正しい値を示していない(破壊)」とき,「オーバーフロー」であるという.
 -  Vフラグの変化条件
- 算術演算において,「オーバーフロー」が発生したらV=1,さもなけ ればV=0.
 - move 命令のあとは,必ず V=0.
 - 但し move to CCR では,Vフラグは変化し得る
 
 
Cフラグ
-  キャリー,ボロー
オペランドが「正または0の数」であるとみなして, 「桁上げ(キャリー)」,「桁下げ(ボロー)」が発生した場合
-  加算命令におけるキャリー
(1) (最上位ビット=1)の数と(最上位ビット=1)の数の加算を行った場合
(2) (最上位ビット=1)の数と何かの数の加算を行い,(最上位ビット=0)に なった場合
(3) 何かの数と(最上位ビット=1)の数の加算を行い,(最上位ビット=0)に なった場合
 -  減算命令におけるボロー
(1) (最上位ビット=0)の数と(最上位ビット=1)の数の減算を行った場合
(2) (最上位ビット=0)の数と何かの数の減算を行い,(最上位ビット=1)に なった場合
(3) 何かの数と(最上位ビット=1)の数の減算を行い,(最上位ビット=1)に なった場合
 - キャリー,ボローは,2の補数とは関係ない
 
 -  加算命令におけるキャリー
 -  Cフラグの変化条件
- 減算命令の結果,「キャリー」あるいは「ボロー」が発生したらC=1, さもなければC=0.
 - move 命令のあとは,必ず C=0.
 - 但し move to CCR では,Cフラグは変化し得る
 
 
Xフラグ
- 多倍長演算のためのフラグ
 - 機能的には,Cフラグと同じ
 - Xフラグが変化するときには,常にX=C
 -  Cフラグが変化するからといって,常に,X=Cになるとは限らない.
例えば,move 命令の後(move to CCR システムを除き)C=0になるが,Xは変化しな い