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

发布于 2024-11-17 14:32:16 字数 1168 浏览 3 评论 0原文

我正在 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

I'm coding a small program in MIPS assambler. Given my age the program do the 4 mathematical operations (addition, substraction...).

When it substract my age (29), the result should be -7 (2 - 9 = -7), but it shows 7.

How I make MIPS to show the negative number in substraction?

Thanks in advance.

    .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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

氛圍 2024-11-24 14:32:16

减法顺序错误:

sub $t0,$t2,$t1

减去 9-2

sub $t0,$t1,$t2

就是你所需要的。

The subtract order is wrong:

sub $t0,$t2,$t1

You are subtracting 9-2

sub $t0,$t1,$t2

is what you need.

任性一次 2024-11-24 14:32:16

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

What did you expect 9-2 to return? The two operands of sub are inverted. The other operations also have inverted operands, but they are commutative.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文