在MIPS程序集中将元素从一个数组复制到另一个数组

时间:2011-02-24 17:55:48

标签: arrays assembly mips

我是MIPS的新手,并且一直在尝试将元素从一个数组复制到另一个数组。我不确定如何解决这个问题。这个数组的大小并不重要,但是我只是说它的大小为10。我对MIPS循环很弱,并且对于如何继续而感到困惑。

add $s0, $zero, $zero
add $t0, $zero, $zero
lui $s0, 0x1001
ori $s0,$s0,0
lui $t0, 0x1001
ori $t0, $t0, 0x0040

我初始化时,$ s0是第一个数组中的地址第一个元素,而$ t0是第二个元素中第一个元素的地址。

1 个答案:

答案 0 :(得分:0)

我不相信你提供的代码是正确的,但假设它是,你会做这样的事情:

xor $t1, $t1, $t1          ; Zero out $t1
lw $t2, array_length       ; Load the length of the array in $t2
loop_start:

  lb $t3, $s0              ; Load the next byte from $s0 into $t3
  sb $t3, $t0              ; Store the by in $t3 into $t0

  addi $s0, $s0, 1         ; Move to the next byte in the source
  addi $t0, $t0, 1         ; Move to the next byte in the destination
  addi $t1, $t1, 1         ; increment the counter

blt $t1, $t2, loop_start   ; Jump to the start of the loop of there are more bytes

免责声明:自从大学以来我没有使用MIPS编程,所以这段代码可能不是100%准确,但我相信它会给你一个开始的地方。