MIPS程序循环10次并使用过程调用打印循环计数器
main:
# initialize values to 2 registers
addi $a1,$zero,10 # $s1= $zero+10
addi $a2,$zero,0 # $s2= $zero+0
jal AddMeth # call procedure
# Print out the loop counter
li $v0,1 # print integer
add $a0,$v1,$zero # $a0 = $s2+$zero , load return value into argument
syscall
AddMeth:
Loop: beq $a1,$a2,Exit # goto Exit if $s1=$s2
addi $a2,$a2,1 # $s2 = $s2+1
j Loop # goto Loop
Exit:
add $v1,$zero,$s2
jr $ra
答案 0 :(得分:1)
(仿真)CPU不知道你是否意味着程序在print integer
系统调用之后终止。你需要告诉它这是你想要明确的,否则它将继续执行下一条指令(因此它将以无限循环结束,执行AddMeth
然后print integer
系统调用并且结束了。
SPIM / MARS中的exit
系统调用是数字10,即:
li $v0, 10
syscall
您似乎也在几个地方混淆了$a2
和$s2
。