アドレス指定方式での、命令語が参照する番地
16進数で”C13B0206”という32ビットの命令語があります。
<命令語の仕様>
0~7ビット:命令指示部
8~10ビット:レジスタ
11~15ビット:アドレス修飾部
16~31ビット:番地
<アドレス修飾と参照番地の関係>
00 0固定 直接アドレス
(11,12の値が00、13~15の値が0固定のとき、直接アドレス。)
01 0固定 間接アドレス
10 インデックスレジスタ インデックスレジスタ+番地の値
11 インデックスレジスタ インデックスレジスタ+番地が示す内容の値
<主記憶、レジスタの状態>
●主記憶に格納されている値(16進数)
番地(16進数)が
202,203,204,205,206,208,209,20A...の順に、それぞれの格納値は、 203,204,205,206,208,209,20A,20B...。
●インデックスレジスタに格納されている値(16進数)
インデックスレジスタ番号(16進数)が1,2,3,4,5… の順に、それぞれの格納値は、 0,1,2,3,4…。
(1) アドレス修飾部のインデックスレジスタ番号。
命令語の”C13B0206”で、アドレス修飾部にあたるのが”3B”。00111011(2進数)。8~10ビットの001がレジスタになるから、3。
(2)命令の番地部の番地の値(16進数)
命令の番地部の番地の値。命令部では、”0206”。ちょうど16進数なので、206。
(3) 命令が最終的に参照する番地。
上の、<主記憶、レジスタの状態>より、11~15ビットが”1011”。
インデックス番号が11(2進数)なので、3(16進数)。インデックスレジスタ番号が3のとき、格納されているのは2。番地の値である206と3を合わせ、209。
最終的に参照される番地は209。
(1)(2)(3)、自分の解き方が正しいのかどうか自信がありません。どなたか補足、訂正などありましたら、よろしくお願いいたします。
お礼
お返事ありがとうございます。 自分でもあまり具体的な事は理解しておらず、申し訳ありません。 ただ命令実行後は (1)PCは実行前+1の値になるかどうか (2)IRは実行した命令のままなのか 次の命令の内容になるのか という事がこんがらがってしまいまして...... どのようなタイミングで次の命令に切り替わるのかどうかがわかりません。
補足
3オペランド方式で、クロックを入力するようなやつだと思います。