• 締切済み

68000アセンブリ

68000アセンブリについて質問ですが以下の処理で正しい結果が出てないのですがなぜでしょう? やりたいことはf(x)=(x+4)(x+1)をx=-3のときを求める。 ただしxを32ビット符号付き2進数でするのですがうまくいきません   move.l #-3,d0   move.l d0,d1 addq.l #4,d1 move.l d0,d2 addq.l #1,d2   muls.w d2,d1 一つ一つの処理を見たときにmulsのところが間違っていたので いろいろ調べた結果掛け算はこれを値を16ビットにしないといけないのだろうと思いましたが、 符号拡張はEXTがありできるのですが32ビットが16ビットになる命令がありません。 どうすればいいかわかるかた教えてください。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

一応確認ですが「mulsのところが間違っていた」というのはどういうことでしょうか? 単に「乗算の結果が正常な値ではない」ということでいい? ついでにいうと結果がいくらになったのかが気になります. ま~最悪マスクしちゃえばいい (だから個別の命令としては存在しない) ような気がするけど....

関連するQ&A