基本情報23年特別 午後 問1 設問2
【問題を解く前に】
ここの問題は結局、実効アドレスの問題だとわかると思います。
この、実効アドレスの計算の仕方の違いは、フラグDとIで指定されます。
そこで、この計算方法とDとIの関係をまとめておきます。
●方法1 実効アドレスを使わない=ソースレジスタを使う方式
D=1、I=0のときで、表3に書かれているとおり、レジスタの内容を使います。
選択肢イのケースで、イは、
R2で指定されたレジスタ(=レジスタ2)の内容(=100)がR1にセットされます
●方法2 実効アドレスを使うが、指標レジスタ修飾はしない
D=1、I=1の場合にあたります。表2の3番目のケースです。
これは選択肢オのケースで、オは
実効アドレス=R2で指定されたレジスタ(=レジスタ3)の内容(=101)
R1の値は、実効アドレス(=101番地)に格納されている内容(=100)なので
R1には、100がセットされます
●方法3 指標レジスタ修飾、間接アドレスは使わない
D=0(指標レジスタを使うには2語命令にしないとできない) I=0のケース
これは選択肢ウのケースで、ウは
実効アドレス=adrの内容(=0)+X(=レジスタ3)で指定された内容(=101)
=101番地
R1の値は、実効アドレス(=101番地)に格納されている内容(=100)なので
R1には、100がセットされます
●方法4 指標レジスタ修飾、間接アドレス
D=0(指標レジスタを使うには2語命令にしないとできない) I=1のケース
これは選択肢ア、エのケースで、アは
実効アドレス=(adrの内容(=0)+X(=レジスタ2)で指定された内容(=100))の内容
=(100番地)の内容=101
R1の値は、実効アドレス(=101番地)に格納されている内容(=100)なので
R1には、100がセットされます
【解き方】
いままで、計算してきて、すべて100になりました。ということは、正解は、残りのエ?
エは、
実効アドレス=(adrの内容(=0)+X(=レジスタ3)で指定された内容(=101))の内容
=(101番地)の内容=100
R1の値は、実効アドレス(=100番地)に格納されている内容(=101)なので
R1には、101がセットされてしまいます
【答え】
エ
【解き終わって】
●もっと短時間で答えに到達したい場合。
この問題は「誤りを探す」なので、仲間はずれは1個だけのはずです。
そしてこの問題の違いは、DとIだけです。
そして、アとエは、レジスタが違う、他は実効アドレスの求め方が違います。
設問2の組み合わせをみると、レジスタが違えば、答えが違いそうです。
だから、アかエがあやしいと、絞り込めます(たまに、こういうやりかたは外れるけど)
●まったく問題がわからず、あてずっぽうで正解に行きたい場合
で、アかエに絞られたとしたら、ウは正解なわけです。
ここで、エを正解にしてしまうと、同じアドレスを見て、違うアクセス方法なのに、同じ結果?
これって、結構怪しくない?
ということで、エが怪しいと気づきます。
この方法は、やたらめったら使うべきではないです。
(正解に行き着かないことも多い)
ただ、まったく思いつかないときには有効です。
(誤りが1個だけのときには・・・)