我正在为我的计算机组织课编写一些MIPS代码,我似乎就是不能让MIPS正常工作,而且网上也没有那么多MIPS资源。我在PCSPIM上运行代码。代码应该将10加到array2的内容中,并将它们存储在array1中,然后打印数组1。修改后的代码现在可以正常工作。
.text
main:
la $t0, array1
la $t1, array2
la $s0, valuec
li $s2, 6
add $t6, $zero, 1 #i = 1
Loop:
addi $t6, $t6, 1 #i++
lw $t2, ($t0)
lw $t5, ($t1)
lw $s1, ($s0)
addu $t2, $t5, $s1
sw $t2, ($t0)
add $t0, $t0, 4
add $t1, $t1, 4
li $v0, 1
move $a0, $t2
syscall
blt $t6, $s2, Loop
li $v0, 10
syscall
.data
array1: .space 20
array2: .word 1,2,3,5,9
valuec: .word 10PCSPIM打印0 5次并返回异常7发生并忽略错误数据地址
发布于 2009-04-08 03:33:03
这是家庭作业,所以我现在只会给你一些线索,并随着你的进展而补充。有几件事:
1/你需要告诉我们它应该做什么。这是最重要的事情。
2/将array1地址存储到t0中,然后在第一个循环中重用t0。
3/您似乎对地址和这些地址的内容("la $s0, valuec"和"addu $t0, $t1, $s0")感到困惑。
更新:
实际上,我需要签署一段时间,所以我会发布我的解决方案,这样就不会让您陷入困境。
我之前提到的混淆是,你将两个地址加载到$t1和$s0中,然后将它们相加得到另一个地址-这很可能远远超出了你的数据区(你真的应该添加一个地址和一个偏移量)。
这基本上就是您的代码(打印零和崩溃)的问题所在。你最好的办法就是修复它,并参考我下面的代码,作为最后的手段,看看我会如何做。从长远来看,复制代码不会对你有所帮助,你最好假设你的教育者也在检查所有网站上的抄袭。
这是我想出来的代码(快点,所以你需要测试它--它可能有bug)。我建议你仔细阅读评论以了解它在做什么。
我几个小时后回来看看你怎么样了。干杯。
.text
main:
# Initialization of array pointers and loop
la $t0, array1 # address of array 1
la $t1, array2 # address of array 2
li $t2, 1 # element number
li $t3, 6 # upper limit of elements
# Process each word in array 2, adding 10 and placing
# into array 1.
Loop:
lw $t3, 0($t1) # get word from array 2
addi $t3, $t3, 10 # add 10 to word
sw $t3, 0($t0) # store word into array 1
addi $t0, $t0, 4 # move to next entry in array 1 and 2
addi $t1, $t1, 4
addi $t2, $t2, 1 # increment element number
blt $t2, $t3, Loop # loop until all elements done
# Initialize printing loop by going back to start of array 1
la $t0, array1 # address of array 1
li $t2, 1 # element number
# Loop through array 1, printing each element.
pLoop:
lw $t2, 0($t0) # get word from array 1
li $v0, 1 # 'print' command code
move $a0, $t2 # needs value in $a0
syscall # print it
addi $t0, $t0, 4 # move to next entry in array 1
addi $t2, $t2, 1 # increment element number
blt $t2, $t3, Loop # loop until all elements done
li $v0, 10 # 'terminate' command code
syscall # exit
# Data arrays for array 1 and 2
.data
array1: .word 0,0,0,0,0
array2: .word 1,2,3,4,5发布于 2009-04-08 03:27:36
有许多可能的问题,但最明显/最可能的是,在数据部分开始之前,您没有从main返回。
jr rahttps://stackoverflow.com/questions/728392
复制相似问题