平成23年特別午後問12

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
kaさん  
(No.1)
https://www.fe-siken.com/kakomon/23_toku/pm12.html
d以外の問題はできたのですが、dだけ全く理解できませんでした。解説がないのでお願いしたいです。
2020.12.20 23:58
猫★シエスタ(猫顔)さん 
(No.2)
こんばんは。空欄dは空欄cの流れから来ているので、改めてプログラム2を最初から
トレースして見たいと思います。
まず、この問題に載っている具体例ですが、ちょうど半分が回転する所と動かない所に
なっていてちょっと分かりにくいので、回転する所を上から10語分、
回転しない残りを下6語分としてトレースします。

元のアドレスの先頭を「も+0」、結果のアドレスの先頭を「け+0」とします。
するとこのようになります。

動く所……「も+0、も+1、…、も+9」の「上から10語分」
動かない所「も+10、も+11、…、も+15」の「下6語分」

空欄cでは「も+0~も+9」の10語分の右側6ビットを10ビット左シフトさせて
左端に寄せています。
その左側に寄せた部分を「け+0~け+9」に退避させています。

その処理が終わったラベルCOPYでは、GR5は「も+10」、GR6は「け+10」になっています。
GR7は動かない分の6がCOPYで1減算して5になりました。
これをカウンタにします。空欄dに直結するGR7に着目してトレースします。

GR7が5の時…GR5の「も+10」を「け+10」へ退避
GR7が4の時…GR5の「も+11」を「け+11」へ退避
GR7が3の時…GR5の「も+12」を「け+12」へ退避
GR7が2の時…GR5の「も+13」を「け+13」へ退避
GR7が1の時…GR5の「も+14」を「け+14」へ退避
GR7が0の時…GR5の「も+15」を「け+15」へ退避

これで動かない分の下から6語分が退避を完了しました。
その後JUMP COPYでCOPYに戻ったと時に、GR7の値は「-1」になります。
空欄dはGR7の値による分岐なので、退避処理が終わった後のGR7がマイナスになったら
回転処理の為にLOOP1に分岐するように致します。

以上になります。
2020.12.21 19:19
kaさん  
(No.3)
わかりやすい解説ありがとうございました!
2020.12.22 17:12
アセンブラ分からないさん 
(No.4)
設問2が分かりません。
https://www.fe-siken.com/kakomon/23_toku/pm12.html
解説お願いします。
2021.01.30 08:20

返信投稿用フォーム

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

その他のスレッド


Pagetop