【发布时间】:2021-06-03 00:49:06
【问题描述】:
所以我是 MIPS 的新手,我正在尝试在 Assembly MIPS 中构建一个程序,它会在数组中找到最大值:
.data
A: .word 11 100 3 5 8 13 1 16 #array of integers
N: .word 8 # array length
output_max: .asciiz "The max value is: "
.text
.globl main
main:
la $a0 N
la $a1 A
jal max
move $s0 $v0
li $v0 4
la $a0 output_max
syscall
li $v0 1
move $a0 $s0
syscall
j exit
exit:
li $v0 10
syscall
max:
move $t0 $a0
move $t1 $a1
lw $v0 0($t1)
li $t2 0
j maxLoop
maxLoop:
addi $t2 $t2 1
beq $t2 $t0 maxEnd
addi $t1 $t1 4
lw $t3 0($t1)
slt $t4 $v0 $t3
beq $t4 1 changeMax
j maxLoop
changeMax:
move $v0 $t3
j maxLoop
maxEnd:
jr $ra
max 函数应该返回输入数组中的最大值。所以编译后就进入了无限循环。我不太清楚问题出在哪里..
【问题讨论】:
-
你试过调试了吗?