Как рассчитать отрицательное число в сборке MIPS?

голоса
0

Я пытаюсь скомпилировать следующий исходный код сборки, первый здесь код:

#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   

Но это также не работает. $s1имеет , как 4294967274в десятичной системе .. и$s2 то же ..

Большое спасибо, если вы можете помочь мне с этой проблемой. (Я бегу компилятор под названием MPLAB X IDE)

Задан 29/03/2016 в 16:59
источник пользователем
На других языках...                            


1 ответов

голоса
2

Я не уверен, что вопрос 1 - однако, вопрос 2:

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

Это должно решить проблему.

Ответил 14/06/2017 в 17:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more