2011-06-28 49 views
0

我正在用MIPS assambler編寫一個小程序。鑑於我的年齡,該程序執行4個數學運算(加法,減法......)。顯示負數作爲MIPS中的減法結果

當我的。減去年齡(29),結果應該是-7(29 = -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 
+0

您可能想要提供一個代碼示例。確保你有正確的順序操作數:sub res,left,right。 –

+0

Sooooorry,我忘了包括我的代碼的一部分...現在添加它。 – Ashir

回答

1

減法器命令是錯誤的:

sub $t0,$t2,$t1 

你減去9-2

sub $t0,$t1,$t2 

是你所需要的。

+0

我並沒有減去9-2而是2-9,這就是爲什麼我會問如何顯示負數的結果。 9-2是7,我想-7是2-9的結果。這就是我真正需要的。 – Ashir

+0

對,看看子操作數的順序。你有他們落後。當你想要2-9時,你正在做9-2。 –

+0

Duhhh,你是對的男人。謝謝! – Ashir

1

你期望9-2能返回什麼? sub的兩個操作數是倒置的。其他操作也有顛倒的操作數,但它們是可交換的。

+0

我並沒有減少9-2,而是2-9,所以它沒有被倒置,實際上,它的目的是被這種方式減少。 – Ashir