AOBA's Information Processing Education
1998/02/01
注意1:このページは、回線を切断した後でゆっくりご覧になってください(テキストを印刷する場合は、その取り扱いに注意してくださるようお願いします)。
注意2:背景が白地の画面を長時間見つめていると頭が痛くなってしまいますので、ここは背景をグレーにしています。
今週は演習をいくつか行います。では早速。
「演習1」
プログラムの先頭などを基準とし、基準とした番地からの変位を表した番地を何と呼ぶか、解答群の中から選べ。
- 命令アドレス
- メモリアドレス
- 相対アドレス(相対番地)
- 絶対アドレス(絶対番地)
「演習2」
機械語に関する説明として誤っているものを解答群の中から選べ。
- 機械語はコンピュータが直接的に実行可能である。
- CPUが異なってもOS(オペレーティングシステム)が同じならば機械語は同じである。
- 機械語は2進数で表現される。
- コンパイラやアセンブラが出力するプログラムである。
「演習3」
機械語は通常、命令部と何から構成されるか、解答群の中から選べ。
- 番地部
- データ部
- レジスタ部
- オペレーション部
「演習4」
コンピュータの各装置に関する以下の記述中の、空欄XとYに当てはまる用語の正しい組み合わせを解答群の中から選べ。
- (X)は主記憶装置に記憶されたプログラムの、指定されたアドレスに当たる命令を順次取り出す。
- 制御装置は取り出した命令を(Y)で解読し、演算装置で演算を実行する。
- X:制御装置 Y:命令デコーダ(命令解読器)
- X:演算装置 Y:命令デコーダ(命令解読器)
- X:制御装置 Y:命令レジスタ
- X:演算装置 Y:命令レジスタ
「演習5」
あるCPUの機械語命令が以下の表で示す構成をとるとする。
アドレス指定方式 1+1/2アドレス指定方式 命令部のビット長 4ビット レジスタ番号指定のビット長 2ビット 番地指定のビット長 10ビット
命令部 レジスタ番号 番地 (A810)16の機械語命令の場合、この命令で指定された命令部(の演算)とレジスタ番号および番地の組み合わせとして正しいものを、解答群の中から選べ。
なお、命令部が(1010)2の演算は加算、(1011)2の演算は減算とする。
- 命令部:加算 レジスタ番号:8番 番地:10番地
- 命令部:加算 レジスタ番号:2番 番地:16番地
- 命令部:減算 レジスタ番号:8番 番地:10番地
- 命令部:減算 レジスタ番号:2番 番地:16番地
「演習6」
命令レジスタに関する説明として正しいものを、解答群の中から選べ。
- 現在(または次に)実行する命令のアドレスを記憶するレジスタ
- 命令を解読する回路のこと
- 演算結果を一時的に記憶するレジスタ
- 主記憶装置から読み出した命令を記憶するレジスタ
「演習7」
制御装置は次の命令に備えて命令アドレスレジスタを更新する動作を行う。これを行う段階として正しいものを解答群の中から二つ選べ。
- エグゼキュートサイクル
- フェッチサイクル
- 命令取り出し段階
- 命令実行段階
「演習8」
以下の記述中の空欄に入れるべき正しい数値を、解答群の中から選べ。
あるコンピュータの主記憶装置は16ビットごとに番地が振られている。また、このコンピュータの命令語長(機械語になった1命令の長さ)は32ビットである。
今、制御装置が(10進数の)1000番地の命令を実行し、次の命令に備えてプログラムカウンタを更新する動作を行った。この動作後のプログラムカウンタの値は( )である。
なお1000番地の命令は、2バイト同士のデータを減算するものであったとする。
- 996
- 998
- 1002
- 1004
演習の解答 今週の演習は、2〜3回前からの講座で行った内容を確認するためのものです。もし分からない問題があれば、前の講座に戻って確認してください。
「演習1」 解答:c
ある基準番地からの変位を表す番地は、相対アドレス(相対番地)です。これに対して、主記憶装置に固定的に振られる番地が絶対アドレス(絶対番地)です。
「演習2」 解答:b
CPUが異なれば当然機械語が異なります。
「演習3」 解答:a
機械語は命令部(またはオペレーション部)と番地部(またはオペランド部)から構成されます。
「演習4」 解答:a
制御装置は主記憶装置に記憶されたプログラムの、指定されたアドレスに当たる命令を順次取り出す。
制御装置は取り出した命令を命令デコーダ(または命令解読器)で解読し、演算装置で演算を実行する。「演習5」 解答:b
まず、(A810)16を2進数に基数変換します。
(A810)16=(1010100000010000)2
これを表で示す機械語の構成に合わせると、
1010 10 0000010000 命令部は(1010)2だから加算
レジスタ番号は(10)2だから2番
番地は(0000010000)2だから16番地「演習6」 解答:d
命令レジスタは、主記憶装置から読み出した命令を記憶するレジスタです。命令アドレスレジスタと間違い易いので、しっかり覚えておいてください。
なお、解答群のcの装置をアキュームレータといいます。ちょっとこの記述だけでは足りないのですが(cの記述だけだと汎用レジスタともとれる)、とりあえずはこのように簡単に覚えておいてください。「演習7」 解答:b,c
命令取り出し段階=フェッチサイクル,命令実行段階=エグゼキュートサイクルです。まずは、以上の点をしっかり覚えておくように。
そして、命令アドレスレジスタ(プログラムカウンタ)を更新する動作は、命令取り出し段階の最後に行われます。「演習8」 解答:c
1000番地の命令が分岐命令(ジャンプ命令)でなければ、1000番地の命令を実行した後のプログラムカウンタの値は、1000番地+命令語長分の番地になります。つまり、分岐命令で無い限りプログラムカウンタは、命令の種類やオペランドのデータ長に関係なく、命令語長分の番地が加算されます。
この問題では命令語長が32ビットで、16ビットごとに番地が振られるのですから、1命令あたり2番地の領域を確保していることになりますね。
ということで、1000+2=1002番地が正解です。今日はこのくらいにしてやるか。
ではまた来週。