【基本情報頻出問題】アドレス指定方式の種類と違いを理解し過去問を解いてみる!
この記事で解決できる内容
※タップすると該当箇所までジャンプできます。
アドレス指定方式とは、機械に命令を出すときに、対象となるデータの場所をどう指定するか。その方式のことです。
大きく6つのアドレス指定方式があり、それぞれがどんな風にデータの場所を指定しているのかなかなか覚えられない人も多いですよね。そこで今回は、アドレス指定方式とは何か?というところから、6つの種類の覚え方までわかりやすく解説します。
この記事を読んでいただくと、過去に基本情報技術者試験で出題された以下のような問題が解けるようになります。
主記憶のデータを図のように参照するアドレス指定方式はどれか。
ア 間接アドレス指定
基本情報技術者 H28秋期 問9
イ 指標アドレス指定
ウ 相対アドレス指定
エ 直接アドレス指定
アドレス指定方式とは?
アドレス指定方式とは、CPUが命令を実行する際に、対象となるデータの場所を指定する方法のことです。
CPUが実行する命令は「命令部」と「オペランド部」に分かれています。
どんな命令を出すのかを表す部分が命令部、対象データが何処にあるかを示しているのがオペランド部となります。
オペランド部に格納されているデータがどの場所を示しているかによって、アドレス指定方式の種類が分類されているので、まずはここを覚えていきましょう。
アドレス指定方式を理解する上での予備知識
上記の説明で、CPU?オペランド?ってなってしまった方の為に、この記事で出てくるIT用語の解説を予備知識として入れておきます。
そんなものは分かっている!という方は読み飛ばしてください!
CPUとは?
CPUはコンピュータのハードウェアの部品の一つで、コンピュータ5大機能の内、演算機能と制御機能の役割をになっている部分です。
コンピュータに対して命令を出したり、計算したものを主記憶に保存したりする制御を行ったりするいわば、コンピュータの頭脳(司令塔)です。
命令語とは?
コンピュータに機械語で命令するときの言語を命令後と呼びます。
コンピュータに日本語で、「計算して」と伝えても、そのままでは理解できません。コンピュータが理解できる機械語で命令する必要があります。
この命令語の構成は、どんな命令なのかを示す「命令部」と、どのデータに対しての命令なのかを示す「オペランド部」の2つから構成されています。
命令後は命令部とオペラント部に分かれる!
オペランドとは、命令するのに必要となるデータ(値)のことを表していますが、命令語はオペランドが格納されているアドレスを示している場合や、そのままそれがデータとして使われる場合など種類が分かれています。
例えば、加算処理の「 1 + 2 」を実行する際は、「 + 」「足してくれ!」という命令以外に、1 や 2 といった値も必要になります。
「 + 」の部分を命令部、「 1 」や「 2 」のことをオペランド部と呼びます。
そして命令語は、データであるオペランドが格納されている場所を示すアドレスと命令の2つから構成されているため、命令語は 「命令部」と「アドレス部」から成り立つとも言えます。
この命令語の構成方法によって、その命令語がどのアドレス指定方式なのかっていう分類をされます。
実効アドレス
コンピュータに出す命令の種類によっては、主記憶装置に格納されている特定のデータを参照する事があります。
参照するデータが格納されている場所を示すアドレスの事を「実効アドレス」と呼びます。
[st-kaiwa1]アドレス指定方式の種類を覚えるにあたって、「CPU」「命令語」「実効アドレス」の3つは理解しておく必要があります!!
アドレス指定方式の種類を覚えよう!
アドレス指定方式には次の6種類があります。
- 直接アドレス指定 ➾ アドレス部の値をそのまま実効アドレスとする。
- 間接アドレス指定 ➾ アドレス部の値で主記憶上のアドレスを指定し、そのアドレスに格納されている値を実効アドレスとする。
- 指標アドレス指定 ➾ アドレス部の値にインデックスレジスタの値を加えたものを実効アドレスとする。
- 基底アドレス指定 ➾ アドレス部の値にベースレジスタの値を加えたものを実効アドレスとする。
- 相対アドレス指定 ➾ アドレス部の値にプログラムカウンタの値を加えたものを実効アドレスとする。
- 即値アドレス指定 ➾ アドレス部の値を実効アドレスではなく、そのまま演算対象データとする。
直接アドレス指定方式
直接アドレス指定方式は、オペランド部に実効アドレスが格納されている方式です。
間接アドレス指定方式
間接アドレス指定方式は、オペランド部に記載してあるアドレスが、対象となるデータが入っている箇所を示している方式です。
指標アドレス指定方式
指標アドレス指定方式はインデックスアドレス指定方式とも呼ばれ、オペランド部の値に、指標(インデックス)レジスタの値を加算すると実効アドレスを求めることができる方式です。
指標アドレス指定の命令語では、オペランド部に、基準となるアドレスと、指標レジスタの場所を示すアドレスの二つの値が入っています。
インデックスレジスタに入っている値を変えることで参照するデータを変えることができるため、連続したデータ参照を行う際に用いられます。
基底アドレス(ベースアドレス)指定方式
基底アドレス指定方式は、ベースアドレス指定方式とも呼ばれ、命令後のアドレスに基底レジスタの内容を加えたものが実効アドレスになる方式です。
基底レジスタとはプログラムが主記憶装置に読み込まれたときの先頭のアドレスのことです。
先頭アドレスから数えて、オペランド部の値分加算された値のアドレスに格納されている値を参照する方式とでも言っておきましょう。
相対アドレス指定方式
相対アドレス指定方式は、オペランド部の値にプログラムカウンタの値を加算した値が実効アドレスとなる方式です。
プログラムカウンタとは、次に実行すべき命令が入っているアドレスを記憶するレジスタのことです。
オペランド部に50という値が入っていて、プログラムカウンタには150の値が入っているとすると、実効アドレスは50+150で200となり、主記憶装置のアドレス200番地に入っている値を参照する。といった流れ担っている方式が相対アドレス方式です。
即値アドレス指定方式
即値アドレス指定方式は、オペランド部に対象となるデータそのものが入っている方式。
今まで説明したアドレス指定は、オペランド部に入っているのはあくまでも場所を表すアドレスだったり、アドレスのヒントだったりしたのですが、即値アドレス指定方式に関しては、アドレスとかではなく参照する値そのものが入っています。
アドレス指定方式の覚え方!
アドレス指定方式の方式の覚え方のコツは以下の手順を覚えることです。
- アドレス部(オペランド部)に入っている値がそのままデータとして使われているなら即値アドレス指定
- アドレス部に値が2つ入っている ➾ 指標アドレス指定
- 基底レジスタ(ベースレジスタ)がある ➾ 基底アドレス指定
- プログラムレジスタがある ➾ 相対アドレス指定
- アドレス部に入っている値に参照したいデータ ➾ 直接アドレス指定
- アドレス部に入っている値が参照したいデータのアドレス ➾ 間接アドレス指定
基本情報技術者試験では、大体図を見てどのアドレス指定方式かを問われるので、上の手順を覚えていると楽ちんです!
過去問題にチャレンジ
主記憶のデータを図のように参照するアドレス指定方式はどれか。
ア 間接アドレス指定
基本情報技術者 H28秋期 問9
イ 指標アドレス指定
ウ 相対アドレス指定
エ 直接アドレス指定
このような問題が出題された場合
スタートはオペランド部に当たるアドレス部です。
図を見るとアドレス部に20が入っていて、その次に主記憶装置のアドレス20に入っている値25から、さらに25のアドレスに入っているデータを参照しています。
つまり、オペランド部(アドレス部)に入っている値20は、参照するデータが入っているアドレスが入っている場所を示しているので、間接アドレス指定が答えです。
よって答えはアです。
イは、そもそも指標アドレスがアドレス部に記載されていないので、×
ウは、プログラムカウンタが図に載っていないので×
エは、主記憶装置の住所20番地に入っている25をデータとして使っていないので×
みたいな感じで、解いていきます。
まとめ
今回は基本情報技術者試験の対策として「アドレス指定」について解説していきました。
過去問を何回か解いていくとより理解が深まると思います。
図を見てどの方式か答える問題に関しては、以下の手順で考えましょう。
- アドレス部(オペランド部)に入っている値がそのままデータとして使われているなら即値アドレス指定
- アドレス部に値が2つ入っている ➾ 指標アドレス指定
- 基底レジスタ(ベースレジスタ)がある ➾ 基底アドレス指定
- プログラムレジスタがある ➾ 相対アドレス指定
- アドレス部に入っている値に参照したいデータ ➾ 直接アドレス指定
- アドレス部に入っている値が参照したいデータのアドレス ➾ 間接アドレス指定
図をみて、どのアドレス指定方式かを答える問題ならこれで大丈夫です。
その他特徴をただ答えるような問題であれば、指標、基底、相対の3つの特徴を覚えておけば答えられます。
基本情報技術者試験合格目指して引き続き頑張りましょう!
]]>