次にCOMET IIの動作の仕組みを考える。COMET IIに限らず、どんなコンピュー
ターでも基本的には同じである。
図1の状態に主記憶装置がなっていたとす
る。さらに、プログラムレジスタ(PR)の値が#0020となっていたと
する。主記憶装置のアドレス#0020以降は、以下のCASL IIのプログ
ラムをアセンブルして機械語に直したものである。
=1
PGM START
LD GR0,A
ADDA GR0,B
ST GR0,C
RET
A DC 1
B DC 1
C DC 0
END
ひとつずつ、このコンピューターの動作を考える。すると、以下のように動作す
る。
- プログラムレジスタの中身が#0020なので、CPUがアドレスバスを
(0000 0000 0010 0000)とする。さらに、CPUはRD=1とする。すると、主
記憶装置が、データバスを(0001 0000 0000 0000)とする。
- CPUが受け取った#1000を解析する。解析の結果、それは、2
語の命令と分かるので、アドレスバスとデータバス、RD線を使って、主
記憶装置から残りの1語分#0027を読み出す。
- 2語読み出したので、プログラムレジスタを+2加算する。即ち、
PR=#0022となる。
- 読み出した命令(#1000と#0027)から、
#0027番地のデータを読み出して、汎用レジスタGR0にその値
を入れる。GR0=#0001となる。そして、フラグレジスタをセッ
ト(OF=0,SF=0,ZF=0)する。これで最初の命令が完了。
- 次に、プログラムレジスタPR=#0022に従い、その番地の命
令#2000を読み出す。
- この命令をCPUが解析して、2語と分かる。そして、#0023番
地のデータ#0028を主記憶装置から読み出す。
- 2語読み出したので、プログラムレジスタを+2加算する。即ち、
PR=#0024となる。
- 読み出した命令(#2000と#0028)から、
#0028番地のデータを読み出して、汎用レジスタGR0との和を
計算して、結果を汎用レジスタに戻す。GR0=#0002となる。
そして、フラグレジスタをセット(OF=0,SF=0,ZF=0) する。こ
れで2番目の命令が完了。
- プログラムレジスタPR=#0024に従い、その番地の命令
#1100を読み出す
- この命令をCPUが解析して、2語と分かる。そして、#0025番
地のデータ#0029を主記憶装置から読み出す。
- 2語読み出したので、プログラムレジスタを+2加算する。即ち、
PR=#0026となる。
- 読み出した命令(#1100と#0029)から、汎用レジ
スタGR0の内容を#0029番地のデータに書き込む。これで3番
目の命令は終了。
- プログラムレジスタPR=#0026に従い、その番地の命令
#8100を読み出す。
- この命令をCPUが解析して、RET命令と分かる。スタックポインター
(PR)が示すアドレスの値をプログラムレジスタPRにセットする(この辺
は後の学習範囲)。これでこの命令は終わり。
これで、命令もデータ(整数や文字)が2進数で表すか分かるであろう。それは、
全てハードウェアーの電圧に対応しているのである。その電圧に対応して、コ
ンピューターは動作しているに過ぎないのである。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年9月7日