1

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

#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

但是当我看$t2变量时它有4294967259(十进制)。不明白为什么……应该是-37……

这是输出照片: 单击此处查看我的错误输出

问题 1。

如何解决上述问题?

问题2。

如何计算负数?

例如,-22 - 33 = - 55

和源代码:

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

但它也不起作用。$s14294967274十进制的..和$s2相同的..

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

4

1 回答 1

2

我不确定问题 1 - 但是,对于问题 2:

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

这应该可以解决问题。

于 2017-06-14T17:54:57.583 回答