MIPS print int syscall只打印零

时间:2016-06-19 01:31:40

标签: assembly mips

没有记录器似乎收到价值

.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 个答案:

答案 0 :(得分:0)

在执行系统调用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