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
似乎没有记录器收到值
.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