3

我在汇编中有一个算术程序,但是当我加、减、乘负数时,它不会产生所需的输出。

例如

输入:

-1+2=66675 (should be 1)

-1-1=656745 (should be -2)

-1*-1=66757 (should be 1) 

问题:

  • 我如何将 (-) 和 (1) 视为一个?

  • 如何对有符号数进行算术运算?

任何建议请...

4

1 回答 1

1

我建议阅读 2 的赞美以及有符号整数和无符号整数之间的区别。您显示的值看起来很可疑,就像一个有符号的 int 负值被转换为一个无符号的 int 值而不进行转换。负整数的最高有效位设置为 1。如果您将该值推入无符号整数而不首先屏蔽,那么您会得到比预期大得多的数字。

8位表示的示例:

signed value = -1 
unsigned value = 255 
binary = 1111 1111

Take the twos compliment: 
       1111 1111
XOR    0000 0000
equals 0000 0000
add1   0000 0001
dec value = 1

您可以在此处了解更多信息(他们有一个可以查看的两个恭维添加示例):http ://academic.evergreen.edu/projects/biophysics/technotes/program/2s_comp.htm

于 2013-02-11T17:28:42.013 回答