MIPS循环/数组

时间:2014-02-18 12:11:00

标签: arrays loops mips

我已经获得了我想在MIPS中创建的伪代码,基本上是使用循环来增加数组值。我需要通过初始化$ s0来保持数组的基地址和$ s1来保持数组的索引来启动循环。索引应该从零开始,这意味着第十个元素的从零开始的数组索引为9。

如果有人可以帮助我并解释那些有用的MIPS代码。

  • (标签)启动循环
  • 加载给定的单词
  • 如果单词不等于零:递增索引

  • 在单词

  • 中添加2
  • 存储
  • (跳转到标签)开始循环

使用else类型条件从底部掉落。 我还得到了一个数据段,它定义了10个值,这些值作为内存中的单词彼此相邻存储。如图所示:

.data #by default, the "data segment" starts at address 0x10010000
.word 1
.word 2
.word 3
.word 4
.word 5
.word 6
.word 7
.word 8
.word 9
.word 0

.text #instructions start below

另外,我有Permit Extended Pseudo Unchecked。

我目前尝试了以下代码:

.data

array: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 0

.text

main:

la   $s0 array
move $s1 $zero

loop:


    sll $t0 $s1 2
    add $t1 $s0 $t0
    lw  $t2 0($t1)

    beq $t2 $zero exit

    addi $s1 $s1 1


    addi $t2 $t2 2
    sw   $t2 0($t1)

    j loop

exit:

    jr $ra

当检查扩展允许伪时,它工作正常,但未选中时则不行,因为我需要它在未选中时工作。

0 个答案:

没有答案