2016-04-28 18 views
0

ある配列の偶数の内容を他の配列にコピーしようとしています。私のコードは問題なく実行されますが、配列から出力される値は配列の値ではなく000000です。配列への配列MIPS

私の目標は、array0の偶数をarray1にコピーして、画面に表示することです。

マイコード:

.data 
array0: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 
length: .word 10 
array1: .space 20 
nl: .asciiz "" 
label: .asciiz "Values: " 

.text 
.globl main 
main: 

lw $t2, length 
move $t0, $zero 
move $t1, $zero 
move $t2, $zero 
move $t3, $zero 

la $a0, label 
li $v0, 4 
syscall 

start: 
lw $t5, array0($t0) 
andi $t4, $t5, 1 
beq $t4, 0, even 
addi $t1, $t1, 1 
addi, $t0, $t0, 4 
blt $t1, $t2, start 
j end 

even: 
sw $t5, array1($t3) 
addi $t1, $t1, 1 
addi $t0, $t0, 4 
addi $t3, $t3, 4 
blt $t1, $t2, start 

end: 
lw $a0, array1($t6) 
li $v0, 1 
syscall 

la $a0, nl 
la $v0, 4 
syscall 

addi $t6, $t6, 4 
bne $t6, 20, end 
li $v0, 10 
syscall 

.end main 
+0

'$ t2'に' length'をロードし、 '$ t2'で' $ t2'を上書きしました。あなたはそれがあなたがしたいことだと確信していますか? – MikeCAT

答えて

0

あなたは$t2lengthをロードした後にゼロに$t2の値を設定します。配列の最初の要素は評価されますが、それは均一ではありません。そして、1 < 0が偽であり、ジャンプ$ blt $ t1、$ t2、開始is not taken. After that, the jumpj終了is taken and the contents of配列1が印刷されます。ただ、長さ情報

move $t2, $zero 

、さらにはコンテンツの削除を削除

が印刷されます。