図
3のうち、プログラマが注意を払うべきものは、
です。今後アセンブラでプログラムを書いてみると分かりますが、制御装置や
演算装置について、あまり注意を払う必要はありません。COMET IIのレジスタ
を表
1にまとめておきます。以降、それぞれのレジス
タについて、説明します。
表 1:
CASL IIのレジスタ
記号 |
語源 |
日本語 |
機能 |
GR |
General Register |
汎用レジスタ |
計算等に用いる。またGR1〜GR7
は指標レジスタとしても使われる。 |
SP |
Stack Pointer |
スタックポインタ |
スタック領域の最上段のアドレスを保持する。 |
PR |
Program Register |
プログラムレジスタ |
次に実行する命令のアドレスを保持する |
FR |
Flag Register |
フラグレジスタ |
演算結果の状態を保持する |
これは、算術や論理、比較、シフト演算を実行するときに使います。GR0〜GR7
までの8個用意されています。あとは、教科書の通りです。
- 汎用レジスタは、8個用意されています。
- 汎用レジスタは、16ビットです。メインメモリーのデータのビット数
とおなじです。
プログラムカウンターと呼ばれることもあります。このレジスタの値は、プル
グラムが次に実行する命令語の先頭番地です。したがって、
- 必要なプログラムレジスタは、1個です。
- プログラムレジスタは、16ビットです。アドレスのビット数と同じ。
となります。
プログラムを事前に主記憶装置に格納して、プログラムレジスタPRの値によっ
て、プログラムを構成する命令を1つずつ取り出して、処理を行います。この
ような方式を逐次制御方式と言ったり、プログラム内蔵方式(stored program)
と言ったりします。
Flag Regisuterのフラグとは、旗のことです。サッカーの試合で、プレーの状
態により旗を上げます。あれと同じです。コンピューターでは演算の結果によ
り旗を上げます。
COMET IIには、1ビットのレジスタが3個あります。演算結果によって、それらのレジ
スタの値がセットされます。セットされる内容は、教科書P.18の表2.4の通り
です。主に、このレジスタは、実行順序を変更、分岐命令に使われます。
- フラグレジスタは、3個あります。それで、計算結果の状態を表します。
- 各レジスタは、旗の上げ下げなので、1ビットです。
あとは教科書の説明通り。
メインメモリーの一部をCPUが専用の記憶領域として使います。そのときのメ
インメモリーのアドレスを示します。
したがって、
- 必要なプログラムレジスタは、1個です。
- プログラムレジスタは、16ビットです。アドレスのビット数と同じ。
となります。
これは、ここでは少し早すぎますので、実際に使うときに説明します。
これは、特殊なレジスタで、ハードウェアーは汎用レジスタが兼ねます。汎用
レジスタのうちGR1〜GR7をつかいます。GR0を使わない理由、これはマシン語
との関係で、後の授業で述べます。
- 指標レジスタは、汎用レジスタの7個が使えます。
- 指標レジスタは、16ビットです。メインメモリーのデータのビット数
と同じです。
教科書の図2.5の表現は分かりにくいので、具体例でその動作を示します。例
えばクラス40人分の数学と英語と電子計算機のテストの点が、メモリに格納さ
れており、それぞれの平均点を求めたい場合、指標レジスタを使うと便利です。
このプログラムでは、それぞれの教科のクラスの合計点を計算するところが、
重要です。指標レジスタを使う場合と使わない場合のフローチャートを図
4に示します。
指標レジスタを使わないと、プログラムが大変でしょう。このように、指標レ
ジスタを使うことにより、基準点からのアドレスを加算してそのデータにアク
セスできます。このように、アドレスを操作することをアドレス修飾と言いま
す。
実は、皆さんは、これと同じプログラムテクニックをFORTRANの授業で学んだ
はずです。FORTRANの配列と同じです。FORTRANでは分かりにくいのですが、C
言語の配列はまさにこれと同じことを行っています(実感できます)。
図 4:
指標レジスタを使った場合と使わない場合のプログラム。クラス
の数学のテストの合計点を計算している。GR1を指標レジスタとして使って
いる。
|
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年9月7日