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

選択肢
ア:間接アドレス指定(正解)
イ:指標アドレス指定
ウ:相対アドレス指定
エ:直接アドレス指定
主記憶のデータを図のように参照するアドレス指定方式はどれか。【午前2 解説】
要点まとめ
- 結論:命令のアドレス部が示す値を番地として扱い、その番地に格納された値を実参照先とする方式は間接アドレス指定(ア)です。
- 根拠:図では命令のアドレス部「20」が主記憶の番地20を指し、その番地に格納された「25」をさらに番地として参照してデータを得る二段階参照が行われています。
- 差がつくポイント:アドレスが示すものが「データか番地か」を見分けること。命令中の値を一度メモリから取り出してから別の番地へ飛んでいるなら間接と判断します。
正解の理由
正解: ア 間接アドレス指定
図の流れは次の通りです。命令のアドレス部にある「20」を使って主記憶の番地20を参照すると,その内容は「25」になっている。得られた「25」を新たな有効アドレス(実効番地)として再度主記憶を参照し,最終的にデータを読み出している。この「アドレスが指す先がさらに番地である」二段階の参照が間接アドレス指定の定義に完全に一致します。
図の流れは次の通りです。命令のアドレス部にある「20」を使って主記憶の番地20を参照すると,その内容は「25」になっている。得られた「25」を新たな有効アドレス(実効番地)として再度主記憶を参照し,最終的にデータを読み出している。この「アドレスが指す先がさらに番地である」二段階の参照が間接アドレス指定の定義に完全に一致します。
よくある誤解
- 命令のアドレス部が直接データを指していると誤認する:図を見て「命令のアドレス部→メモリ→データ」という直接パターンと混同しやすいですが、間接は中間のセルが別の番地を保持します。
- 「指標(インデックス)アドレス」と混同する:指標アドレスはベース+オフセットやインデックスレジスタとの加算で有効アドレスを作る方式であり、二段階参照は行いません。
- 相対アドレスはPC基準のオフセットを使う:図にPCやオフセットの概念がなく,二段階の番地解決が示されている点で相対とは異なります。
解法ステップ
- 図の矢印とラベルを追い、命令のアドレス部(20)がどこを指しているか確認する。
- 番地20の内容が「25」である点を確認し、その「25」がさらに別の主記憶番地を指しているかを確かめる。
- 「アドレス→メモリ(番地を含む)→その番地に飛ぶ」という二段階の参照があるなら間接アドレス指定とする。
- 他の選択肢(指標、相対、直接)に当てはまる特徴が図に無いことを確認して確定する。
選択肢別の誤答解説
- ア 間接アドレス指定:命令のアドレス部が示す番地の内容を番地として再参照する二段階の参照を行っており,図と一致します(正解)。
- イ 指標アドレス指定:通常はベースレジスタやインデックスレジスタの値と命令中のオフセットを加算して有効アドレスを作る方式であり,図のような「メモリ内の値を番地として再参照する」動作は含みません。
- ウ 相対アドレス指定:命令カウンタ(PC)を基準にしたオフセット方式で,図にPCやオフセットの概念が示されていないため不適切です。
- エ 直接アドレス指定:命令のアドレス部がそのままデータの格納番地を示し一度の参照でデータを得る方式ですが,図ではさらにその先の番地へ参照しているため直接ではありません。
補足コラム
- 間接アドレス指定は「ポインタ参照」に相当し,高級言語の間接参照(例:C言語のポインタを間接的に辿る構造)と対応します。
- 長所:アドレスの再利用や動的データ構造の実現が容易。短所:参照が増えるため実行時間が長くなりやすい(メモリアクセスが増える)。
- 実装上は「一次間接」「二次間接」など多段の間接参照も可能ですが,図は一次間接(二段階の解決)を示しています。
FAQ
Q. 間接アドレスとポインタは同じですか?
A. 概念的には近いです。間接アドレスは命令レベルで「命令中の値→その番地に格納された値を番地として再参照」する方式で,高級言語のポインタ操作に相当します。
A. 概念的には近いです。間接アドレスは命令レベルで「命令中の値→その番地に格納された値を番地として再参照」する方式で,高級言語のポインタ操作に相当します。
Q. 図が示すのは何段階の間接ですか?
A. 命令のアドレス部→番地20の内容(25)→番地25のデータ、という二段階の解決なので「一次間接(命令アドレスを使ってメモリから番地を得る)」。実用上はこれを間接一回の参照と呼ぶことが多いです。
A. 命令のアドレス部→番地20の内容(25)→番地25のデータ、という二段階の解決なので「一次間接(命令アドレスを使ってメモリから番地を得る)」。実用上はこれを間接一回の参照と呼ぶことが多いです。
Q. 指標アドレス指定と混同したときの見分け方は?
A. 指標は加算(レジスタ+オフセット)で有効アドレスを作る。メモリを一度読んでそこからさらに番地を取得する形なら間接です。
A. 指標は加算(レジスタ+オフセット)で有効アドレスを作る。メモリを一度読んでそこからさらに番地を取得する形なら間接です。
関連キーワード: 主記憶、アドレス指定方式、間接アドレス指定、直接アドレス指定、指標アドレス指定、相対アドレス指定、間接参照、命令形式、番地、ポインタ、メモリアクセス

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

