基本情報技術者 2015年 春期 午前(科目A) 問09
問題文
主記憶のデータを図のように参照するアドレス指定方式はどれか。

選択肢
ア:間接アドレス指定(正解)
イ:指標アドレス指定
ウ:相対アドレス指定
エ:直接アドレス指定
🔒 解説は解答すると表示されます
間接アドレス指定【午前解説】
正解の理由
正解は ア(間接アドレス指定)です。図では命令のアドレス部にある数値20が主記憶の20番地を指しており、その20番地の内容(25)が「アドレス」として扱われ、さらにその25番地のセルに格納された「データ」を参照しています。命令が示すアドレスを一度参照して得た値を「実際の参照先アドレス」として使う二段階の参照が、間接アドレス指定の定義に一致します。
解法ステップ
- 命令のアドレス部(図の左側アドレス部の数値)を特定する(ここでは20)。
- そのアドレスが主記憶中のどのセルを指しているかを確認する(20番地のセル)。
- そのセルの内容が「データ」か「別のアドレス」かを判定する(ここでは25という別のアドレス)。
- 命令からの参照が一段でデータを取りに行くか、二段以上の参照になっているかで方式を決定する(図は二段参照=間接)。
- 選択肢と定義を照らして最も一致するものを選ぶ(間接アドレス指定)。
選択肢別の誤答解説
- ア: ア(間接アドレス指定) — 正解。命令のアドレス部が指すセルの内容を実アドレスとして用いる二段参照が典型的な間接指定です。
- イ: 指標アドレス指定 — 誤り。指標指定は命令のアドレスとレジスタ(指標レジスタ)の値を加算して実アドレスを作る方式で、図のようにメモリ内セルが次のアドレスを示す構造とは異なります。
- ウ: 相対アドレス指定 — 誤り。相対指定は通常プログラムカウンタ(PC)基準でオフセットを足してアドレスを得る方式で、図にはPC基準のオフセットや位置依存の示唆がありません。
- エ: 直接アドレス指定 — 誤り。直接指定なら命令のアドレス部(20)が直接データを格納するセルを指すはずだが、図では20番地の内容が更に別のアドレス(25)を示しているため不適合です。
よくある誤解
- 命令のアドレス部(20)を見て「直接アドレス指定だ」と誤認するケース:20番地のセルに数値25が格納されている点を見落としがちです。
- 指標(インデックス)アドレス指定と混同するケース:指標指定ではレジスタの値を足し算して実アドレスを作るため、図のようにメモリ内のセルが参照先を示す構造とは異なります。
補足コラム
間接アドレス指定はポインタを使う高水準言語の動作に似ています。C言語で言えば、命令のアドレス部が「ポインタ変数」のアドレスを指し、そのポインタが指す先を参照して実データを得るイメージです。命令読み出し時にメモリ参照が二回必要になるため、直接指定に比べてオーバーヘッドが増しますが、柔軟に間接参照を実現できる利点があります。
擬似コード(概念示例):
addr_field = 20 // 命令のアドレス部
pointer = MEM[addr_field] // MEM[20] が 25 を返す
data = MEM[pointer] // MEM[25] が実データ
FAQ
Q1: 図の矢印が二本あるのはなぜですか?
A1: 一本目は命令のアドレス部から最初のメモリ参照(ポインタ取得)、二本目はそのポインタから実データへの参照を示しており、間接参照の流れを表します。
A1: 一本目は命令のアドレス部から最初のメモリ参照(ポインタ取得)、二本目はそのポインタから実データへの参照を示しており、間接参照の流れを表します。
Q2: 間接アドレス指定ではメモリ参照は何回必要ですか?
A2: 最低でも二回です。まずポインタを読み取り、次にそのポインタが指す場所のデータを読みます。
A2: 最低でも二回です。まずポインタを読み取り、次にそのポインタが指す場所のデータを読みます。
Q3: 多段の間接参照(ポインタのポインタ)は試験で出ることがありますか?
A3: はい。多段(二重間接、三重間接)の概念は出題されることがあり、矢印がさらに続く図や説明に注意してください。
A3: はい。多段(二重間接、三重間接)の概念は出題されることがあり、矢印がさらに続く図や説明に注意してください。
関連キーワード: 間接参照、間接アドレス指定、アドレス指定方式、主記憶、ポインタ、命令形式, デリファレンス, メモリ参照, 指標指定, 相対指定

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

