HOME»基本情報技術者試験掲示板»平成23年特別午後問1(設問2)
投稿する
外側だけでなく、入れ子になっている[]も、内容を見ます。
例えば、「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
平成23年特別午後問1(設問2) [3801]
どはまりさん(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で指定されたレジスタ]]
※[]は、[]内のレジスタまたは番地に格納されている内容を示す。
よろしくお願いいたします。
答えは「ア」だと思ったのですが、正解は「エ」でした。
ウとオは実行アドアレスの内容をそのまま返すのに、
どうしてアとエは【 】の部分まで展開した結果を返すのか、解説を読んでも理解できませんでした。
教えてください。
*** 以下解説より抜粋 ***
ア: 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
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となる
分かりやすかったです。
ありがとうございます!
返信ありがとうございます。
トレース拝見しました。ご丁寧にありがとうございます。
しばらく睨めこをして理解できました!
問題文に提示されている『※[]は、[]内のレジスタまたは番地に格納されている内容を示す。』
の [ ]は一番外側の[ ]を意味しているんですね。
だから、
ア:レジスタ番号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さん
返信後に改めてトレースを眺めていて誤認に気がつきました。
誤認への早々のご指摘ありがとうございます。とても助かります。
上記の説明の最後の3行の流れが
=[100]の内容
=101
で終わりでなく、
となるなのかまだ理解できていないです。
[ ]の数の違い???
そのため「ウ」が※のようにならずに[101]の内容である100が設定されるのでしょうか。
「ウ」の場合
[adr + [Xで指定されたレジスタ]]の内容
=[0000h + [レジスタ番号3]]の内容
=[0000h +[101の内容]]
=[101]の内容
=100の内容※
=101※
理解力が悪くスミマセン・・・。
返信後に改めてトレースを眺めていて誤認に気がつきました。
>外側だけでなく、入れ子になっている[]も、内容を見ます。
誤認への早々のご指摘ありがとうございます。とても助かります。
>アの場合は、
>[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さん(No.6)
★FE プラチナマイスター
[100]=主記憶番地100の内容=101なので、
[100]の内容=101の内容=100です。
[100]の内容=101の内容=100です。
2021.11.08 16:05
どはまりさん(No.7)
chihiroさん
回答ありがとうございます。
までは分かるのですが、
どうして「ウ」は[101]=主記憶番地101の内容=100で終わりなのに、
「ア」(「エ」も)は
まで見に行くかがまだ理解できていないです。
ちょっとした認識不足だとは思うのですが。。。
回答ありがとうございます。
>[100]=主記憶番地100の内容=101なので、
までは分かるのですが、
どうして「ウ」は[101]=主記憶番地101の内容=100で終わりなのに、
「ア」(「エ」も)は
>[100]=主記憶番地100の内容=101なので、[100]の内容=101の内容=100
まで見に行くかがまだ理解できていないです。
ちょっとした認識不足だとは思うのですが。。。
2021.11.08 16:59
chihiroさん(No.8)
★FE プラチナマイスター
ウはD=0、I=0なので実行アドレスの算出方法がアおよびエと異なります。
実行アドレスがadr+[Xで指定されたレジスタ]=0+[レジスタ番号3]=0+101=101となるので、設定されるのは主記憶番号101の内容である100となります。
実行アドレスがadr+[Xで指定されたレジスタ]=0+[レジスタ番号3]=0+101=101となるので、設定されるのは主記憶番号101の内容である100となります。
2021.11.08 18:33
どはまりさん(No.9)
Chihiroさん KanaSatoさん
ありがとうございます。
頭の中をフラットにしたうえで、返信を読み直して理解に励みます。
ありがとうございます。
頭の中をフラットにしたうえで、返信を読み直して理解に励みます。
2021.11.09 08:23