2010-05-23 56 views
3

还好,C++和java我没有问题,学习或什么那么 当谈到MIPS它就像地狱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

这听起来像是一个家庭作业问题 - 没有很多人没有理由写MIPS汇编。为什么你不能得到一个针对MIPS的C++编译器,只是看它的输出?这至少会让你开始。 – 2010-05-23 20:16:35

回答

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,你将不得不增加$ T0,里面LOOP1