2014-04-04 69 views
0

我需要一些帮助来比较不同数组的两个元素在同一个索引处,并计算有多少对彼此相等。该程序假设要计算两个数组在同一个索引处包含相同整数的次数。我无法弄清楚如何包含大小(如果一个大于另一个)以及如何打印对的数量。程序集 - 比较两个数组中两个相同索引的整数

感谢

 .globl main 

main: 
     li  $t1,0 #arrays index 
     li  $t2,0 #counter 
     li  $t4,0 #count pairs 

loop: 
     beq  $t2,10,end 
     lw  $v0,arrayA($t1) 
     lw  $v1,arrayB($t1) 

     beq  $v0, $v1, equal 
     addi $t1,$t1,4 
     addi $t2,$t2,1 
     b loop 

equal: 
     addi $t4,$t4,1 
     addi $t1,$t1,4 
     addi $t2,$t2,1 
     b loop 

end: 
     lw  $a0,($t4) 
     li  $v0,1 
     syscall 

     li  $v0,10 
     syscall #Halt 

     .data 
sizeA: .word 10 
arrayA: .word -1, 0, 3, 6, 8, 10, 21, 11, 14, 10 
sizeB: .word 10 
arrayB: .word -2, 0, 7, 2, 12, 9, 2, 19, 20, 15 

# end of program 

回答

1

$t4不是一个地址,所以lw $a0,($t4)没有意义。您只需将其转入$a0进行打印。您可以使用move $a0, $t4来做到这一点,或者您可以直接在$a0中进行计数。

要考虑数组的长度,只需检查索引是否在两个数组的范围内,或者首先计算公共长度并将其用于循环。