CPUの構成

一般的なマイコンに用意されているCPU内レジスタ

CPU内に用意されているレジスタのうち,一般的なマイコンにも用意されているPC,PSW,汎用レジスタ,SPについて,加えてSPに関連するスタック領域について,もう少し詳しく説明します。

プログラムカウンタ(PC)
次に実行する命令コードのROMアドレスを指し示しています。
PCで示されるROMアドレスからプログラムが読み出されると,PCは読みだされたバイト数分だけ自動的に加算されます。読み出された命令が分岐命令の場合,PCには分岐先のアドレスが格納されます。

プログラムステータスワード(PSW)
PSWはCPUの内部状態(演算状態や割込みの状態など)を示すフラグ群です。フラグは比較命令や演算命令によって設定されます。そして,このフラグは主に条件分岐命令で参照され,このフラグの状態に応じて分岐を制御できるようになっています。
ML62Q1000シリーズのマイコンのPSWは,以下のような構成になっています。

C:キャリフラグ
算術演算命令,シフト命令,比較命令の実行結果などによりキャリ(繰り上がり)やボロー(繰り下がり)が発生したときにセットされるフラグです。
例えば,8ビットデータの演算において,250+10→4という演算(2進では11111010+1010→[1]00000100)や,10-20→-10という演算(2進では[1]00001010-00010100→11110110)のときに,キャリフラグが1にセットされます。([1]は繰り上がりや繰り下がりのビットのイメージと捉えてください)

Z:ゼロフラグ
演算の結果がゼロになったときにセットされるフラグです。
例えば,10-10→0という演算をしたときにゼロフラグが1にセットされます。

S:サインフラグ
演算結果が負の数になったとき,すなわち演算結果の符号ビット(データの最上位ビット)が1になったときにセットされるフラグです。
例えば,10-20→-10という演算(2進では00001010-00010100→11110110)のときに,サインフラグが1にセットされます。

OV:オーバーフローフラグ
符号付き演算におけるキャリまたはボローを保持するフラグです。算術演算および比較演算などにおいて,2 の補数で表現される範囲を越えた場合にセットされるフラグです。
例えば,127+1→-128という演算(2進では01111111+1→10000000)のときに,オーバーフローフラグが1にセットされます。

MIE:マスカブルインタラプトイネーブルフラグ
マスカブル割込み全体の許可/禁止を制御するフラグです。1のとき割込み許可,0のとき割込み禁止となります。

ELEVEL:割込みレベル
現在実行中の割込みレベルを保持するフィールドです。割込みに入っていない時は0,マスカブル割込みのときは1,ノンマスカブル割込みのときは2になります。

汎用レジスタ
演算の中心となるレジスタです。8ビット×16本で構成されています。命令によっては,連続するレジスタを結合して16ビットレジスタ,32ビットレジスタ,64ビットレジスタとして使用できます。
以下のような感じです。



マイコン設計者がお答えします!技術的問い合わせフォーム