本文へ移動

基本情報技術者試験 · 学習ガイド

2011年度 特別試験 午後の問題・解答解説

旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。

2011年度 特別試験 午後の概要
30:00

問題番号から選ぶ

機械語命令のアドレス指定と実行トレース

ハードウェア · 機械語命令 / 実効アドレス / 指標レジスタ修飾 / 間接アドレス指定

1語が16ビットのCPUにおいて、1語命令と2語命令からなる機械語の仕様が与えられている。命令語のフォーマットは、命令コードop(8ビット)、レジスタr1(2ビット)、r2または指標レジスタX(2ビット)、未使用領域(2ビット)、語長フラグD(1ビット:1なら1語命令、0なら2語命令)、間接指定フラグI(1ビット:1なら間接指定、0なら直接指定)で構成される。2語命令の場合は2語目に番地adr(16ビット)が続く。実効アドレスの算出方法は、(D, I)が(0, 0)のとき「adr + [X]」、(0, 1)のとき「[adr + [X]]」、(1, 1)のとき「[r2]」、ソースレジスタ指定は(1, 0)のとき「r2」である([ ]はそのレジスタまたは番地に格納された内容を表す)。この仕様に基づいて、プログラム実行後の各レジスタの値(設問1 a, b, c)を求め、さらにレジスタ1に100を設定する命令語として誤っているもの(設問2)を選べ。

ア
設問2: op=20h, r1=1, r2/X=2, D=0, I=1, adr=0000h(実効アドレス[0+[GR2]]の内容を設定)
イ
設問2: op=20h, r1=1, r2/X=2, D=1, I=0(ソースレジスタGR2の内容を設定)
ウ
設問2: op=20h, r1=1, r2/X=3, D=0, I=0, adr=0000h(実効アドレス0+[GR3]の内容を設定)
エ
設問2: op=20h, r1=1, r2/X=3, D=0, I=1, adr=0000h(実効アドレス[0+[GR3]]の内容を設定)
オ
設問2: op=20h, r1=1, r2/X=3, D=1, I=1(実効アドレス[GR3]の内容を設定)
解答・解説を表示

解答

設問1: a: ア, b: エ, c: オ; 設問2: エ

解説

まず要点:命令の中のフラグ(DとI)の組み合わせで、アドレスの決め方が変わる。この2つは、直接アドレス指定・間接アドレス指定・レジスタ直接指定を切り替えるスイッチのようなものだ。[ ]は「その中身を取り出す」という意味で、参照の段数を1つずつ順にたどって目的のアドレスと値を見つける。

解き方

  1. 16進数の命令語を2進数に直し、opやr1、r2/X、D、Iの各フィールドの値を正確に取り出す。
  2. 表2と表3の規則に従って実効アドレスやソースレジスタを決め、レジスタと主記憶の値の移り変わりを1歩ずつ追う。
  3. 設問2の各選択肢について、与えられた初期値(GR2=100、GR3=101、[100]=101、[101]=100)を当てはめてGR1の最終的な値を求める。

小問ごとの答え

小問 設問1 a:ア
命令語1(2042h:D=1, I=0, r1=1, r2=0)によりGR0の内容100がGR1に代入されます。命令語2(10D2h:D=1, I=0, r1=3, r2=1)はGR1の内容をGR3に加算する命令であり、GR1自身の値は100のまま変化しません。
小問 設問1 b:エ
命令語3でGR2の内容300が番地100(adr:0 + [GR1]:100)に格納され、命令語4で番地100の内容300がGR0に加算されてGR0=400となります。命令語5(2042h)でGR0の内容400がGR1に代入されるため、GR1の値は400となります。
小問 設問1 c:オ
命令語2でGR3の初期値400にGR1の値100が足し込まれて500になり、その後の命令語3〜5ではGR3を対象とする変更処理は行われないため、GR3の内容は500を維持します。
小問 設問2:エ
D=0, I=1より実効アドレスは[adr + [X]] = [0 + [GR3]] = [101番地] = 100番地となり、この100番地に格納されている内容101がGR1に設定されるため、目的の100にはならず誤りです。

覚えるポイント

  • 間接アドレス指定では「指定された番地に格納されている値」が次のアドレスとして使われます。
  • 指標レジスタ修飾は基準アドレスにレジスタ値を加算してアドレスを動的に決定します。

間違えやすいところ

  • 間接アドレス指定(I=1)のとき、メモリを見る回数を1回少なく数えて、直接アドレスの中身を取ってしまう間違いが多い。
  • 16進数の命令語を2進数に直すとき、2ビットの未使用領域を飛ばし忘れて位取りがずれる間違いに注意する。

出題の前提:平成23年度特別 基本情報技術者試験 午後問題 問1

出典:IPA『2011年度 特別試験 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp)

2011年度 特別試験 午後

参照した公式資料

IPAが公開した2011年度 特別試験 午後の問題・解答資料です。