我正在尝试编译以下汇编源代码,首先是代码:
#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
......
如何修复上述问题?
如何计算负数?
例如-37
和源代码:
-22 - 33 = - 55
但它也不起作用。 add $s1, $zero, -22
add $s2, $zero, -10
sub $t2, $s1, $s2
有十进制的$s1
和4294967274
相同的..
非常感谢你能帮助我解决这个问题。 (我运行名为MPLAB X IDE的编译器)
答案 0 :(得分:2)
我不确定问题1 - 但问题2:
addi $s1, $zero, -22
addi $s2, $zero, -10
sub $t2, $s1, $s2
这应解决问题。