【发布时间】:2013-10-07 13:26:54
【问题描述】:
添加两个数组: 编写一个 MIPS 汇编语言程序,将两个数组相加(逐个元素相加)和 打印他们的总和。
在一行中打印出总和的元素,标记并用空格分隔值。 该行应以 \n" 字符结尾。例如,如果数组 a 和 b 如上所述, 输出将如下所示: 总和为:1 4 7 6 10 14 11 16 21 16
这是我目前的代码
# data segment
.data
size: .word 10 #Size of first array
$a0: .word 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 #First array's elements
size2: .word 10 #Size of second array
$a1: .word -1, 0, 1, -2, 0, 2, -3, 0, 3, -4 #Second array's elements
size3: .word 10 #size of third array
main:
la $t0, $a0 #$t0 points to $a0[0]
lw $t1, size #$t1 equals number of elements in $a0[]
la $t2, $a1 #$t2 points to $a1[0]
lw $t3, size2 #$t3 equals number of elements in $a1[]
la $t4, $a0 #load base address of array into register $t4
la $t5, #load base address of array into register $t5
Assigning the array's elements to temp variables:
lw $t6,0($a0)
addiu $a0,$a0,4
lw $t7,0($a0)
addiu $a0,$a0,4
lw $t8,0($a0)
addiu $a0,$a0,4
lw $t9,0($a0)
addiu $a0,$a0,4
lw $t10,0($a0)
addiu $a0,$a0,4
# exit program:
li $v0, 10 # terminate program
syscall
所以这就是我难过的地方。如何将第一个和第二个数组的每个元素都放入 MIPS 值中,例如 $t0、$t1 等。
然后我该如何将它们加在一起并打印出数组的总和?
很抱歉占用您的时间,但我已经搜索了几个小时以获取有关如何在 MIPS 中添加数组然后打印总和的指南,但无济于事
【问题讨论】:
-
lw $t6, 0(list)不是有效指令(除非您的汇编程序将其转换为lw $t6,list($zero),根据list的地址,这仍然可能是无效的)。基地址(即你放在括号之间的东西)应该是一个寄存器。在继续本作业之前,您可能应该复习 MIPS 汇编编程的基础知识。 -
“你应该复习一下 MIPS 汇编编程的基础知识” 这个。我什至会说(重新)查看计算机和 CPU 架构。