“LOAD GR, B, AD”は,ADが示す番地にベースレジスタBの内容を加えた値を有効アドレスとして,その有効アドレスが示す主記憶に格納されているデータを汎用レジスタGRにロードする命令である。
図の状態で,次の命令を実行したとき,汎用レジスタGRにロードされるデータはどれか。
LOAD GR, 1, 200
ベースレジスタ1:100
/番地|主記憶/100|1100/101|1101/…|…/200|1200/201|1201/…|…/300|1300/301|1301/…|…/1200|2200/1201|2201/…|…/1300|2300/1301|2301
正答2
解説
正解は2です。
この問題は、ベースレジスタ修飾による有効アドレスの計算を問うています。
命令の説明では、ADの番地にベースレジスタBの内容を加えた値が有効アドレスになります。
その有効アドレスの主記憶にあるデータが、汎用レジスタGRにロードされます。
【計算】
命令LOAD GR, 1, 200では、ADは200、ベースレジスタは1番です。
ベースレジスタ1の内容は100です。
有効アドレスは200+100=300番地です。
300番地の主記憶の内容は1300なので、GRには1300がロードされます。
【選択肢別解説】
1:× 1201は201番地の内容であり、有効アドレス300とは関係がありません。
2:○ 有効アドレス300番地の内容1300が、GRにロードされます。
3:× 2200は1200番地の内容です。
200番地の内容1200をさらに番地とみなす間接アドレス指定の考え方であり、この命令の説明と異なります。
4:× 2300は1300番地の内容です。
有効アドレス300の内容をさらに番地として参照しており、命令の説明にない間接参照をしています。
【ポイント】
アドレス指定方式の問題では、「どの値を番地とみなし、何回参照するか」を正確に読むことが重要です。
ベースレジスタ修飾は、ベースレジスタの値とアドレス部の値を加算した番地を1回だけ参照します。