はじめに
コンピューターが命令を実行するとき、必ず実行するためのデータがあります。
例えば、「A君へのメールを送信する」だったら、「A君のメール」が必要ですね。
このデータは、主記憶という記憶装置の中のどこかにあるんです。
今回は、アドレス(住所)を使って、そのデータを探す方式について学んでいきましょう!
ちなみに、コンピューターが命令を処理する全体の流れはこちらで解説してますので、是非合わせてご覧ください!
アドレス指定方式の種類
コンピューターのアドレスを指定する方式は、以下の6つです。
これから、1つずつ解説していきますね。
イメージで覚える!
私は、人の住所と同じように覚えました。
ですので、その例えを用いながら解説していきますね。
①即値アドレス指定方式
先ほども書いたとおり、データは基本的に主記憶にあります。
そして、命令のアドレス部にはそのデータがある、主記憶の中の住所が入っています。
しかし、即値アドレス指定方式は、命令のアドレス部にすでに目的のデータが入っているものです。
例えば、「3を加える」という命令を考えてみてください。下の図のようになります。
命令部は、命令の動詞の部分、アドレス部は、命令の目的語の部分でしたね。
この時、アドレス部の「3」というのは、そのまま使って計算することができます。
つまり、わざわざ主記憶から何かデータを取ってくる必要がないのです。
このように、使うデータがすでにアドレス部に入っているものを、即値アドレス指定方式と言います。
②直接アドレス指定方式
直接アドレス指定方式は、アドレス部に入っている住所に目的となるデータがあることです。
分かりやすいように、人間に例えてみましょう。
例えば、「A君に会う」という命令だったとします。
この場合、アドレス部に入っている住所に行ったらA君がいます。
「A君に会うためにA君の自宅の住所に行く」というイメージです。
このように、命令のアドレス部に対象となるデータの住所が入っているのが
直接アドレス指定方式です。
③間接アドレス指定方式
間接アドレス指定方式は、アドレス部の住所に行くと、そこでさらに別の住所を示されます。
そして新たに示された住所に行って初めて、A君に会えるということです。
まあ一言でいうと「二度手間」です(笑)
イメージでいうと、A君の家の住所に行ったらお母さんに「Aは今××公園にいるよ」と言われるようなものです。
そして××公園に行って初めてA君に会えるということですね。
う~ん、めんどくさい(笑)
④~⑥ 相対、指標、基底アドレス指定方式
④~⑥は、似ているのでまとめて解説します。
相対アドレス指定方式、指標アドレス指定方式、基底アドレス指定方式はすべて、住所を2人で分けて持っているという方式です。
イメージでいうと、片方が「○○県○○市」、もう片方が「○○村 ○-○-○」を持っている感じです。
つまり、住所を知りたければ2つの場所を見なければいけないんですね。
う~ん、これもまためんどくさい(笑)
そして、相対アドレス指定方式、指標アドレス指定方式、基底アドレス指定方式と名前が違うのは、それぞれ参照する箇所が違うからです。
相対アドレス指定方式はアドレス部と命令アドレスレジスタを、
指標アドレス指定方式はアドレス部と指標レジスタを、
基底アドレス指定方式はアドレス部と規定レジスタを参照しています。
また、実際は、こんなに単純につなぎ合わせるわけではなく、もうちょっと複雑に足し合わせています。
何故こんなにもめんどくさいことをしているかというと、セキュリティ対策です。
ほら、お宝を隠した場所を誰かに教えるとき、できるだけ他の人には、その場所を知られたくないでしょう?
そんな感じです。
いかがだったでしょうか?
ちょっとめんどくさいですが、こうやっていろいろな方法でセキュリティを守りながらデータを持ってきてくれてるんですね。
そのまま覚えたり、人間の住所で覚えてみたり、自分に合ったもので覚えてくださいね!
練習問題
問題1
次の図のようなデータのとり方をするのは何方式でしょうか?
(平成28年度秋試験より)
答、間接アドレス指定方式 一度20に行って、新たな25の住所を示されているので、二度手間な間接指定方式です。
問題2
命令アドレスレジスタ(プログラムカウンタともいう)と、アドレス部からデータを取ってくるのは何方式でしょうか?
答、相対アドレス指定方式 2か所から取ってくる方式の内、命令アドレスレジスタから持ってくるのは相対アドレス指定方式です。