在MIPS中显示负数作为减法结果

时间:2011-06-28 19:44:45

标签: assembly mips

我在MIPS assambler编写一个小程序。鉴于我的年龄,该计划进行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 个答案:

答案 0 :(得分:1)

减法顺序错误:

sub $t0,$t2,$t1

你正在减去9-2

sub $t0,$t1,$t2

是你需要的。

答案 1 :(得分:1)

你期望9-2回归什么? sub的两个操作数是反转的。其他操作也有倒置的操作数,但它们是可交换的。