MIPS print int 系统调用只打印零

MIPS print int syscall only prints zero

似乎没有记录器收到值

.data
.text

main:
    li $t1,2
    li $t0,3
    li $t2,1
    j inicio
    syscall

inicio:
    move $t2,$t1
    move $t1,$t0
    move $t0,$t1
    j end

end:
    li $v0,1
    syscall                     

在执行系统调用 1 之前,您从未为 $a0 设置值,因此它只会输出 $a0 中的任何内容,即零

此外,设置 $t0-$t2 对您的程序没有任何作用。

这是一个稍微更干净的演示程序:

    .data
msg_space:  .asciiz     " "

    .text
    .globl  main
main:
    li      $a1,1
    jal     prtnum

    li      $a1,2
    jal     prtnum

    li      $a1,3
    jal     prtnum

    li      $a1,37
    jal     prtnum

    li      $v0,10                  # syscall for exit program
    syscall

prtnum:
    # output a space
    li      $v0,4                   # syscall for print string
    la      $a0,msg_space
    syscall

    # NOTE: setting a0 with the number was the missing step
    move    $a0,$a1                 # get number to print
    li      $v0,1                   # syscall for print integer
    syscall

    jr      $ra                     # return from function