【基本情報頻出問題】アドレス指定方式の種類と違いを理解し過去問を解いてみる!

アドレス指定方式について

今回の記事の対象となる人は

少年T(OK)
少年T
  • 基本情報技術者試験を受験予定の人
  • コンピュータの命令におけるアドレス指定の種類を理解したい人
  • こんな方に向けて記事を書いています。

    この記事のゴールは以下のような過去に出題された基本情報技術者試験の問題を解けるようになることです。

    主記憶のデータを図のように参照するアドレス指定方式はどれか。

    ア  間接アドレス指定
    イ 指標アドレス指定
    ウ 相対アドレス指定
    エ 直接アドレス指定

    基本情報技術者 H28秋期 問9
    09.gif/image-size:311×148


    過去に複数回出題されているような問題なので、受験予定の人や、コンピュータの理解を深めたい人はぜひ解けるようになっておきましょう。

    それでは最後までよろしくお願いします。

    この記事でわかること
    • アドレス指定方式とは
    • CPU・命令語などの予備知識
    • アドレス指定方式の過去問にチャレンジ

    アドレス指定方式とは?

    アドレス指定方式

    アドレス指定方式とは、CPUが命令を実行する際に、対象となるデータの場所を指定する方法のことです。

    CPUが実行する命令は「命令部」と「オペランド部」に分かれています。

    どんな命令を出すのかを表す部分が命令部、対象データが何処にあるかを示しているのがオペランド部となります。

    オペランド部に格納されているデータがどの場所を示しているかによって、アドレス指定方式の種類が分類されているので、まずはここを覚えていきましょう。

    アドレス指定方式を理解する上での予備知識

    アドレス指定予備知識

    上記の説明で、CPU?オペランド?ってなってしまった方の為に、この記事で出てくるIT用語の解説を予備知識として入れておきます。

    そんなものは分かっている!という方は読み飛ばしてください!

    CPUとは?

    CPUはコンピュータのハードウェアの部品の一つで、コンピュータ5大機能の内、演算機能制御機能の役割をになっている部分です。

    コンピュータに対して命令を出したり、計算したものを主記憶に保存したりする制御を行ったりするいわば、コンピュータの頭脳(司令塔)です。

    命令語とは?

    コンピュータに日本語で、「計算して」と伝えても、そのままでは理解できません。

    そのためコンピュータが理解できる機械語で命令しています。そしてそれを命令語と表現することがあります。

    この命令語の構成は、どんな命令なのかを示す「命令部」と、どのデータに対しての命令なのかを示す「オペランド部」の2つから構成されています。

    オペランドとは、命令するのに必要となるデータ(値)のことを表していますが、命令語はオペランドが格納されているアドレスを示している場合や、そのままそれがデータとして使われる場合など種類が分かれています。

    例えば、加算処理の「 1 + 2 」を実行する際は、「 + 」「足してくれ!」という命令以外に、1 や 2 といった値も必要になります。

    「 + 」の部分を命令部、「 1 」や「 2 」のことをオペランド部と呼びます。

    そして命令語は、データであるオペランドが格納されている場所を示すアドレスと命令の2つから構成されているため、命令語は 「命令部」と「アドレス部」から成り立つとも言えます。

    この命令語の構成方法によって、その命令語がどのアドレス指定方式なのかっていう分類をされます。

    実効アドレス

    コンピュータに出す命令の種類によっては、主記憶装置に格納されている特定のデータを参照する事があります。

    参照するデータが格納されている場所を示すアドレスの事を「実効アドレス」と呼びます。

    アドレス指定方式の種類を覚えよう!

    アドレス指定方式には次の6種類があります。

    • 直接アドレス指定 ➾ アドレス部の値をそのまま有効アドレスとする。
    • 間接アドレス指定 ➾ アドレス部の値で主記憶上のアドレスを指定し、そのアドレスに格納されている値を有効アドレスとする。
    • 指標アドレス指定 ➾ アドレス部の値にインデックスレジスタの値を加えたものを有効アドレスとする。
    • 基底アドレス指定 ➾ アドレス部の値にベースレジスタの値を加えたものを有効アドレスとする。
    • 相対アドレス指定 ➾ アドレス部の値にプログラムカウンタの値を加えたものを有効アドレスとする。
    • 即値アドレス指定 ➾ アドレス部の値を有効アドレスではなく、そのまま演算対象データとする。

    直接アドレス指定方式

    直接アドレス指定方式は、オペランド部に実効アドレスが格納されている方式です。

    直接アドレス指定

    間接アドレス指定方式

    間接アドレス指定方式は、オペランド部に記載してあるアドレスが、対象となるデータが入っている箇所を示している方式です。

    間接アドレス指定

    指標アドレス指定方式

    指標アドレス指定方式はインデックスアドレス指定方式とも呼ばれ、オペランド部の値に、指標(インデックス)レジスタの値を加算すると実効アドレスを求めることができる方式です。

    指標アドレス指定の命令語では、オペランド部に、基準となるアドレスと、指標レジスタの場所を示すアドレスの二つの値が入っています。

    インデックスレジスタに入っている値を変えることで参照するデータを変えることができるため、連続したデータ参照を行う際に用いられます。

    指標アドレス指定

    基底アドレス(ベースアドレス)指定方式

    基底アドレス指定方式は、ベースアドレス指定方式とも呼ばれ、命令後のアドレスに基底レジスタの内容を加えたものが実効アドレスになる方式です。

    基底レジスタとはプログラムが主記憶装置に読み込まれたときの先頭のアドレスのことです。

    先頭アドレスから数えて、オペランド部の値分加算された値のアドレスに格納されている値を参照する方式とでも言っておきましょう。

    基底アドレス指定

    相対アドレス指定方式

    相対アドレス指定方式は、オペランド部の値にプログラムカウンタの値を加算した値が実効アドレスとなる方式です。

    プログラムカウンタとは、次に実行すべき命令が入っているアドレスを記憶するレジスタのことです。

    オペランド部に50という値が入っていて、プログラムカウンタには150の値が入っているとすると、実効アドレスは50+150で200となり、主記憶装置のアドレス200番地に入っている値を参照する。といった流れ担っている方式が相対アドレス方式です。

    相対アドレス指定

    即値アドレス指定方式

    即値アドレス指定方式は、オペランド部に対象となるデータそのものが入っている方式。

    今まで説明したアドレス指定は、オペランド部に入っているのはあくまでも場所を表すアドレスだったり、アドレスのヒントだったりしたのですが、即値アドレス指定方式に関しては、アドレスとかではなく参照する値そのものが入っています。

    即値アドレス指定

    過去問題にチャレンジ

    過去問にチャレンジ

    主記憶のデータを図のように参照するアドレス指定方式はどれか。

    ア  間接アドレス指定
    イ 指標アドレス指定
    ウ 相対アドレス指定
    エ 直接アドレス指定

    基本情報技術者 H28秋期 問9
    09.gif/image-size:311×148

    このような問題が出題された場合

    スタートはオペランド部に当たるアドレス部です。

    図を見るとアドレス部に20が入っていて、その次に主記憶装置のアドレス20に入っている値25から、さらに25のアドレスに入っているデータを参照しています。

    つまり、オペランド部(アドレス部)に入っている値20は、参照するデータが入っているアドレスが入っている場所を示しているので、間接アドレス指定が答えです。

    よって答えはアです。

    イは、そもそも指標アドレスがアドレス部に記載されていないので、×

    ウは、プログラムカウンタが図に載っていないので×

    エは、主記憶装置の住所20番地に入っている25をデータとして使っていないので×

    みたいな感じで、解いていきます。

    まとめ

    今回は基本情報技術者試験の対策として「アドレス指定」について解説していきました。

    過去問を何回か解いていくとより理解が深まると思います。

    図を見てどの方式か答える問題に関しては、以下の手順で考えましょう。

    1. アドレス部(オペランド部)に入っている値がそのままデータとして使われているなら即値アドレス指定
    2. アドレス部に値が2つ入っている ➾ 指標アドレス指定
    3. 基底レジスタ(ベースレジスタ)がある ➾ 基底アドレス指定
    4. プログラムレジスタがある ➾ 相対アドレス指定
    5. アドレス部に入っている値に参照したいデータ ➾ 直接アドレス指定
    6. アドレス部に入っている値が参照したいデータのアドレス ➾ 間接アドレス指定

    図をみて、どのアドレス指定方式かを答える問題ならこれで大丈夫です。

    その他特徴をただ答えるような問題であれば、指標、基底、相対の3つの特徴を覚えておけば答えられます。

    基本情報技術者試験合格目指して引き続き頑張りましょう!

    まとめ
    • アドレス指定方式は命令語のアドレス部の示し方
    • 覚えるべきアドレス指定は6つだけ
      • 直接アドレス指定 ➾ アドレス部の値が参照したいデータの番地
      • 間接アドレス指定 ➾ アドレス部の値に飛んで、参照したいデータが入っている番地を知る
      • 指標アドレス指定 ➾ アドレス部に2つ値が入っている
      • 基底アドレス指定 ➾ 基底レジスタ(ベースレジスタ)がついてくる
      • 相対アドレス指定 ➾ プログラムカウンタとセット
      • 即値アドレス指定 ➾ 参照しない、アドレス部 = 処理データ

    -基本情報技術者試験
    -,