汇编 - 比较2个数组中相同索引处的两个整数

时间:2014-04-04 13:34:13

标签: assembly mips

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

谢谢

      .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 个答案:

答案 0 :(得分:1)

$t4不是地址,因此lw $a0,($t4)没有意义。您只想将其转移到$a0进行打印。您可以使用move $a0, $t4执行此操作,也可以直接在$a0进行计数。

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