添加两个数组: 编写一个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中添加数组,然后打印总和,但无济于事
答案 0 :(得分:1)
您可以使用a MIPS instruction set reference来检查哪个指令适合程序的每个步骤。
例如,要从$t0
中给出的地址将{32}字加载到$a0
,您可以使用lw $t0,0($a0)
。
要将$a0
增加到指向下一个单词,您将使用addiu $a0,$a0,4
。
如果两个值(例如,计数器和数组长度)不相等,则分支到标签,您将使用类似bne $t2,$a1,some_label
的内容。
等等..
顺便说一句,我不确定$b0
和$b1
应该是什么。你的意思是$t0
和$t1
?