平成23年特別午後問1(設問2)

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
どはまりさん  
(No.1)
https://www.fe-siken.com/kakomon/23_toku/pm01.html

答えは「ア」だと思ったのですが、正解は「エ」でした。

ウとオは実行アドアレスの内容をそのまま返すのに、
どうしてアとエは【 】の部分まで展開した結果を返すのか、解説を読んでも理解できませんでした。
教えてください。

*** 以下解説より抜粋 ***                                                                              
ア:  X=2、adr=0なので、実効アドレスは [0+[レジスタ番号2]]=[0+100]=[100]【=101】
      r1にセットされるのは、主記憶101番地の内容"100"になります。

エ:X=3、adr=0なので、実効アドレスは [0+[レジスタ番号3]]=[0+101]=[101]【=100】
    r1にセットされるのは、主記憶100番地の内容"101"になるため、これが正解です。
******

表2実行アドレスの算出方法の違いをイマイチ理解できていないのが原因だと思うのですが・・・。
D=0,I=0の場合は   adr+[xで指定されたレジスタ]
D=0,I=1の場合は  [adr+[xで指定されたレジスタ]]
※[]は、[]内のレジスタまたは番地に格納されている内容を示す。

よろしくお願いいたします。

2021.11.08 10:29
KanaSatoさん 
(No.2)
長文過ぎて投稿できなかったので、pastebinに最終的に設定される値をトレースした結果を置いときます。

pastebin.com/4PU7aV8r
2021.11.08 12:41
どはまりさん  
(No.3)
KanaSatoさん

返信ありがとうございます。
トレース拝見しました。ご丁寧にありがとうございます。
しばらく睨めこをして理解できました!

問題文に提示されている『※[]は、[]内のレジスタまたは番地に格納されている内容を示す。』
の [ ]は一番外側の[ ]を意味しているんですね。

だから、
ア:レジスタ番号2=100  ←101の内容
    [adr+[xで指定されたレジスタ]]に101を当てはめてその内容が100となる

ウ:そのままレジスタ番号3=101の内容100

エ:レジスタ番号3=101  ←100の内容
    [adr+[xで指定されたレジスタ]]に100を当てはめてその内容が101となる

分かりやすかったです。
ありがとうございます!
2021.11.08 14:01
KanaSatoさん 
(No.4)
> [ ]は一番外側の[ ]を意味しているんですね。

外側だけでなく、入れ子になっている[]も、内容を見ます。

例えば、「3+5×(2+6)」を計算するときは、
3+5×(2+6)
=3+5×8
=3+40=43
のように、一つずつ計算するじゃないですか。

それと同じです。
アの場合は、
[adr + [Xで指定されたレジスタ]]の内容
=[0000h + [レジスタ番号2]]の内容
=[0000h + 100]の内容
=[100]の内容
=101の内容
=100

「[~]」を「~の内容」と置き換えてもいいです。
[adr + [Xで指定されたレジスタ]]の内容
=「「0000h + Xで指定されたレジスタの内容」の内容」の内容
=「「0000h + レジスタ番号2の内容」の内容」の内容
=「「0000h + 100」の内容」の内容
=「「100」の内容」の内容
=「101」の内容
=100

2021.11.08 14:15
どはまりさん  
(No.5)
KanaSatoさん

返信後に改めてトレースを眺めていて誤認に気がつきました。

>外側だけでなく、入れ子になっている[]も、内容を見ます。
誤認への早々のご指摘ありがとうございます。とても助かります。

>アの場合は、
>[adr + [Xで指定されたレジスタ]]の内容
>=[0000h + [レジスタ番号2]]の内容
>=[0000h + 100]の内容
>=[100]の内容
>=101の内容
>=100

上記の説明の最後の3行の流れが
=[100]の内容
=101
で終わりでなく、
>=101の内容
>=100
となるなのかまだ理解できていないです。
[ ]の数の違い???

そのため「ウ」が※のようにならずに[101]の内容である100が設定されるのでしょうか。
「ウ」の場合
[adr + [Xで指定されたレジスタ]]の内容
=[0000h + [レジスタ番号3]]の内容
=[0000h +[101の内容]]
=[101]の内容
=100の内容※
=101※

理解力が悪くスミマセン・・・。
2021.11.08 15:42
chihiroさん 
FE プラチナマイスター
(No.6)
[100]=主記憶番地100の内容=101なので、
[100]の内容=101の内容=100です。
2021.11.08 16:05
どはまりさん  
(No.7)
chihiroさん

回答ありがとうございます。

>[100]=主記憶番地100の内容=101なので、
までは分かるのですが、

どうして「ウ」は[101]=主記憶番地101の内容=100で終わりなのに、

「ア」(「エ」も)は
>[100]=主記憶番地100の内容=101なので、[100]の内容=101の内容=100
まで見に行くかがまだ理解できていないです。
ちょっとした認識不足だとは思うのですが。。。
2021.11.08 16:59
chihiroさん 
FE プラチナマイスター
(No.8)
ウはD=0、I=0なので実行アドレスの算出方法がアおよびエと異なります。
実行アドレスがadr+[Xで指定されたレジスタ]=0+[レジスタ番号3]=0+101=101となるので、設定されるのは主記憶番号101の内容である100となります。
2021.11.08 18:33
どはまりさん  
(No.9)
Chihiroさん  KanaSatoさん

ありがとうございます。
頭の中をフラットにしたうえで、返信を読み直して理解に励みます。
2021.11.09 08:23

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop