Показать отрицательное число как результат вычитания в MIPS - PullRequest
0 голосов
/ 28 июня 2011

Я пишу небольшую программу в ассемблере MIPS. Учитывая мой возраст, программа выполняет 4 математических операции (сложение, вычитание ...).

Если вычесть мой возраст (29), результат должен быть -7 (2 - 9 = -7), но он показывает 7.

Как мне сделать MIPS, чтобы показать отрицательное число в вычитании?

Заранее спасибо.

    .globl main

    .data
mensaje:    .asciiz "Hola, mi nombre es Angel Pérez.\nHasta hace poco mi edad era 29 años.\n¿Que pasa si aplico las 4 operaciones matematicas a esos dos numeros...?\n\n"
suma:       .asciiz "2 mas 9 es igual a: "
resta:      .asciiz "2 menos 9 es igual a: "
multiplicacion: .asciiz "2 por 9 es igual a: "
division:   .asciiz "2 entre 9 es igual a: "
nueva_linea:    .asciiz "\n"
.text

main:
     la $a0, mensaje
     li $v0, 4
     syscall

     la $a0, suma
     li $v0, 4
     syscall

     li $t1, 2
     li $t2, 9

     li $v0, 1
     add $t0,$t2,$t1
     move $a0,$t0
     syscall

     la $a0, nueva_linea
     li $v0, 4
     syscall

     la $a0, resta
     li $v0, 4
     syscall

     li $v0, 1
     sub $t0,$t2,$t1
     move $a0,$t0
     syscall

     la $a0, nueva_linea
     li $v0, 4
     syscall

     la $a0, multiplicacion
     li $v0, 4
     syscall

     li $v0, 1
     mul $t0,$t2,$t1
     move $a0,$t0
     syscall

     li $v0, 10
     syscall

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Что вы ожидали 9-2, чтобы вернуться? Два операнда sub инвертированы. Другие операции также имеют инвертированные операнды, но они коммутативны.

1 голос
/ 29 июня 2011

Неверный порядок вычитания:

sub $t0,$t2,$t1

Вы вычитаете 9-2

sub $t0,$t1,$t2

- это то, что вам нужно.

...