平成22年春期午後問12

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
kaさん  
(No.1)
https://www.fe-siken.com/kakomon/22_haru/pm12.html
bとeの解説お願いします。ほかも理解できてるか曖昧ななのでできれば解説お願いしたいです。
2020.12.17 22:12
猫★シエスタ(猫顔)さん 
(No.2)
この投稿は投稿者により削除されました。(2020.12.19 14:24)
2020.12.19 14:24
猫★シエスタ(猫顔)さん 
(No.3)
こんにちは、今度言語にアセンブラを選択して受ける者です。
受験者ですが分かる範囲で書きましたので宜しくお願いします。

具体例として仮に
Xに0.1×2^2である00000000 10000001 1000000000000000、
Yに(-1)×0.1×2^3である10000000 10000010 10000000000000000を
想定して考えます。

「a」について。
Yの方が指数が大きい時の分岐です。
GR4にXの00000000 10000001が入り、論理積で指数部に当たる
00000000 10000001(=129)が取り出されます。
GR5にYの10000000 10000010が入り、論理積で指数部に当たる
00000000 10000010(=130)が取り出されます。
GR4には指数部の10000001(129)、GR5には指数部の10000010(130)
が入っていますので、「a」は、11行目のコメントより指数の大きい方が
GR4になるので「LD GR4,GR5」が入ります。

「b」について。
Xがプラスだと分かっていて、Yについて判断している所です。
29行目のコメントでは、Xがマイナス、Yが0以下となっているので、
空欄「b」ではYが0を超えるプラスの時の分岐になります。
XもYもプラスだといった形で両方の符号が判定したら加算処理に移るので
ADDMXYにJPLで分岐します。

「c」について
XがマイナスでYがプラスの時の処理です。
YからXを引いた後の処理をします。
計算が終わった後ですので、X-Yの計算結果のZの符号チェックに移るのでJUMPで
SCHECKに分岐します。

「d」について
この問題の正規化は仮数部を「1000000000000000」などの先頭が0ではないように
する形式で、この空欄dでは正規化が終わっていない状態です。
48行目の分岐で加算結果Zが0ではなく、更に52行目で左端が1ではない場合なので
正規化が必要です。
GR5にZが入っていて、1が左端に来るように左シフトをします。
GR4は左シフトした分の減算の調整なので、SLL GR5,1が入ります。

「e」について
空欄eでは加算結果のZに桁上りがある場合の調整です。
例えばXの仮数部が1000000000000000、Yの仮数部が1000000000000000の場合は
桁が上がります。
加算後は左端が0になってしまって正規化してなくなるので58行目で加算しています。
また、桁上りが生じた場合はそれに伴い指数も1つ上がるのでZの1語目であるGR4に
加算をして指数を調整しています。

以上になります。
この問題私も気になったのでもう少しやってみます。
2020.12.19 14:25
kaさん  
(No.4)
丁寧なご説明ありがとうございました!またわかったことがあったらぜひ教えて下さい!!
2020.12.20 23:21

返信投稿用フォーム

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

その他のスレッド


Pagetop