Mips,如何读取数组并打印它们?

时间:2010-05-23 19:38:11

标签: arrays assembly mips

好吧,C ++和java我没有学习问题,也没有问题 当涉及到mips时,它就像地狱一样

好吧我想学习如何阅读数组并打印出所有元素

这是我写的一个简单数组

int[] a = new int[20];

for(int i=0; i<a.length; i++){
  a[i]=1;
}

for(int j=0; j<a.length; j++){
  System.out.Println(a[i])
}

你是如何用mips做的?

1 个答案:

答案 0 :(得分:2)

假设您在寄存器$ a1处拥有阵列地址,则可以执行以下操作:

    li $t0, 1
    move $t1, $a1
    addi $t2, $a1, 80
loop1:
    sw $t0, ($t1)
    addi $t1, $t1, 4
    bne $t1, $t2, loop1

move $t1, $a1

loop2:
    lw $t0, ($t1)
    li $v0, 1
    move $a0, $t0
    syscall
    addi $t1, $t1, 4
    bne $t1, $t2, loop2

此代码应该产生与java代码相同的结果,除了您使用println(将在新行中打印每个元素),此代码将在同一行中打印数组的所有元素。

我不知道你是否注意到了,但是你的Java代码和这段代码将打印全1,如果要打印1到19之间的数字,你将不得不在loop1内增加$ t0