• ベストアンサー

基本情報技術H21問12アセンブラ設問2

基本情報技術H21問12(アセンブラ)において問1は理解できたつもりなのですが、設問2がよく理解できません。 選択肢が限られているのでコメントから判断して回答は推測できるのですが、よく理解できないのが、 ”積(A)の上位語と積(B)の下位語を加算”の部分です。 乗数下位語の積Aの下位語と乗数上位語の積Bの上位後はオーバーフローするからいらないという事ですか?でも積(A)の下位語はオーバーフローしないしな~と頭がこんがらがっています。 誰か教えて下さいお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

プログラム2は,被乗数32bit×乗数32bit=結果32bitのプログラム。 しかし本来,32bit×32bitの結果の最大長は64bitになるはずですよね。 以降,説明のためにビットの配置を次のように表記します。 被乗数32bit長を次の記号で表して, SSSSSSSSSSSSSSSS TTTTTTTTTTTTTTTT 乗数32bit長を次の記号で表し, UUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVV 本来の乗算結果:64bit長を次の記号で表してみる。 WWWWWWWWWWWWWWWW XXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYY ZZZZZZZZZZZZZZZZ (ただしこの出題では,話を単純にするために,結果は32bitで収まる,積のオーバフローは考慮しない,すなわちWとXはすべてゼロになるという前提条件になっています) ---------------------------------------- (以下,メモ帳などにCopy&Pasteして等幅フォントで読んでいただくとよろしいかと) さて。 プログラム2は,CALL MULS でプログラム1を呼び出すのだけれど,プログラム1は乗数として16bit長しか扱えない。 つまり, 1回目の CALL MULS で行っている計算は,  SSSSSSSSSSSSSSSS TTTTTTTTTTTTTTTT …被乗数 ×________________ VVVVVVVVVVVVVVVV …乗数下位語 -----------------------------------  YYYYYYYYYYYYYYYY ZZZZZZZZZZZZZZZZ …積(A) (本来,積は48bit長だが,前提条件よりXはオールゼロ) 2回目の CALL MULS で行っている計算は,  SSSSSSSSSSSSSSSS TTTTTTTTTTTTTTTT …被乗数 ×________________ UUUUUUUUUUUUUUUU …乗数上位語 -----------------------------------  XXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYY …積(B) (本来,積は48bit長だが,前提条件よりWはオールゼロ) よって,プログラム2で最終的に求めたい乗算結果は,   ________________ YYYYYYYYYYYYYYYY ZZZZZZZZZZZZZZZZ + XXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYY となり,上段のY(積(A)の上位語)と 下段のY(積(B)の下位語)を加算する必要があります。 ---------------------------------------- ちなみに。 積(B)の上位語(XXXXXXXXXXXXXXXX)は前提条件よりオールゼロになるのは前述のとおり。

hiyoxtuko
質問者

お礼

有難うございます!! 記号(図)で書いて頂いたのをみて少し悩んだもののわかりました~~ ご回答頂いたように表現すれば非常に判り易いですね!! 見事に硬い脳でも理解できました。勉強になりました。 >よって,プログラム2で最終的に求めたい乗算結果は, >  ________________ YYYYYYYYYYYYYYYY ZZZZZZZZZZZZZZZZ >+ XXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYY の部分のイメージが出来ていなかったのだと思います すっきりした~!! 本当に有難う御座いました。

関連するQ&A

専門家に質問してみよう