電子書籍の厳選無料作品が豊富!

68000アセンブリを用いて四則演算をしたとき
ADDとSUBで求めた結果は2進数の符号付、符号なしで計算した両方の結果で答えがでますか?

今68000のアセンブリをもちいて16進数のEOOOと1000の和と差を出しているのですが符号なしだと結果はあうのに
符号付きだと結果があいません。

つまりADDとSUBの結果を符号付き、と符号なしの2進数に変換して10進数に変換した結果と
足すものを初めから符号付き、符号なしにして自分で手計算した結果と同じになりますか?


わかりにくい文章ですみませんが
わかるかたお願いします。

A 回答 (3件)

2の補数を使えば全く同じ命令で加減算できます. オーバーフローするときも, 「オーバーフローした」という情報を適切に扱えば正しい結果を得ることができます.


だからこそ, ほとんどの場合で符号付きの整数を表すときに 2の補数を使うんだけどね.
    • good
    • 0

#1です。


まったく正しい結果に見えますが・・。
符号なしとすると、
E000h+1000h=F000h
E000h-1000h=D000h
であるのは明らかとして、
符号ありで考えると、
E000h→-(10000h-E000h)=-(2000h)=-8192
1000h→4096
ですから、
-8192+4096=-4096=10000h-(4096)=10000h-1000h=F000h
-8192-4096=-12288=10000h-(12288)=10000h-3000h=D000h
となります。
符号あり、符号なし、どちらで計算したとしても正しい結果です。
「2の補数」について調べれば、もっと詳しいこともわかると思います。
    • good
    • 0

具体的にどんなコードを書いて、どんな結果となったのでしょうか?


68000の場合、add,subともに、バイトかワードかロングワードかの区別が必要だったかと記憶していますが。

この回答への補足

ADD.w D0,D1
SUB.w D2,D3
です。
D0、D3にはE000がD1,D2には1000が入っています。
結果はそれぞれF000とD000になります。

この場合に結果は符号付き、符号なしの両方で通用するのですか?

補足日時:2009/05/28 12:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!