2014-04-04 92 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中進行計數。

要考慮數組的長度,只需檢查索引是否在兩個數組的範圍內,或者首先計算公共長度並將其用於循環。