2011-07-28 20 views
1

私は配列に数値を加えようとしますが、それらの数値を印刷しようとしますが、私が数値を追加して印刷しようとすると、別の数になってしまいます。そんなことがあるものか?整数の印刷mips

私のコードは次のとおりです。

#----------------------------------- Array Vullen ----------------------------------------------------- 
.data 
    question1_msg: .asciiz "How much integer do you want to give?\n" 
    question2_msg: .asciiz "give a number?\n" 
.text 

question_numbers: 
    la $a0, question1_msg #load the question in $a0 
    li $v0, 4 
    syscall 

answer_numbers: 
    li $v0, 5 #read the answer of previous question 
    syscall 
    move $t0, $v0 
    move $t9, $t0 
    move $t8, $t0 

generate_array: 
    sll $t0, $t0, 2 #create array 
    move $a0, $t0 
    li $v0, 9 
    syscall 
    move $t3, $v0 #put the stack pointer in a temperay register 
    move $t4, $v0 

add_numbers_array: 
    bge $t1, $t9, Call_procedure # if $t1 >= $t0 then exit 

    #ask questions 
    la $a0, question2_msg #load the question in $a0 
    li $v0, 4 
    syscall 

    #read numbers 
    li $v0, 5 
    syscall 
    move $t2, $a0 

    #add number en go to the next array point 
    sw $t2, ($t3) 
    add $t3, $t3, 4 
    add $t1, $t1, 1 

    #get back to the begin of the loop 
    b add_numbers_array 

#-------------------------------------Array Printen------------------------------------------------ 


Call_procedure: 
    li $t1, 0 
    la $a1, ($t8) # load the couple of numbers 
    la $a2, ($t4) # load the starting adress of the array 
    jal Print 
    b exit 

Print: 
    bge $t1, $a1, return # if $t1 >= $t0 then exit 
    lw $t2, ($a2) #load integer and print 
    move $a0, $t2 
    li $v0, 1  # print the number in the array 
    syscall  


    addu $a2, $a2, 4 #increase the sp 
    addi $t1, $t1, 1 #increase the number printed 

    b Print 

return: 
    jr $ra 

exit: 
li $v0 , 10 # let the code end 
syscall 
+0

残念ながら、私はあなたを助けることはできません。あなたの素敵でクリーンなコードに感謝したいだけです。がんばり続ける。 – Sparafusile

答えて

1

私は2つのエラーを参照してください。これがない$

2.

A0、$ V0でなければなりません

1.

#read numbers 
    li $v0, 5 
    syscall 
    move $t2, $v0 

move $a1, $t8 
move $a2, $t4 

代わりの

la $a1, ($t8) # load the couple of numbers 
la $a2, ($t4) # load the starting adress of the array 
+0

ありがとう、私のコードの間違いだった。 – Bjorn

関連する問題