2

添加两个数组:编写一个 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 中添加数组然后打印总和的指南,但无济于事

4

1 回答 1

1

您将使用MIPS 指令集参考来检查哪个指令适合程序的每个步骤。

例如,要将 32 位字$t0从您给出的地址加载到$a0您将使用lw $t0,0($a0).

要增加$a0指向下一个单词,您将使用addiu $a0,$a0,4.

如果两个值(例如,计数器和数组长度)不相等,要分支到标签,您可以使用类似bne $t2,$a1,some_label.

等等..

顺便说一句,我不确定应该是什么$b0$b1应该是什么。你是说$t0$t1吗?

于 2013-10-07T13:37:08.177 回答