如何计算MIPS汇编中的负数?

时间:2016-03-29 16:59:22

标签: assembly mips mplab mips32 pic32

我正在尝试编译以下汇编源代码,首先是代码:

#include <xc.h>

.global main
.text

.set noreorder

.ent main 

main:

nop /* "no operation"... replace this. */
nop /* "no operation"... replace this. */
nop /* "no operation"... replace this. */

addiu $s1, $zero, 22
addiu $s2, $zero, 59
sub   $t2, $s1,   $s2  

.end main 

这是我的问题:

如您所见,$s1 = 22$2 = 59。所以,22 - 59 = -37

但是当我看{4}}变量时,它有$t2(十进制)。 我不明白为什么......它应该是4294967259 ......

这是输出照片: click here to see my incorrect output

问题1。

如何修复上述问题?

问题2。

如何计算负数?

例如-37

和源代码:

-22 - 33 = - 55

但它也不起作用。 add $s1, $zero, -22 add $s2, $zero, -10 sub $t2, $s1, $s2 有十进制的$s14294967274相同的..

非常感谢你能帮助我解决这个问题。 (我运行名为MPLAB X IDE的编译器)

1 个答案:

答案 0 :(得分:2)

我不确定问题1 - 但问题2:

addi $s1, $zero, -22
addi $s2, $zero, -10
sub  $t2, $s1,   $s2

这应解决问题。