在 MIPS 汇编考试中,我有几个问题被标记为不正确,我想知道是否有人可以帮助我找出原因,因为我根本不明白为什么。
第一个问题:
将寄存器 $t1 的所有位设置为 1
我的回答是ori $t1, $t1, -1
另外两个问题给出了一些汇编代码,并要求“编写每个汇编程序执行的操作”。原始代码未注释。下面的评论是我的。
第一个简答题:
.data
len: .word 4
list: .word -4, 6, 7, -2, 1
.text
main: la $s0, list
la $s1, len
lw $t1, 0($s1) // NOTE: 4, so loops over array
add $t0, $zero, $zero
alpha: lw $t2, 0($s0)
blez $t2, beta
add $t0, $t0, $t2
beta: addi $t1, $t1, -1
addi $s0, $s0, 4
bgtz $t1, alpha
add $v0, $zero, $t2 // NOTE: $t2 should be $t0?
jr $ra
我对第一个简短回答问题的回答是:“将数组的所有正元素相加,并返回数组的最后一个元素”
我认为倒数第二行应该有 $t0 而不是 $t2 以便它返回它计算的总和而不是最后一个元素,但是我在考试期间向讲师询问了这个问题,他说将所有给定的代码视为正确的/有意即使我认为这是一个错误。
第二个简答题。同样,原始代码未注释。下面的评论是我的。
.data
len: .word 4
list: .word -4, 6, 7, -2, 1
.text
main: la $s0, list
la $s1, len
lw $t1, 0($s1) // $t1 = len
add $t4, $zero, $zero // $t4 = 0
alpha: lw $t0, 0($s0)
add $t4, $t4, $t0 // $t4 adds up all elements of array
addi $t1, $t1, -1
addi $s0, $s0, 4
beta: blez $t1, alpha
or $v0, $t4, $zero
jr $ra
我对第二个简短回答问题的回答是:“返回数组中所有元素的总和”
如果有人可以帮助我弄清楚我做错了什么,或者它是否被标记为错误?