Assembly MIPS在递归函数中打印数据

Assembly MIPS在递归函数中打印数据,assembly,mips,qtspim,Assembly,Mips,Qtspim,我正在努力解决MIPS编程中的一个问题。我有以下递归函数: F(n)=14F(n-1)+2F(n-2)-5n 我用递归函数实现了它,它打印出正确的答案 我的问题是:我想在控制台中打印从F(0)和F(1)(都是1)到我的F(n)的序列。我尝试在每次函数迭代中打印寄存器$v0,在寄存器中存储最终值,但它会打印出来(例如5)671698667113921 这是我在函数中插入的用于打印的代码: sw $a0,var_curr sw $v0,print_curr lw $a0

我正在努力解决MIPS编程中的一个问题。我有以下递归函数:

F(n)=14F(n-1)+2F(n-2)-5n

我用递归函数实现了它,它打印出正确的答案

我的问题是:我想在控制台中打印从F(0)和F(1)(都是1)到我的F(n)的序列。我尝试在每次函数迭代中打印寄存器
$v0
,在寄存器中存储最终值,但它会打印出来(例如
5
671698667113921

这是我在函数中插入的用于打印的代码:

sw      $a0,var_curr
sw      $v0,print_curr
lw      $a0,print_curr
li      $v0,1
syscall
li      $v0,4
la      $a0,space
syscall
lw      $a0,var_curr
lw      $v0,print_curr

其中,
var\u curr
是当前迭代
print\u curr
是用于打印的当前值,
space
是数字之间的空格。

使用QtSpim的单步功能找出任何寄存器第一次获得意外值的位置。这样做了4个小时后,无法找到它。。我试着改变代码在一个完成标签中的位置,它从堆栈返回一个值,同样的事情,但是它用0改变了一些数字“无法理解”你是什么意思?使用笔和纸计算出对于某些输入的每次调用,堆栈和寄存器中应该有哪些值。然后单步执行函数,将实际寄存器/内存值与前面计算的值进行交叉检查。ps。对于3,它打印6 71,wich是正确的,但是对于任何其他大于3的n,它会再次打印6、71或986,这取决于nok,稍后我会提供更新