如何从控制台(mips - qtspim)读取一个整数?
How to read an int from console (mips - qtspim)?
.data
msg1:.asciiz "Give a number: "
.text
.globl main
main:
##############################
li $v0,4
la $a0,msg1
syscall #print msg
li $v0,5
syscall #read an int
add $a0,$v0,$zero #move to $a0
##############################
jal fib #call fib
add $a0,$v0,$zero
li $v0,1
syscall
li $v0,10
syscall
fib:
#a0=y
#if (y==0) return 0;
#if (y==1) return 1;
#return( fib(y-1)+fib(y-2) );
addi $sp,$sp,-12 #save in stack
sw $ra,0($sp)
sw $s0,4($sp)
sw $s1,8($sp)
add $s0,$a0,$zero
addi $t1,$zero,1
beq $s0,$zero,return0
beq $s0,$t1,return1
addi $a0,$s0,-1
jal fib
add $s1,$zero,$v0 #s1=fib(y-1)
addi $a0,$s0,-2
jal fib #v0=fib(n-2)
add $v0,$v0,$s1 #v0=fib(n-2)+$s1
exitfib:
lw $ra,0($sp) #read registers from stack
lw $s0,4($sp)
lw $s1,8($sp)
addi $sp,$sp,12 #bring back stack pointer
jr $ra
return1:
li $v0,1
j exitfib
return0 : li $v0,0
j exitfib
这是标准的 Fibonacci 算法,需要在执行开始时输入。
当程序到达## ... ## 分隔区域时,期望用户给出实际输入。
有人可以解释一下为什么在 v0 中加载 4 和 5 的那些负载是在那里进行的吗?
这个输入读取实际上是如何工作的?
与小丑所说的一样 li $v0.. 只是系统调用 'functions' 使您能够打印到屏幕、读取输入、退出、暂停等
.data
msg1:.asciiz "Give a number: "
.text
.globl main
main:
##############################
li $v0,4
la $a0,msg1
syscall #print msg
li $v0,5
syscall #read an int
add $a0,$v0,$zero #move to $a0
##############################
jal fib #call fib
add $a0,$v0,$zero
li $v0,1
syscall
li $v0,10
syscall
fib:
#a0=y
#if (y==0) return 0;
#if (y==1) return 1;
#return( fib(y-1)+fib(y-2) );
addi $sp,$sp,-12 #save in stack
sw $ra,0($sp)
sw $s0,4($sp)
sw $s1,8($sp)
add $s0,$a0,$zero
addi $t1,$zero,1
beq $s0,$zero,return0
beq $s0,$t1,return1
addi $a0,$s0,-1
jal fib
add $s1,$zero,$v0 #s1=fib(y-1)
addi $a0,$s0,-2
jal fib #v0=fib(n-2)
add $v0,$v0,$s1 #v0=fib(n-2)+$s1
exitfib:
lw $ra,0($sp) #read registers from stack
lw $s0,4($sp)
lw $s1,8($sp)
addi $sp,$sp,12 #bring back stack pointer
jr $ra
return1:
li $v0,1
j exitfib
return0 : li $v0,0
j exitfib
这是标准的 Fibonacci 算法,需要在执行开始时输入。 当程序到达## ... ## 分隔区域时,期望用户给出实际输入。 有人可以解释一下为什么在 v0 中加载 4 和 5 的那些负载是在那里进行的吗? 这个输入读取实际上是如何工作的?
与小丑所说的一样 li $v0.. 只是系统调用 'functions' 使您能够打印到屏幕、读取输入、退出、暂停等