基本情報技術者 2011年 春期 午前(科目A) 問10
問題文
“LOAD GR,B,AD”は、ADが示す番地にベースレジスタBの内容を加えた値を有効アドレスとして、その有効アドレスが示す主記憶に格納されているデータを汎用レジスタGRにロードする命令である。図の状態で、次の命令を実行したとき、汎用レジスタGRにロードされるデータはどれか。
LOAD GR, 1,200

選択肢
ア:1201
イ:1300(正解)
ウ:2200
エ:2300
🔒 解説は解答すると表示されます
ベース相対アドレッシング【午前解説】
正解の理由
命令は「LOAD GR,1,200」で、オペランドの「1」はベースレジスタ1を示します。問題図でベースレジスタ1の値は100です。命令のAD(変位)は200なので、有効アドレス(EA)はベース値と変位の和で求まります。すなわち
となり、有効アドレス300が指す主記憶の内容を汎用レジスタGRにロードします。図の主記憶で番地300に格納されているデータは1300です。以上より、イ(1300)が正解です。
解法ステップ
- ベースレジスタ番号を確認する(ここでは1)。
- 図からベースレジスタ1の値を読み取る(100)。
- 命令のAD(200)をベース値に加算して有効アドレスを求める。
- 有効アドレス300が示す主記憶の内容を読み出す(図で300の内容は1300)。
- 読み出した値(1300)を汎用レジスタGRに格納する。
この手順を順番に行えば、迷うことなく正しいデータを得られます。
選択肢別の誤答解説
-
ア: 1201
1201は図で番地201に格納されているデータです。EAは300であり、番地201とは無関係です(1201は番地201の内容であって、EA=300ではありません)。したがって誤りです。 -
イ: 1300
図の番地300に格納されているデータが1300であり、EAの計算結果と一致します。したがって正しい選択です。 -
ウ: 2200
2200は図で番地1200に格納されているデータです。ADやベース値を誤って解釈して番地1200を求めてしまう混同(例えば「200をそのまま先頭に付ける」など)は誤りであり、本問では関係ありません。 -
エ: 2300
2300は図で番地1300に格納されているデータです。EAは300であり、1300とは異なります。1300と300の取り違え(桁の読み違い)に注意してください。
よくある誤解
-
ベース値と主記憶の「値」を混同する
ベースレジスタの値(ここでは100)はアドレス計算に使う数であり、主記憶のセルに書かれている「データ」(例:1100、1300など)とは別物です。混同すると誤答につながります。 -
番地そのものとその番地に格納されたデータを取り違える
「番地300にあるデータは1300」のように、番地とデータを明確に区別して扱ってください。EAは番地であり、ロードされるのはその番地にあるデータです。
補足コラム
ベース相対(ベース+変位)方式は、プログラムの位置独立性やセグメント管理に便利なアドレッシング方式です。命令内に小さな変位(AD)を持ち、実行時にベースレジスタの値を加えることで実際のメモリ番地(EA)を決定します。一般的に計算は次のように表せます:
この仕組みは、配列や構造体のアクセス、プロセスごとのアドレス空間管理で広く使われます。
簡単なシミュレーション(イメージ):
base1 = 100
AD = 200
EA = base1 + AD # 300
memory = {300: 1300, 301:1301, 200:1200, 201:1201}
GR = memory[EA] # 1300 をロード
FAQ
Q1: ベースレジスタが0だったらどうなる?
A1: 同様にとなり、変位(AD)がそのまま実アドレスになります。ベースが0のときは単純な直接アドレス指定と同等です。
A1: 同様にとなり、変位(AD)がそのまま実アドレスになります。ベースが0のときは単純な直接アドレス指定と同等です。
Q2: ADが負(符号付)または大きすぎる場合は?
A2: 命令セットとアーキテクチャによりADのビット幅や符号扱いが決まります。符号付きであれば負の変位による逆方向アクセスも可能です。オーバーフローやアドレス範囲外アクセスは例外(割り込み)やエラーとなることがあります。
A2: 命令セットとアーキテクチャによりADのビット幅や符号扱いが決まります。符号付きであれば負の変位による逆方向アクセスも可能です。オーバーフローやアドレス範囲外アクセスは例外(割り込み)やエラーとなることがあります。
Q3: アドレス単位はバイトですかワードですか?
A3: 問題文やアーキテクチャの規定に依存します。本問では番地と対応するデータが1つずつ対応している図示なので、番地単位でセルを指定しています。実試験では問題文の前提(バイト番地/ワード番地)を確認してください。
A3: 問題文やアーキテクチャの規定に依存します。本問では番地と対応するデータが1つずつ対応している図示なので、番地単位でセルを指定しています。実試験では問題文の前提(バイト番地/ワード番地)を確認してください。
関連キーワード: ベースレジスタ, 有効アドレス, 相対アドレス, 主記憶, LOAD命令

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

